2010-11-22 41 views
2

當網站不存在時應該發生什麼?如果我在我的.htaccess中設置了一個自定義錯誤頁面,我得到一個302臨時重定向到我的404頁面(我發送404頭文件)。這是應該如何工作?或者我應該做一個301永久重定向到錯誤頁面?我使用的是PHP和Apache。如果網頁不存在,我應該返回什麼標題?

回答

5

不存在的頁面沒有「臨時移動」(301)或「永久移動」(302)到關於文件不存在的頁面,它不存在。要發送的正確標題是404,而不是其他任何內容。

不要在任何地方重定向,而是在請求的URL處提供「文件未找到」頁面內容。

+0

但我的網頁是動態生成的(不好意思忘了提),所以我需要加載頁,以檢查其有效的頁面,因此斜面從我的.htaccess文件重定向的權利? – Luke 2010-11-22 21:29:47

+1

您也可以使用`header()`從PHP發送404(或其他)頭文件。 – GolezTrol 2010-11-22 21:31:32

7

如果它從未存在,則應發送404 Not Found

如果它曾經存在,但沒有更多,你應該發送410 Gone

設置您的服務器直接發送錯誤響應。

您不應該重定向到錯誤頁面。這基本上意味着談話會走:

  • 瀏覽器:我可以有/ foo嗎?
  • 服務器:您可以在/ bar找到/ foo!
  • 瀏覽器:我可以有/ bar嗎?
  • 服務器:我找不到/ bar。

誘餌和開關永遠不好。

1

如果您有一個靜態錯誤頁面,比如說404.html,apache顯示未找到頁面時顯示,並且您還需要能夠爲動態頁面提供404頁面,您可以通過發送從PHP的404頭和飼料的錯誤頁面,以及:

<?php 
header("HTTP/1.0 404 Not Found"); 
readfile("404.html"); 
?> 
相關問題