2010-03-26 5 views
0

J'essaie d'écrire des règles mod_rewrite pour générer des miniatures à la volée. Alors, quand cette urlRéécrire la chaîne de requête

example.com/media/myphoto.jpg?width=100&height=100 

le script devrait réécrire à

example.com/media/myphoto-100x100.jpg 

et si le fichier existe sur le disque, il se fourni par Apache et si elle n'existe pas, il est appelé un script pour générer le fichier.

J'ai écrit ce

RewriteCond %{QUERY_STRING}        ^width=(\d+)&height=(\d+) 
RewriteRule ^media/([a-zA-Z0-9_\-]+)\.([a-zA-Z0-9]+)$ media/$1-%1x%2.$2 [L] 
RewriteCond %{QUERY_STRING}        ^(.+)? 
RewriteRule ^media/([a-zA-Z0-9_\-\._]+)$     media/index.php?file=$1&%1 [L] 

et je reçois des redirections internes infinies. La première condition est mise en correspondance et la règle est exécutée et immédiatement après, je reçois une redirection interne.

J'ai besoin de conseils pour terminer ce script.

Merci.

Répondre

0

Essayez d'utiliser ceci pour votre deuxième condition:

RewriteCond %{REQUEST_FILENAME} !-f 

« -f » (est de fichier régulier) Traite chaîne de test comme un chemin et vérifie si elle existe et est un fichier régulier.

RewriteCond

0

Essayez ces règles:

RewriteCond %{QUERY_STRING} ^width=(\d+)&height=(\d+)$ 
RewriteCond %{DOCUMENT_ROOT}/media/$1-%1x%2.$2 -f 
RewriteRule ^media/([a-zA-Z0-9_\-]+)\.([a-zA-Z0-9]+)$ media/$1-%1x%2.$2 [L] 
RewriteCond $1 !=index.php 
RewriteRule ^media/([a-zA-Z0-9_\-]+\.[a-zA-Z0-9]+)$ media/index.php?file=$1 [L,QSA] 

La deuxième condition des premiers tests de règle s'il y a un fichier avec ce nom (-f).

+0

Cette condition est exécutée à chaque redirection même si l'uri est réécrit et correspond: RewriteCond: entrée = 'largeur = 100 & hauteur = 100' motif = '^ largeur = (\ d +) & hauteur = (\ d +)' = > apparié – drakoola

Questions connexes