1

これを行うためにサイトを構成し.htaccessました:

ErrorDocument 403 http://www.mydomain.com/error.php?e=403
ErrorDocument 401 http://www.mydomain.com/error.php?e=401
ErrorDocument 400 http://www.mydomain.com/error.php?e=400
ErrorDocument 500 http://www.mydomain.com/error.php?e=500

error.phpエラーをログに記録し、ユーザー/顧客にわかりやすいエラー ページを表示します。

また、次のコードを追加しました。

if($_GET['e'] == '404' || $_GET['e'] == '403' || $_GET['e'] == '500' )
{   $error_no = $_GET['e']; } else { $error_no = '200'; }
header(' ', true, $error_code);

そのため、アクセスするmydomain.com/pagedoesnotexistとエラー ページが表示されます (ただし、アドレス バーにはまだ存在しない URL が表示されます)。 : MY.IP.000.00 - - [date and time] "GET /pagedoesnotexistHTTP/1.1" 200 2450 "-" "USERAGENTINFO"

サーバー ログのどこにも 404 について何も表示されません... 200 しかありません...なぜですか? 404コードを送り返すようにするにはどうすればよいですか? 今のところ、ボットなどは常に 200 を取得すると想定しています。これは、存在しないサイトにアクセスしたときに OK 応答を意味することを意味します... それとも、何か不足していますか?

*話題外: 2450 は何の略ですか? O_o*

4

1 に答える 1

1

ただし、ErrorDocument誤って設定しているため、外部リダイレクトが発生し、代わりにあなたが返されるなどに注意200してください。ドメイン名なしで次のように設定します。404403ErrorDocument

ErrorDocument 403 /error.php?e=403
ErrorDocument 401 /error.php?e=401
ErrorDocument 400 /error.php?e=400
ErrorDocument 500 /error.php?e=500

これにより、正しい HTTP ステータス コードを返しながら、元の見つからない URL がブラウザに保持されます。

コードについて:

変数$error_noを設定し、関数で使用$error_codeしていheader()ます。以下を使用する必要があります。

if($_GET['e'] == '404' || $_GET['e'] == '403' || $_GET['e'] == '500' )
{   $error_no = $_GET['e']; } else { $error_no = '200'; }
header(' ', true, $error_no);
于 2013-09-22T05:55:47.810 に答える