404 и mod_rewrite

WebByte

Проходящий мимо
404 и mod_rewrite

Имеем папку /tmpl/ - шаблоны, .htaccess с правилами для mod_rewrite и ErrorDocument 404 /404.php, и index.php, который в зависимости от правила тянет из папки с шаблонами страничку.

Ситуация. index.php вытянул страничку, понял, что искомая вещь не найдена и послал header с 404 ошибкой. В логе сервера - 404 ошибка.
В браузере - страница не 404.php, а index.php

Почему?
 

WebByte

Проходящий мимо
Выдать-то я выдам.
Но это сработает лишь для тех страниц, для которых определены правила RewriteRule

Как быть с остальными?
 

slach

Новичок
ты просто не понимаешь механику работы

все правильно тебе выдает

mod_rewrite переписывает урл внутри одного процесса... при этом в заголовки пишет только в экстренных случаях типа там 500-й заголовок в случае вечного зацикливания и т.п.

ErrorDocument опять же обрабатывается на уровне ядра Апача... и РЕДИРЕКТА который бы отразился на записи в логе не происходит... т.е. при выдаче 404-го заголовка... следом в ответе идет содержимое 404.php

IMHO стоит перенаправить ВСЕ урлы кроме GIF\ZIP и т.п. на mod_rewrite ... а внутри index.php в случае не нахождения документа... выдавать header 404 + содержимое 404.php... тогда в логе будет УРЛ который запрашивался до обработки его mod_rewrite

это все IMHO и сумбурное, надо пробовать на практике
 
Сверху