PHP 404 заголовок ответа - PullRequest
       17

PHP 404 заголовок ответа

0 голосов
/ 11 сентября 2010

Я использую .htaccess RewriteRules для передачи URL в index.php. Если указанное имя страницы не найдено в базе данных, я хочу, чтобы мой скрипт выдал правильные 404 ответа.

Я пытался добиться этого следующим образом:

header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");

Анализируя ответы HTTP в моем браузере, ответ возвращается нормально:

HTTP/1.1 404 Not Found 

Тем не менее, я хотел бы иметь возможность выводить дружественную страницу 404, но что-либо после функции header () игнорируется, а что-нибудь до ... ну ... это было бы глупо.

Кто-нибудь может подсказать, как вывести сообщение об ошибке 404 из скрипта?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 11 сентября 2010

Необходимо убедиться, что вывод (или ErrorDocument) больше 512 байт, чтобы Internet Explorer не отображал свою собственную страницу ошибок. Вероятно, поэтому вы столкнулись с тем, что заголовок не отображается.

1 голос
/ 11 сентября 2010
<?php
header("HTTP/1.0 404 Not Found");
    echo "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL " . $_SERVER['REQUEST_URI'] . " was not found on this server.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at " . $_SERVER['SERVER_NAME'] . " Port 80</address>
</body></html>";
    exit();
?>
0 голосов
/ 11 сентября 2010

Так что следующее (в .htaccess)

ErrorDocument 404 /errordoc.html

у вас не работает?

РЕДАКТИРОВАТЬ: Как видите, вы легко можете выбросить 404 в PHPа затем поймать его в .htaccess.

...