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