私のサイトのメインディレクトリに404.phpファイルがあり、誰かがheader('Location: 404.php');
を使うべきだと誰かが言うまでしばらくの間header('HTTP/1.0 404 Not Found');
を使っていました。それでそれを置き換えてから、Apacheの設定ファイルに_ErrorDocument 404 /404.php
_を追加し、サーバーを再起動しましたが、機能しません。
_ErrorDocument 404 404.php
_と_ErrorDocument 404 mywebite/404.php
_を含むさまざまなバリエーションを試しましたが、役に立ちませんでした。
私が意味しないのは、header('Location: 404.php');
を使用するときに404.phpファイルにリダイレクトするが、それをheader('HTTP/1.0 404 Not Found');
に置き換えると、行をスキップするように見えることですそして何もしません。確かにリダイレクトされていません。リダイレクトを呼び出す理由は、$ _ GETヘッダー値が認識されない場合、ページが404になる必要があるためです。
いいえ、おそらく実際に動作しています。すぐに見えないだけです。 justの代わりにheader
呼び出しを使用して、それを実行してから404.php
を含め、die
を呼び出してみてください。
HTTP/1.0 404 Not Found
が機能することをテストするには、次のコンテンツでtest.php
という名前の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.
HTTP応答コードを指定してみてください オプションのパラメーターを使用 :
header('HTTP/1.0 404 Not Found', true, 404);
404 not foundにはこれらのコードを使用してください。
if(strstr($_SERVER['REQUEST_URI'],'index.php')){
header('HTTP/1.0 404 Not Found');
readfile('404missing.html');
exit();
}
ここで、404missing.htmlはNot foundデザインページです。 (.htmlまたは.phpにすることができます)
これはあなたを助けると思います
。htaccessのコンテンツ
ErrorDocument 404 /error.php
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 405 /error.php
ErrorDocument 406 /error.php
ErrorDocument 409 /error.php
ErrorDocument 413 /error.php
ErrorDocument 414 /error.php
ErrorDocument 500 /error.php
ErrorDocument 501 /error.php
error.phpと.htaccessは同じディレクトリに配置する必要があります[この場合]
もう1つの理由は、このリダイレクトの前にHTMLタグを追加した場合です。注意深く見てください。この行の前にDOCTYPEまたは任意のhtmlコメントを残すことができます。
PHP> = 5.4の場合、次のような単純な関数を使用できます。http_response_code(404);
PHP Documentation