コードのheader('HTTP/1.0 404 Not Found');
どこかに がありますが、何らかの理由で Apache のデフォルトの 404 ページにリダイレクトされません。
すべてのリクエストを index.php にリダイレクトする .htaccess ファイルに書き換えルールがあります。それが問題でしょうか?
コードのheader('HTTP/1.0 404 Not Found');
どこかに がありますが、何らかの理由で Apache のデフォルトの 404 ページにリダイレクトされません。
すべてのリクエストを index.php にリダイレクトする .htaccess ファイルに書き換えルールがあります。それが問題でしょうか?
ヘッダーは、Apache に 404 ページを表示するよう指示するものではありません。むしろ、 Apache が 404 ページを表示するときに、404 ヘッダーを一緒に送信します。ヘッダーは、サーバーではなくブラウザにとって意味を持つことを意図しています。表示する適切なファイルが見つからない場合、Apache は 404 を表示します。PHP スクリプトを使用しているため、Apache は表示可能なファイルを既に見つけているため、独自の 404 ページは表示されません。
この場合、PHP によって送信されたヘッダーは、ブラウザーにとってのみ重要です。すでにページを処理しているため、Apache は独自のページを作成しません。何かを送信すると、2 つのページが競合します。
はい、ファイルはApacheがエラーページを表示するのを停止します。これは、表示するページが見つかった.htaccess
ため、ルールがApacheにエラーがなくなったと見なすためです。404
ヘッダーの送信は実際には「ステータス メッセージ」に過ぎず、ブラウザやサーバーに特定のページを表示させるわけではありません。(ただし、ほとんどのブラウザーはそうします)。
Dav がコメントで指摘したように、404 エラーを独自のカスタム エラー ページに送信する必要があります。