PHP: Невозможно изменить 404 код состояния, но нет ошибки в заголовке ()

Я обрабатываю неизведанные страницы на своем собственном веб-сайте PHP. Для этого я создал файл .htaccess с этой единственной строкой:

ErrorDocument 404 /index.php 

В начале index.php я разместил этот код:

 header($_SERVER['SERVER_PROTOCOL'].' 200 OK', true, 200); 

Это отлично работает в моей среде WAMP. Я проверяю заголовки http, и это бросает:

 Status=OK - 200 

Но на моем хостинге Linux я всегда получаю:

 Status=Not Found - 404 

И странная часть заключается в том, что PHP вообще не бросает никаких ошибок … это похоже на то, что что-то переопределяет мои заголовки.

Мне нужно изменить заголовок кода состояния, иначе IE7 и IE8 не будут обрабатывать мою страницу результатов. Другие браузеры могут справиться с этим.

Возможно, мне нужно что-то в .htaccess или php.ini, но ничего не найдено. Или, если вы знаете какой-либо другой метод для перенаправления 404 и возврата 200, сообщите мне.

    Лучшим способом перезаписи несуществующих страниц в файл PHP является следующее:

     RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule (.*) index.php 

    Это использует mod_rewrite для изменения всего, что не является каталогом, а не файлом для вашего PHP-скрипта. Просто помните, что если ваш PHP-скрипт получает запрос на то, чего там нет, он должен отправить заголовок 404.

    В зависимости от конфигурации вашего веб-сервера, fast-cgi может быть включен. Тогда вам потребуется альтернативный синтаксис (как указано в документации PHP):

     header("Status: 200 OK"); // for fast cgi header($_SERVER['SERVER_PROTOCOL'] . " 200 OK");