У меня есть набор перезаписей, который должен улавливать любые запросы на /cache/images/*
который не существует в файловой системе и возвращает общее изображение в соответствии с суффиксом (соответствующий * _1.jpg для запросов на такие ресурсы, как /cache/images/foo_1.jpg
которые не существуют).
Приведенный ниже фрагмент кода работает в большинстве случаев, но также соответствует всем запросам, заканчивающимся на 1.jpg
, 2.jpg
или 3.jpg
, так что "domain.com/1.jpg" также возвращает /images/generic_1.jpg
общий образ.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]
RewriteCond %{REQUEST_URI} ^/cache/images/.*$ [NC]
RewriteRule .*1.jpg /images/generic_1.jpg [L]
RewriteRule .*2.jpg /images/generic_2.jpg [L]
RewriteRule .*3.jpg /images/generic_3.jpg [L]
Если я скопирую второй RewriteCond
перед 2.jpg и 3.jpg RewriteRule
s, он работает так, как задумано, но я бы хотел сделать это правильно и RewriteCond
применить к трем RewriteRule
с под ним. Что я делаю не так?
[L]
- означает последнее правило для оценки: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule (-: Вы можете взять это отсюда ...?
Редактировать 1 - Очистка правил:
Если ваши файлы названы в этом шаблоне, вы мог сделай что-нибудь вроде этого:
RewriteRule .*(\d{1,}).jpg /images/generic_$1.jpg
\d{1,}
- соответствует цифре 1 или больше; поместите это в пару "()
"означает" сохранить совпавшую строку в $1
"(также известное как первое совпадение), которое затем можно использовать в пути назначения.