Apache-2.2

我可以讓 Apache ErrorDocument 返回 404 而不是 301?

  • February 8, 2017

在我的.htaccess我有

ErrorDocument 404 http://foo.com/404.html

它有效,因為我從任何未找到文件的錯誤中恢復並改為顯示 404 頁面,但它的工作方式是使用 301 將錯誤的 URI 重定向到我的404.html頁面。

這很糟糕,因為搜尋引擎和爬蟲最終不會看到 404 程式碼,而是 301 程式碼,並且不會從索引中清除已刪除的頁面。

我可以讓 Apache 在文件未找到錯誤時提供此 404 頁面的內容,但仍返回 404 程式碼而不是 301?

您應該嘗試使用絕對或相對路徑,而不是 URL

我的 apache2.conf :

ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html

不要指向外部網址

Apache 的文件說

語法是,

ErrorDocument <3-digit-code> <action>

行動可能在哪裡,

  • 要顯示的文本。用引號 (") 將文本括起來。
  • 要重定向到的外部 URL。
  • 要重定向到的本地 URL。

指向外部 url 將導致實際重定向,而使用本地 url 是內部的。

因此,要呈現文件的內容,只需指向它,例如:

ErrorDocument 404 /404.html

為工作使用正確的狀態碼

這很糟糕,因為搜尋引擎和爬蟲最終不會看到 404 程式碼,而是 301 程式碼,並且不會從索引中清除已刪除的頁面

如果頁面曾經存在而現在不存在,則正確的響應程式碼是410 Gone。410 是說“嘿,那不存在”的程式碼,而 404 僅表示在反复嘗試訪問現在不存在的頁面之後。

引用自:https://serverfault.com/questions/646668