Страницы

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

воскресенье, 8 марта 2020 г.

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

#php #http #редирект #header


В .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');


Не срабатывает всё равно. Может что-то дописать нужно ещё?
    


Ответы

Ответ 1



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(); } дабы минимизировать повторяющийся код на сайте, либо выводить что-либо свое.

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

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