Неустранимая ошибка, когда 2 правила условного перезаписи URL запускаются одновременно - PullRequest
1 голос
/ 21 марта 2011

Дорогие люди, Попытка перезаписи изображений с помощью правила перезаписи, которое должно срабатывать только при наличии двух условий: изображение начинается с IMG или еще лучше IMG-, а во-вторых, файл должен существовать.

Хороший URL: IMG-folder/file.jpg извлечённое изображение уродливого URL под водой.

Приведенный ниже код работает, когда не заданы никакие условия, а также когда задано только второе условие! -F, но не тогда, когда оба правила сосуществуют. Почему это? Идеи / код / ​​комментарии очень ценятся. Спасибо

Q1. Я немного сбит с толку: первое условие действительно необходимо? Так как я утверждаю, что переписываю только файлы IMG -.... в уродливые ссылки под водой.

Q2. Почему этот код ниже работает неправильно, тогда оба условия выполняются?

RewriteCond %{REQUEST_URI} ^IMG.*$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^IMG-(.+)_w(.+)_h(.+).jpg$ imgcpu\.php\?src=$1\.jpg&w=$2&h=$3 [L]

1 Ответ

1 голос
/ 21 марта 2011

%{REQUEST_URI}, всегда содержит полный запрошенный путь. Первый аргумент RewriteRule с другой стороны является относительным. Если вы сопоставляете %{REQUEST_URI} с шаблоном, который указывает начальную позицию, ^, вы также должны включить начальную косую черту.

RewriteCond %{REQUEST_URI} ^/IMG.*$

Я также немного озадачен формой виртуальных URL. IMG встречается дважды в типичном URL изображения? /IMG-folder/IMG-12_w34_h56.jpg является действительным виртуальным именем файла?

...