mod_rewrite和图像重定向

时间:2011-05-25 10:30:16

标签: apache mod-rewrite

我的网站上有很多图片。假设这些图像存储在“/ data / images”文件夹中。我还有一个带有水印图像的文件夹:“/ data / wimages”。原始图像和水印图像的文件名是相同的,但并非所有图像都具有其水印副本。因此,如果没有水印副本呈现并通过原始图像,我想重定向原始图像(不在浏览器或html源代码中更改其URL)。我正在尝试使用Apache mod_rewrite来解决这个问题:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f # Checking if file exists and is a regular file.
RewriteCond %{REQUEST_URI} ^.*/data/images/.*\.(gif|jp?g|png)$ [NC] # Is file an image?
RewriteRule ^data/images/(.*\.(gif|png|jp?g))$ /data/wimages/$1 [NC] # New watermaked image url. 
RewriteCond %{REQUEST_FILENAME} !-f # If watermarked image not exists ..
RewriteRule ^data/wimages/(.*\.(gif|png|jp?g))$ /data/images/$1 [NC,L]

然后我正在恢复之前更改的网址并获得无限循环!

有什么想法吗?

P.S。抱歉我的英文。

1 个答案:

答案 0 :(得分:3)

RewriteEngine on

RewriteCond %{QUERY_STRING} !rewritten
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} ^.*/data/images/.*\.(gif|jpe?g|png)$ [NC]
RewriteRule ^data/images/(.*\.(gif|png|jpe?g))$ /data/wimages/$1?rewritten=1 [QSA,NC]

RewriteCond %{QUERY_STRING} !^rewritten=2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^data/wimages/(.*\.(gif|png|jpe?g))$ /data/images/$1?rewritten=2 [QSA,NC,L]