2013-02-25 2 views
1

Это не мой точный PHP, поскольку он довольно сложный, но это та же самая общая идея.PHP - заголовок 404 не запускает htaccess ErrorDocument

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

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

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

+0

Связанные вопрос: http://stackoverflow.com/questions/5534268/headerhttp-1 -0-404-not-found-not-doing-anything – User

ответ

2

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

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

+0

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

0

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

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

Не работает. 'die();' тоже не работает. –

Смежные вопросы