Problème de boucle (regex)

Nouveau WRInaute
Bonjour,
Je cherche à faire une regex qui me permettent de reconnaître des chaînes ne contenant pas une sous-chaîne. Voilà précisément ce que je veux faire dans mon htaccess :
- si le visiteur appelle le fichier rep1/sousrepé/nom.pdf, il est redirigé vers
/openfile.php?file=dir1/subdir2/filename.pdf

- si le visiteur appelle le fichier openfile.php?file=dir1/dir2/nom.pdf , je ne veux pas qu'il soit redirigé, sinon ça fait une boucle !

Il me faut donc rediriger le fichier que s'il ne contient pas openfile.php?file=

Ma regex de redirection est pour l'instant :
#RewriteRule ^((?!openfile.php).*).(jpg|JPG|mp3|pdf)$ /openfile.php?file=$1.$2 [R]

Mais ça ne marche pas. J'ai essayé de la triturer sans grand succès. Auriez-vous une idée ?

Merci !
Peutch
 
WRInaute impliqué
Y'a une bidouille à faire pour pouvoir travailler sur les paramètres de l'URL, par défaut le RewriteRule ne concerne que l'URL SANS les paramètres.
 
Nouveau WRInaute
RewriteCond

Bonjour,

As-tu essayé de rechercher file dans le query redirigé?
RewriteCond %{REDIRECT_QUERY} ^file.*
RewriteRule ^(.*) - [L]

Tu peux aussi, à chaque fois q'une redirection est réalisé, fermer les autres redirections en utilisant [L], équivalent du break

Tu peux aussi traiter seulement les adresses ne remplissant pas la condition
RewriteCond %{REDIRECT_QUERY} !^file.*

Attention aux conditions, Alias et leur définition au niveau serveur
 
Discussions similaires
Haut