Header ('HTTP/1.0 404 Not Found'); ничего не делая
У меня есть файл 404.php в главном каталоге моего сайта, и я некоторое время использовал header('Location: 404.php');
, пока кто-то не сказал, что вместо этого следует использовать header('HTTP/1.0 404 Not Found');
. Поэтому я заменил его на это, а затем добавил: ErrorDocument 404 /404.php
в мой конфигурационный файл apache и перезапустил сервер, но он не работает.
Я пробовал разные варианты, включая ErrorDocument 404 404.php
и ErrorDocument 404 mywebite/404.php
, но безрезультатно.
То, что я имею в виду, не работает, так это то, что раньше при использовании header('Location: 404.php');
он перенаправлял бы файл 404.php, но когда я заменяю его на header('HTTP/1.0 404 Not Found');
, он просто пропускает строку и ничего не делает. Это, безусловно, не перенаправление. Причина, по которой я призываю перенаправление, состоит в том, что если значение заголовка $_GET не распознается, страница должна быть 404.
Ответы
Ответ 1
Нет, он, вероятно, работает. Это просто не видно. Вместо того, чтобы просто использовать вызов 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.
Ответ 2
Вы можете попробовать указать код ответа HTTP с помощью необязательного параметра:
header('HTTP/1.0 404 Not Found', true, 404);
Ответ 3
Использовать эти коды для 404 не удалось.
if(strstr($_SERVER['REQUEST_URI'],'index.php')){
header('HTTP/1.0 404 Not Found');
readfile('404missing.html');
exit();
}
Здесь 404missing.html - это не найденная страница дизайна. (это может быть .html или .php)
Ответ 4
Я думаю, это поможет вам
содержимое .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 должны быть помещены в тот же каталог [в этом случае]
Ответ 5
Еще одна причина может заключаться в том, что вы добавляете любой html-тег перед этим перенаправлением.
Посмотрите внимательно, вы можете оставить DOCTYPE или любой комментарий html перед этой строкой.
Ответ 6
После записи
header('HTTP/1.0 404 Not Found');
добавьте еще один заголовок для любой существующей страницы вашего сайта. Это работает, конечно.
header("Location: http://yoursite/nowhere");
die;