Как изменить папки изображений с помощью mod_rewrite? - PullRequest
0 голосов
/ 26 марта 2012

На моей веб-странице есть ссылки на такие изображения:

img/123456765/mypicture.jpg (<img src="img/123456765/mypicture.jpg" />)
img/2534/anotherpicture.jpg

где папка с номерами - это время последнего изменения файла изображения в секундах, например StrToTime (filemtime (mypicture.jpg)). Это виртуальные пути обновления кэша браузера, а не реальные пути.

Я бы хотел, чтобы apache автоматически изменил эти ссылки на URL-адреса, подобные этим:

img/mypicture.jpg
img/anotherpicture.jpg

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

Инструкция Mod_rewrite, которую я пытаюсь создать, выглядит следующим образом:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^img/([a-zA-Z0-9-_]+)/\.(jpg|jpeg|gif|bmp|png)$ img/ [L]

Я новичок в mod_rewrite, поэтому не уверен, что эти инструкции верны. Кто-нибудь может поправить меня, если я здесь не прав? Я бы оценил это! Спасибо!

1 Ответ

1 голос
/ 26 марта 2012

Вы на правильном пути, но вы хотите что-то вроде этого:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^img/[a-zA-Z0-9-_]+/(.*\.(jpg|jpeg|gif|bmp|png))$ img/$1 [L]

Регулярное выражение ^img/[a-zA-Z0-9-_]+/(.*\.(jpg|jpeg|gif|bmp|png))$ имеет обратную ссылку ($ 1) на совпадение .*\.(jpg|jpeg|gif|bmp|png), по существу, что угодно после строки чисел и букв после "img /". Это перепишет:

img/123456765/mypicture.jpg to img/mypicture.jpg
img/2534/anotherpicture.jpg to img/anotherpicture.jpg
...