Назад | Перейти на главную страницу

RewriteCond RequestURI, почему не работает RegEx?

у меня есть рабочий RewriteCond, например:

RequestURL: http://www.myserver.com/images/gallery/summer/2013/2013-07-07/thumbs/001.jpg

RewriteCond %{REQUEST_URI} !images/gallery/summer/2013/*
RewriteRule ^images/gallery/summer/(.*)$ http://xyz.s3.amazonaws.com/$1 [P]

Это нормально работает, и изображение извлекается из Amazon S3.

Но почему, черт возьми, RegEx не работает в RewriteCond, например:

RewriteCond %{REQUEST_URI} !^images/gallery/summer/2013/(.*)$

Просто я хочу понять, почему приведенный выше код работает, а другой - нет?

СПАСИБО

REQUEST_URI начинается с /, поэтому вместо этого:

RewriteCond %{REQUEST_URI} !^images/gallery/summer/2013/(.*)$

попробуй это:

RewriteCond %{REQUEST_URI} !^/images/gallery/summer/2013/(.*)$

Ответ Майка правильный. Рассмотрите возможность включения RewriteLog, чтобы наблюдать, что на самом деле делает mod_rewrite. Это позволит вам лучше понять, как на самом деле должны выглядеть ваши правила.

Кроме того, добавление (. *) $ В конец RewriteCond не является необходимым и неэффективным, если только вы не планируете использовать значение% 1 в более позднем RewriteRule.