у меня CMS с ЧПУ.
в .htaccess все запросы перенаправляются на index.php
Там парсится URL и генерируется страница. Вся информация о структуре сайта в базе.
Нужно сделать правильную обработку 404 ошибки, т.е. если в базе не найден раздел/подраздел, отвечающий введенному URL, то пользователю выводится своя 404 ошибка.
в index.php стоит проверка: если нет раздела, то
header ("Location: /404.php");exit;
при этом идет редирект, 404 ошибка, но адрес в строке меняется с введенного на 404.php
Как сделать, чтобы адрес в строке не менялся?
в .htaccess я прописал
ErrorDocument 404 /404.php
только изначально мы не знаем - правильный url или нет - и попадаем в index.php, где и узнаем это.
mod_rewrite -ом вроде нельзя это сделать (вся инфа в базе, а правил для названий разделов нет - они любые могут быть)