0

.htaccess RewriteRules を使用して URL を index.php に渡します。指定したページ名がデータベースに見つからない場合、スクリプトで適切な 404 応答をスローするようにします。

私がこれを達成しようとした方法は次のとおりです。

header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");

ブラウザで HTTP 応答を分析すると、応答が正常に返されます。

HTTP/1.1 404 Not Found 

ただし、フレンドリーな 404 ページを出力できるようにしたいのですが、header() 関数の後のものはすべて無視され、その前のものは ... まあ ... それはばかげています。

スクリプトから 404 エラー メッセージを出力する方法を提案できる人はいますか?

ありがとう。

4

3 に答える 3

3

Internet Explorer が独自のエラー ページを表示しないようにするには、出力 (または ErrorDocument) が 512 バイトより大きいことを確認する必要があります。これがおそらく、ヘッダーが表示されなかった後に出力が発生した理由です。

于 2010-09-11T13:26:53.257 に答える
1
<?php
header("HTTP/1.0 404 Not Found");
    echo "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL " . $_SERVER['REQUEST_URI'] . " was not found on this server.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at " . $_SERVER['SERVER_NAME'] . " Port 80</address>
</body></html>";
    exit();
?>
于 2010-09-11T13:24:21.070 に答える
0

以下(.htaccess内)

ErrorDocument 404 /errordoc.html

あなたのために働いていませんか?

編集:ご覧のとおり、PHP で 404 を簡単にスローして、.htaccess でキャッチできます。

于 2010-09-11T13:20:02.197 に答える