Страницы

Поиск по вопросам

суббота, 25 мая 2019 г.

Редирект на 404 страницу

В .htaccess прописал:
ErrorDocument 404 /views/error.html
В скрипте отправляю заголовок:
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', true, 404); exit();
Перенаправление не срабатывает. Пробовал и так писать:
header('HTTP/1.1 404 Not Found', true, 404); header('HTTP/1.0 404 Not Found', true, 404); header('HTTP/1.1 404 Not Found'); header('HTTP/1.0 404 Not Found');
Не срабатывает всё равно. Может что-то дописать нужно ещё?


Ответ

ErrorDocument верно срабатывает, когда реально нет страницы. Передача заголовка лично у меня тоже верно сработала, и в целом должна верно срабатывать, если сервер и php верно настроены. Но при этом во втором пункте apache уже не собирается переадресацию какую-то делать, так как он не видит в этом смысла - ErrorDocument срабатывает именно что на реальное отсутствие страницы или отсутствие правил редиректа для запрошенного адреса, когда же страница просто отдает код 404 - это ее дело. Далее подразумевается, что нужно самому вывести нужное.
То есть либо заинклудить целиком страницу, лежащую по пути /views/error.html примерно таким кодом:
if (we_have_404) { header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', true, 404); include "/views/error.html"; exit(); }
дабы минимизировать повторяющийся код на сайте, либо выводить что-либо свое.

Комментариев нет:

Отправить комментарий