7

コードのheader('HTTP/1.0 404 Not Found');どこかに がありますが、何らかの理由で Apache のデフォルトの 404 ページにリダイレクトされません。

すべてのリクエストを index.php にリダイレクトする .htaccess ファイルに書き換えルールがあります。それが問題でしょうか?

4

2 に答える 2

18

ヘッダーは、Apache に 404 ページを表示するよう指示するものではありません。むしろ、 Apache が 404 ページを表示するときに、404 ヘッダーを一緒に送信します。ヘッダーは、サーバーではなくブラウザにとって意味を持つことを意図しています。表示する適切なファイルが見つからない場合、Apache は 404 を表示します。PHP スクリプトを使用しているため、Apache は表示可能なファイルを既に見つけているため、独自の 404 ページは表示されません。

于 2009-08-07T22:52:38.253 に答える
7

この場合、PHP によって送信されたヘッダーは、ブラウザーにとってのみ重要です。すでにページを処理しているため、Apache は独自のページを作成しません。何かを送信すると、2 つのページが競合します。

はい、ファイルはApacheがエラーページを表示するのを停止します。これは、表示するページが見つかった.htaccessため、ルールがApacheにエラーがなくなったと見なすためです。404

ヘッダーの送信は実際には「ステータス メッセージ」に過ぎず、ブラウザやサーバーに特定のページを表示させるわけではありません。(ただし、ほとんどのブラウザーはそうします)。

Dav がコメントで指摘したように、404 エラーを独自のカスタム エラー ページに送信する必要があります。

于 2009-08-07T22:52:00.767 に答える