Intereting Posts
Потеря ZF2-сессии после перенаправления Paypal Почему CakePHP использует это имя метода в запросе MySQL, а не возвращает результат? PHP неопределенные символы? в выводе Временная загрузка файла PHP не действительна Ресурс изображения mysql_query сохранить тип данных, созданный в таблице при возврате? Отслеживание исходящих подключений Есть ли у PHP функция, такая как строки шаблона Python? сохранение данных формы в базе данных Как безопасно осуществлять аутентификацию на основе токенов для доступа к ресурсам сайта (т.е. функциям и данным), которые разрабатываются в PHPFox? # в URL-адресе, игнорирующемся в php 5.2 Создание заголовка / нижнего колонтитула PHP MySQL несколько порядков (тип вложенных) Поиск базы данных MySQL с помощью PHP, AJAX и jQuery Загрузить фотографию в альбом с помощью API-интерфейсов Facebook codeigniter .htaccess работает, но не может найти контроллер

Заголовок 404 PHP не работает

Почему это не работает, так как на предварительно заданной странице 404 не загружается:

header("HTTP/1.0 404 Not Found"); exit; 

.htaccess имеет ErrorDocument 404 /404.html .

Спасибо.

Solutions Collecting From Web of "Заголовок 404 PHP не работает"

Убедитесь, что настроенная страница ошибки /404.html имеет размер содержимого более 512 байт. Многие браузеры, такие как IE, Chrome и т. Д., Не отображают вашу настроенную страницу, если длина содержимого вашей настраиваемой 404-страницы меньше 512.

ОБНОВИТЬ

Основываясь на ваших комментариях, я думаю, что это происходит.

Если вы посмотрите на заголовки access.log или http в Firebug / HTTP Watch и т. Д. Этой пустой страницы, вы увидите код возврата 404. Как только веб-сервер начинает обрабатывать страницу PHP, он уже передал точку, где он будет обрабатывать обработку 404 сам по себе, так как ваш php-файл действительно НАЙДЕН . Теперь, поскольку ваш php-код просто возвращает статус 404 без какого-либо контента, поэтому отображается пустая страница.

Теперь, поскольку это правильное поведение Apache и его до вас, чтобы создать содержимое для страницы 404. Что-то вроде этого в вашем выше PHP-коде будет хорошо, я думаю:

 <?php header("HTTP/1.0 404 Not Found"); exit("<h1>Not Found</h1> The requested URL " . $_SERVER["REQUEST_URI"] . " was not found on this server. <hr>"); ?> 

К сожалению, я недавно столкнулся с той же проблемой, работая над проектом PHP для работы.

Отправка заголовка по существу является только «сообщением о статусе» и не делает браузер или сервер отображать определенную страницу (хотя я считаю, что некоторые более старые версии IE могут показывать страницу по умолчанию 404). Это означает, что вам нужно будет создать собственное сообщение об ошибке 404 в вашем скрипте, поскольку обработка ошибок .htaccess не будет работать.

Мое предложение – использовать что-то в соответствии с

 header("HTTP/1.0 404 Not Found"); include('./404.html'); exit; в header("HTTP/1.0 404 Not Found"); include('./404.html'); exit; 

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

Скорее всего, это связано с тем, что Apache уже передал исходный запрос на страницу PHP для обработки. Скорее всего, потому, что у вас есть реализация переднего контроллера и перенаправляет все веб-запросы на эту страницу. Это оставляет ответственность 404s за ваше приложение вместе с соответствующей 404 страницей для отображения.