Странное поведение RewriteCond на Apache 2.2 - PullRequest
0 голосов
/ 29 сентября 2010

рабочий .htaccess config:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} ^thumbs/(.*)$
RewriteRule ^(.+)$ /index.php [L,QSA]

Все 404 запроса к папке / thumbs / не должны перехватываться скриптом /index.php.Почему верхний конфиг .htaccess работает, а нижний конфиг не работает?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/thumbs/(.*)$
RewriteRule ^(.+)$ /index.php [L,QSA]

Apache 2.2.9, Debian

Ответы [ 2 ]

0 голосов
/ 30 сентября 2010

REQUEST_URI содержит запрошенный путь URI и всегда начинается с косой черты.

Таким образом, шаблон ^thumbs/(.*)$ никогда не совпадает, так как ему не хватает ведущего /. Но другое условие, !^/thumbs/(.*)$, должно соответствовать каждому запросу, путь URI которого не начинается с /thumbs/.

0 голосов
/ 29 сентября 2010

Я думаю, это потому, что первый слэш в

RewriteCond %{REQUEST_URI} !^/thumbs/(.*)$
...