web-dev-qa-db-ja.com

header( 'HTTP / 1.0 404 Not Found');何もしていない

私のサイトのメインディレクトリに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になる必要があるためです。

48
John Smith

いいえ、おそらく実際に動作しています。すぐに見えないだけです。 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.
77
icktoofay

HTTP応答コードを指定してみてください オプションのパラメーターを使用

header('HTTP/1.0 404 Not Found', true, 404);
25
Jimmy Sawczuk

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にすることができます)

7
Shiv Singh

これはあなたを助けると思います

。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は同じディレクトリに配置する必要があります[この場合]

4
Sourav

もう1つの理由は、このリダイレクトの前にHTMLタグを追加した場合です。注意深く見てください。この行の前にDOCTYPEまたは任意のhtmlコメントを残すことができます。

2
Jeff_Alieffson

PHP> = 5.4の場合、次のような単純な関数を使用できます。http_response_code(404);PHP Documentation

0
Avior