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

368
14 февраля 2017, 21:32

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

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

Answer 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();
}

дабы минимизировать повторяющийся код на сайте, либо выводить что-либо свое.

READ ALSO
Вывод из БД без перезагрузки

Вывод из БД без перезагрузки

Всем привет, подскажите пожалуйста как выводить записи из таблицы БД MySQL без перезагрузки страницы? Допустим если в БД добавилась новая строка,...

918
Проблема с таймерами

Проблема с таймерами

Суть всей задачи, которую я себе придумал - нужно сделать так, чтобы первый объект запускался функцией setInterval, причём не важно сколько раз,...

367
Работа промисов

Работа промисов

Добрый ВечерНаткнулся на такой пример с промисами :

461
Как обновить в контроллере изменение в фабрике?

Как обновить в контроллере изменение в фабрике?

Почему не обновляются storage? Как сделать так чтобы данные приходя, записывались и на моей странице автоматически изменялись? Если выполнить...

407