Arris
@Arris
Сапиенсы учатся, играя.

Mod_rewrite, необычный роутинг, как сделать правильное перенаправление?

Есть вот такой нестандартный роутинг:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

#project settings (1)
RewriteRule ^([A-Za-z0-9-]+)/editusers$ editusers.php?project=$1 [L,QSA]

#any project map (2)
RewriteRule ^([A-Za-z0-9-]+)/([^/]+)$ view.php?project=$1&map=$2 [L,QSA]

#any project, any map, edit
RewriteRule ^([A-Za-z0-9-]+)/([^/]+)/edit$ edit.php?project=$1&map=$2 [L,QSA]

#root rules
RewriteRule ^login$ auth.php?action=login [L,QSA]

#project info
RewriteRule ^([A-Za-z0-9-]+)$ info.php?project=$1 [L,QSA]

Все работает, как хотелось бы, но все запросы к /backend/*.php перенаправляется на view.php?project=backend&map=...

Переставляю местами строчки
#any project map (2)
RewriteRule ^([A-Za-z0-9-]+)/([^/]+)$ view.php?project=$1&map=$2 [L,QSA]

#project settings (1)
RewriteRule ^([A-Za-z0-9-]+)/editusers$ editusers.php?project=$1 [L,QSA]


поведение меняется на диаметрально противоположное:
/project/editusers превращается в view.php?project=project&map=editusers

Я понимаю, что скорее всего все работает правильно (то есть как написал - так и работает), но как его победить?

Мне нужно, чтобы все запросы к /backend/*.php направлялись именно на файлы /backend/*.php , а не куда попало.

RewriteCond %{REQUEST_URI} !^/backend/
(в разных, похожих вариациях) добавленный в блок кондишенов (до, после, между, неважно) не меняет ровным счетом ни-че-го.
При этом js'ки и css'ки из fronend/*.* грузятся совершенно нормально.
И, да, я на 100% уверен, что запрашиваемый файл в /backend/ существует! (ведь в одном варианте он нормально запрашивается, а в другом - нет!)

Третий день уже о монитор бьюсь. RTFM делал, гугл читал, коллег мучал.
ЧЯДНТ?
Спасибо!
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 2
Arris
@Arris Автор вопроса
Сапиенсы учатся, играя.
В качестве костыля пришлось сделать временное решение:

RewriteRule ^([A-Za-z0-9-]+)/\*/editusers$ editusers.php?project=$1 [L,QSA]

Но меня все еще не оставляет надежда, что кто-то знает вуду модреврайта.
Ответ написан
Комментировать
@ShamblerR
Может я туплю но что вам мешает ?
RewriteCond %{REQUEST_URI} !^/backend/*\.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9-]+)/([^/]+)$ view.php?project=$1&map=$2 [L,QSA]
Ответ написан
Ваш ответ на вопрос

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

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