глюки mod_rewrite

alex.bugaev

Новичок
глюки mod_rewrite

Дано: WinXP, Apache 2.0.54, mod_rewrite.
в .htaccess что-то вроде этого:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.+)$ /index.php [PT,L]
при для всех url, которые не ссылаются на существующие файлы, все нормально.
Если необходимо чтоб передавались в index.php также существующие файлы, убираем RewriteCond. Получаем 500 - Internal Server Error!
Какой решение можно придумать, уважаемые знатоки?
 

.des.

Поставил пиво кому надо ;-)
index.php это тоже существующий файл. Исключите его из списка иначе получается бесконечный цикл.
 

SiMM

Новичок
> Исключите его из списка иначе получается бесконечный цикл.
А разве L не должен заботиться об этом?
Кстати, у меня подобная же ситуация на Apache 1.3.33/WinXP
Вылечилось так:
RewriteRule ^(.+)$ index.php [PT,L]
Почему - сам не пойму.
PS: хотя PT + L - довольно странное сочетание, но у меня эта проблема была и без PT, просто с L.
 

berkut

Новичок
мод реврайт вообще странная штука. В доке ни слова(да и по логике так быть не должно) о том, что сначала выполняется RewriteRule и только потом RewriteCond(при условии его наличия)
 

mani13

Новичок
ИМХО,
запрос страницы
проверка RewriteCond
проверка RewriteRule
если есть L и правило подходит, то скипаем все остальные правила и переходим к повтору всех действий mod_rewrite и т.д., пока ни один RewriteRule не будет подходить
если нет, то проверяем остальные правила
последнее подошедшее применяем, переходим к повтору всего
 
Сверху