заголовок («HTTP / 1.0 404 Not Found»);ничего не делая - PullRequest
47 голосов
/ 04 апреля 2011

У меня есть файл 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, но нетУдачии ничего не делать.Это, безусловно, не перенаправление.Причина, по которой я вызываю перенаправление, заключается в том, что если значение заголовка $ _GET не распознано, страница должна получить 404.

Ответы [ 7 ]

74 голосов
/ 04 апреля 2011

Нет, возможно, это действительно работает. Это просто не сразу видно. Вместо просто с помощью вызова 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.
25 голосов
/ 04 апреля 2011

Вы можете попробовать указать код ответа HTTP , используя необязательный параметр :

header('HTTP/1.0 404 Not Found', true, 404);
7 голосов
/ 24 мая 2013

Используйте эти коды для 404 не найден.

if(strstr($_SERVER['REQUEST_URI'],'index.php')){
  header('HTTP/1.0 404 Not Found');
  readfile('404missing.html');
  exit();
}

Здесь 404missing.html - это ваша страница дизайна Не найден.(это может быть .html или .php)

4 голосов
/ 04 апреля 2011

Я думаю, это поможет вам

содержание .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 должны находиться в одном каталоге [в этом случае]

2 голосов
/ 10 июня 2013

Другая причина может заключаться в том, что вы добавляете html-тег перед этим перенаправлением. Посмотрите внимательно, вы можете оставить DOCTYPE или любой html комментарий перед этой строкой.

0 голосов
/ 20 марта 2019

Для PHP> = 5.4 вы можете использовать более простую функцию, подобную этой: http_response_code(404); Документация PHP

0 голосов
/ 10 июня 2013

После написания

header('HTTP/1.0 404 Not Found');

добавьте еще один заголовок для любой несуществующей страницы вашего сайта. Это работает, конечно.

header("Location: http://yoursite/nowhere");
die;
...