MrHamster
@MrHamster
Веб-программист, графический дизайнер

Как сделать 404 редирект при роутинге?

Не так давно Тостер подсказал мне очень крутую тему с роутингом и php, большое спасибо:3
И вот, когда я почти переписал свой "движок", у меня встал вопрос насчет 404 редиректа.
Попытался я сделать так:
Сначала, если урл не подходит ни под какие правила, роутер думает, что это статья(потому что статья может лежать где угодно).
else {
        $this -> set('ContentManager', new ArticleManager($address, $this['database']));
        $route_to = 'article';
}

Сама статья сверяет свой урл с базой данных, если там ничего не находит, перекидывает на страницу с 404.
if (count($this -> mysql_content) == 0) {
        header( "Location: /error404.php", true, 404 );
        exit();
}

Когда моя страница начала перекидываться на 404, я сначала обрадовался. "Только прописать в .htaccess, и готово!".
79009c0f315042518188ee0c3d452612.PNG
ErrorDocument 404 http://klimatdomu.ru/error404.php

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.klimatdomu.ru$ [NC]
RewriteRule ^(.*)$ http://klimatdomu.ru/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

Но почему-то эта штука не работает, сайт все также висит на 404
88759f9dc2844f16b5a807ad8df5a43c.PNG

Буду признателен, если кто-нибудь укажет, где я ошибся, и как можно реализовать это? Страница с 404 - error404.php
Заранее спасибо.
  • Вопрос задан
  • 1859 просмотров
Решения вопроса 1
header( "Location: /error404.php", true, 404);
Браузер получает 404-й ответ и скорее всего из-за этого не выполняет "Location: /error404.php".
Попробуй так
header("Location: /error404.php", true);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы