RewriteCond %{REQUEST_URI} !/images/.*
RewriteRule ^(.*\.(gif|jpg|png))$ images/$1 [QSA,L]
это работает, но не для подпапок.
Это все равно перенаправляло бы изображения во вложенные папки, но /italy/region/internal/map1234.png
было бы перенаправлено на /images/italy/region/internal/map1234.png
.
Чтобы он работал для любых подпапок , измените его на:
RewriteCond %{REQUEST_URI} !/images/
RewriteRule /(\w+\.(gif|jpg|png))$ images/$1 [L]
\w+
(ранее .*
) - исключив sla sh в захваченном шаблоне мы гарантируем, что мы захватываем только имя файла, а не весь URL-путь.
Флаг QSA
не требуется.
ОБНОВЛЕНИЕ: К сожалению, этот код не работает (404), если я использую изображения с da sh. Например, my-name.png Есть идеи?
Измените \w
(любой символ слова) в приведенном выше регулярном выражении на [\w-]
, чтобы включить дефис. Например:
RewriteRule /([\w-]+\.(gif|jpg|png))$ images/$1 [L]