0

リクエストパラメータが正しく設定されていない場合に備えて、リダイレクトするコードがあります。

          if(!is_numeric($_GET['id'])){
                         header("HTTP/1.0 404 Not Found");
                    header('Location: '.$url);
                    exit();
               }

問題は、Firefox プラグイン、ライブ HTTP ヘッダーをチェックするたびに、302 一時リダイレクトが表示されることです。何故ですか?404 応答がないのはなぜですか?

4

3 に答える 3

4

ステータス コードを含むLocationヘッダーを送信しても意味がありません。404

Location「あなたが求めたものはここにあります」という意味です

404は「あなたが求めたものを持っていません」という意味です。

2 つのステートメントは互換性がありません。

人間が読める特定のエラーの説明を送信したい場合は、他の種類のドキュメントと同じように出力してください。include()よろしければできます。それにリダイレクトしようとしないでください。

于 2012-11-13T12:49:10.397 に答える
2

問題は、Firefox プラグイン、ライブ HTTP ヘッダーをチェックするたびに、302 一時リダイレクトが表示されることです。何故ですか?404 応答がないのはなぜですか?

ここで何をしたいのかわかりませんが、以下はあなたの目的を提供します。

if (! is_numeric($_GET['id'])) {
    header('Location: ' . $url, true, 404);
    exit();
}
于 2012-11-13T12:51:59.437 に答える
0

上記のように、試みているヘッダーの 1 つだけを送信できます。

404 の場合 - Web サーバー構成で定義されているエラー関連のエラー ページが表示されます。

やりたいことをするには... サーバーの 404 をプレーンな html から php ページに変更し、そこから何を表示するかを決める必要があります (リファラーなどに基づくことができます)。

「動的」404 ページ内から、必要に応じてリダイレクトできます。

于 2012-11-13T12:49:38.263 に答える