PHP — заголовок 404 не запускает htaccess ErrorDocument

Это не совсем мой PHP, так как он довольно сложен, но это та же самая общая идея.

if($_GET['page'] == ".htaccess"){
    header("HTTP/1.0 404 Not Found");
}

Когда это происходит, Apache не загружает страницу 404, указанную в файле .htaccess. Я знаю, что 404 работает, потому что когда я перехожу на несуществующую страницу, я получаю указанную страницу 404.

Есть ли способ загрузить указанную страницу 404 без ручного сброса содержимого файла страницы 404?


person Community    schedule 25.02.2013    source источник
comment
Связанный вопрос: stackoverflow.com/questions/5534268/   -  person User    schedule 16.08.2014


Ответы (2)


Поскольку Apache уже определил, что файл действительно существует, он больше не будет искать 404.

Одним из обходных путей может быть отправка Location-заголовка на несуществующую страницу, и позволить Apache обработать его. Другим может быть извлечение содержимого страницы 404 через PHP и вывод его вместе с заголовком Status: 404.

person hank    schedule 25.02.2013
comment
Я боялся этого. Я оставлю этот вопрос на день или два и посмотрю, были ли найдены какие-либо магические хаки, но если нет, я приму это. - person ; 25.02.2013

Это может работать

if (strstr($_SERVER['REQUEST_URI'],'.htaccess')){
    header('HTTP/1.0 404 Not Found');   
    exit();
}
person tony    schedule 25.02.2013