2011-05-25 2 views
3

J'ai un site web avec beaucoup d'images. Disons ces images stockées dans un dossier "/ data/images". J'ai aussi un dossier avec des images en filigrane: "/ data/wimages". Les noms de fichiers d'images origianales et filigranées sont les mêmes, mais toutes les images n'ont pas leur copie filigranée. Donc, je veux rediriger les images originales (sans changer son URL dans un navigateur ou code source html) si la copie en filigrane présente et en passant par l'image originale sinon. Je suis en train de résoudre ce problème en utilisant Apache mod_rewrite:mod_rewrite et redirection d'image

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] 

alors je récupère URL précédemment changé et obtenir une boucle infinie!

Des idées?

P.S. Désolé pour mon anglais.

Répondre

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] 
+0

merci beaucoup! Ça marche pour moi. – anton

Questions connexes