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