Expression régulière pour .htaccess

Persilou Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 le gars sans nom -
Bonjour à tous, et bonnes fêtes de fin d'année,

j'ai besoin de faire un .htaccess pour rediriger toute une plage d'url vers une autre url. Je sais faire la redirection, mais je ne maitrise pas assez les expressions régulières pour traduire mon besoin dans ce langage.

Ce que je voudrais faire est simple. Traduire en expression régulière la formule suivante :

Commence par index.php?
puis contient 5 ou 6 nombres à la suite entre 0 et 9
puis contient une lettre entre a et z

exemple : index.php?24568p

est-ce que quelqu'un saurait comment le dire en expression régulière ?

en vous remerciant
A voir également:

6 réponses

Utilisateur anonyme
 
 ^index.php?([0-9]{5,6})([a-z]{1})$ 

pas plus compliqué que ça ^^
0
Persilou Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Rolala, déjà une réponse !

bon je teste ça dans mon .htaccess, et je vous fais un retour, que ça marche (j'espère bien !) ou pas ^^


merci !
0
Persilou Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
ça marche pas :-(

j'ai ça dans mon .htaccess :
RewriteRule ^index.php?([0-9]{5,6})([a-z]{1})$ 404.html [R=301,L]

ça donne rien, les urls index.php?12345a ne sont pas redirigées :-(

arf, je comprend pas
0
le gars sans nom
 
Rajoute un slash avant 404.html
0
le gars sans nom
 
Rajoute un slash avant 404.html
0
Utilisateur anonyme
 
Heu en fait je crois que ça vient du "?", je viens de tester avec
RewriteRule ^index.php([0-9]{5,6})([a-z]{1})$ 404.html

et ça fonctionne... si je trouve une solution je te dis ça ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Persilou
 
La solution, qui intéressera peut-être du monde :

RewriteCond %{QUERY_STRING} ^\d{5,6}[a-z]$
RewriteRule ^index\.php$ /404.html? [NC,R=301,L]
0
coding:cp1252 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   1
 
RewriteRule ^index.php\?([0-9]{5,6})([a-z]{1})$ 404.html [R=301,L] 

Le "?" est un MÉTACARACTÈRE, c'est un caractère qui signifie qqch dans les regex. Il faut faire perdre sa signifaction (on dit aussi "échapper") en mettant un backslash.
Et là, tout fonctionnera comme décrit dans le 1er post. Faut savoir parler chiniois ;)

Voici la liste des métacaractères: # ! ^ $ ( ) [ ] { } | ? + * .
Moi personnellement, j'utilise le dièse pour les limites de regex.
0