1

PHP では、次のコードを使用して、ページが見つからないことを示します。

header("HTTP/1.0 404 Not Found");exit();

.htaccessファイルには、404 カスタム ドキュメントを処理する次の行があります。

ErrorDocument 404 /404.html

PHP 404 ヘッダーを送信すると、カスタム404.html定義.htaccessが表示されるはずですが、代わりに「このリンクは壊れているようです」というメッセージが表示されます。そのため、カスタム 404 ページは表示されず、その行を削除し.htaccessても、サーバーの通常の 404 ページは表示されず、壊れたリンク メッセージも表示されます。

PHPでヘッダーを送信するときに404ページを表示するにはどうすればよいですか?

4

2 に答える 2

4

ここでの問題はErrorDocument、URL 処理パイプラインが URL が指すファイル (またはハンドラー) を見つけられない限り、 で示されるカスタム エラー ドキュメントが処理されないことです。あなたの場合、処理パイプラインファイル、php ファイルを見つけるため、それ自体で 404 に到達することErrorDocumentはないため、適用されることはありません。

Apache が php ハンドラを使用して php ファイルを実行し、php ファイルが 404 を返すことを決定した場合、404 応答コードだけでなく、HTML エラー ドキュメントも提供する必要があります。Apache はリクエストが 404 であるとは決して見なさないため、デフォルトの Apache エラー ドキュメントは表示されません (リクエストは php ファイルに渡されます)。したがって、次のようなことを行う必要があります。

header("HTTP/1.0 404 Not Found");
include('404.html');
exit();
于 2013-04-06T08:05:33.817 に答える