问题描述
|
我的网站上有很多图片。假设这些图像存储在文件夹“ / 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]