у меня есть рабочий 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.