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