如何使用mod_rewrite更改图像文件夹?

时间:2012-03-26 17:32:51

标签: .htaccess mod-rewrite

在我的网页上,我有这样的图片链接:

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

其中,数字文件夹是图像文件的最后修改时间,以秒为单位,例如的strtotime(filemtime(mypicture.jpg))。它们是浏览器缓存刷新的虚拟路径,而不是真实路径。

我希望apache能够自动将这些链接更改为以下网址:

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 个答案:

答案 0 :(得分:1)

你走在正确的轨道上,但你想要这样的东西:

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))$对匹配.*\.(jpg|jpeg|gif|bmp|png)有一个反向引用($ 1),基本上是在“img /”之后的数字和字母后面的任何内容。这将重写:

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