Почему apache не показывает ошибку 404, когда я отправляю заголовок 404 с php?

У меня есть header('HTTP/1.0 404 Not Found'); где-то в коде, но по какой-то причине он не перенаправляется на страницу 404 по умолчанию Apache.

У меня есть правило перезаписи .файл htaccess, который перенаправляет все запросы на индекс.РНР. Может, в этом проблема?

2 ответов


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


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

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

отправка заголовка действительно является только "сообщением о состоянии" и не заставьте браузер или сервер показать определенную страницу. (Хотя большинство браузеров).

Как указал Dav в комментариях, вы захотите отправить 404 ошибки на свою собственную страницу ошибок.