Force 404 с PHP и .htaccess не работает

Я пытаюсь бросить свои 404 в PHP в зависимости от определенных GET-варов. Но следующее не работает. Я могу подтвердить, что заголовок pge возвращается с кодом статуса 404..htaccess просто не перенаправляется правильно. Я что-то пропустил?

Код PHP:

if(!$_GET['page']){
    header('HTTP/1.0 404 Not Found');
}

.htaccess Code:

ErrorDocument 404 /404.html

Большое спасибо!

Ответ 1

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

Вам нужно, чтобы ваш PHP script выводил заголовок 404 и включал страницу, на которую указывает обработчик Apache 404:

if (!$_GET['page']) {
    header('HTTP/1.0 404 Not Found');
    include('404.html');
    exit();
}

Не делайте переадресацию на страницу 404, так как это просто превратит обращение в обычный запрос GET с результатом 200 OK.

Ответ 2

Вы не можете заставить страницу ошибки начинать с номера на тестовом сервере XAMPP, который я знаю...

Это может быть справедливо для окон... period.

тот ускользнул от меня часами!

Попробуйте переименовать страницу с ошибкой на:

error404.html

затем измените свой раздел .htaccess Error для вашего 404:

ErrorDocument 404 /error404.html

И не забудьте запустить его с помощью косой черты. Это исправит это.