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]
然后,我将恢复之前更改的网址并获得无限循环! 有任何想法吗? 附言对不起我的英语不好。     

解决方法

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]