1. ホーム
  2. php

[解決済み] header('HTTP/1.0 404 Not Found'); not doing anything

2022-02-08 20:04:09

質問

私のサイトのメインディレクトリに404.phpファイルがあり、私は以下のように使用していました。 header('Location: 404.php'); を使うべきだという意見が出るまで、しばらくの間 header('HTTP/1.0 404 Not Found'); の代わりに。そこで、それに置き換えてから、追加しました。 ErrorDocument 404 /404.php をapacheの設定ファイルに追加し、サーバーを再起動しましたが、うまくいきません。

以下のような様々なバリエーションを試してみました。 ErrorDocument 404 404.phpErrorDocument 404 mywebite/404.php が、無駄だった。

うまくいかないというのは、先ほどは header('Location: 404.php'); に置き換えると、404.phpファイルにリダイレクトされます。 header('HTTP/1.0 404 Not Found'); は、その行をスキップするだけで、何もしないようです。確かにリダイレクトされていません。リダイレクトを要求している理由は、$_GETヘッダーの値が認識されない場合、ページが404になるはずだからです。

解決するには?

いや、おそらく実際に動いているのでしょう。ただ、目に見えにくいだけなのです。代わりに ただ を使用しています。 header を呼び出したら、それを実行し、次に 404.php を呼び出し、さらに die .

ということをテストすることができます。 HTTP/1.0 404 Not Found という名前のPHPファイルを作成することで、動作します。 test.php という内容です。

<?php

header("HTTP/1.0 404 Not Found");
echo "PHP continues.\n";
die();
echo "Not after a die, however.\n";

そして、その結果を curl -D /dev/stdout が明らかにします。

HTTP/1.0 404 Not Found
Date: Mon, 04 Apr 2011 03:39:06 GMT
Server: Apache
X-Powered-By: PHP/5.3.2
Content-Length: 14
Connection: close
Content-Type: text/html

PHP continues.