2009-10-04 44 views
0

在有關使用Rails進行敏捷Web開發的書中,建議當有人試圖訪問網站中的某些數據並且記錄不再存在時,應該將用戶重定向到工作頁面並顯示消息。未找到記錄的重定向?

用戶會去/ book/1,但id 1的書不再存在,所以它被重定向到/ books並顯示一條消息「該書不存在」。這似乎是一個很好的用戶體驗,但打破了HTTP協議。它應該是一個臨時重定向嗎?如果是的話,一個網絡爬蟲將繼續打這個頁面。它應該是永久重定向嗎?如果是這樣,以前的內容應該在那裏可用,而事實並非如此。

我認爲記錄未找到的頁面應該發出404錯誤?我錯了嗎?在1/1不存在的情況下點擊/ book/1會返回404,HTML顯示的內容與/ books完全相同,也可能是錯誤消息。

使用Rails進行敏捷Web開發違反了該選項,因爲用戶可能會持續點擊/ book/1生成404s以查看/ books中可以看到的內容。

您認爲如何?

回答

1

如果資源不存在,發送404狀態碼。這真的很簡單。重定向意味着只有URL(暫時)無效,但資源確實存在。

0

如果沒有404,搜索引擎無法發現該對象已被刪除。所以我認爲這是必須的。

+0

是的,這是我的立場,這本書推薦了一些不同的東西。 – Pablo 2009-10-04 15:02:33

0

我認爲這裏有一個很好的折中,你呈現一個404模板(完成404狀態碼),提示用戶繼續/書籍/ /無論。

0

如果記錄不再存在,那麼您應該使用301狀態碼「永久重定向」。 301和404之間的區別在於,當資源從未存在和301當資源存在但移動時,應該使用404錯誤代碼。

+0

好吧,如果有人要求閱讀ID爲1234的評論,但它不在數據庫中,我不知道它是否存在,當然如果我重定向到評論列表並不是因爲資源現在存在,而是因爲這是我能提供的最好的。 – Pablo 2009-11-08 22:27:14

+0

好吧,在你的情況下你可能不會在意,但是在API中使用這種方法的情況下,頭文件可以很好地解釋調用方實際發生了什麼。 – 2009-11-09 22:50:31