Подтвердить что ты не робот

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.

4b9b3361

Ответ 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.

Ответ 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;