У меня есть веб-сайт, на котором различные части разбирают URL-адреса запроса сами по себе, а некоторые — нет. (например, форум vBulletin). .htaccess, который я должен отправлять запросы соответствующим сценариям:
# wiki, shop, admin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)\.js
RewriteRule ^wiki/(.*)$ w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ wiki/ [L,QSA]
RewriteRule ^shop/ /shop/shop.php [NC,L]
RewriteRule ^forum/admincp/pkr/ /forum/admincp/pkr/pkr.php [NC,L]
Это не работает, как я ожидал. Я забыл, что условия перезаписи применяются только к первому правилу, которое следует за ними. Вопрос в следующем: Как я могу применить эти RewriteConditions ко всем этим правилам, не копируя их 4 раза?
Что идет не так:
- /shop/example переписан в /shop/shop.php
Затем /shop/shop.php снова переписывается в /shop/shop.php (читай: у нас бесконечный цикл). Этого бы не произошло, если бы это условие было применено к этому правилу перезаписи, потому что /shop/shop.php — это реальный файл:
RewriteCond %{REQUEST_FILENAME} !-f
Так что да...