私の404ページ(/404.php
)は機能しますが、適切なヘッダーを送信しています(404-見つかりません)。
しかし、問題は、それが原因のリンク(たとえば、example.com/thisisnon-existant.htm
)ではなく、404ページ(example.com/404.php
)を提供していることです。
どうすれば修正できますか?
私がしたことは、。htaccessに以下を追加することだけでした:
ErrorDocument 404 http://example.com/404.php
私の404ページのコードは次のとおりです。 http://Pastebin.com/G7mQ4aT1 。
ErrorDocumentの完全なURLを使用すると、Apacheはalwaysその場所へのリダイレクトを発行します。代わりに、ErrorDocumentディレクティブを相対パスに変更します。
ErrorDocument 404 /404.php
スティーブンはあなたの質問に答えましたが、リンク先のサンプルコードに関する別の観察で、PHPコードの次の行を削除することもできます。
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
?>
このドキュメントが使用される場合、Webサーバーは既に404で応答しており、エラードキュメントを読みやすくするだけです。存在しない場所/ドキュメントのリクエストに続くサーバーのレスポンスに既に含まれている場合、このドキュメントがあなたのように404エラーを示すレスポンスヘッダーを追加する必要はありません。