Expression régulière pour .htaccess

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
Configuration: Windows XP
Firefox 3.5.6

6 réponses

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

    pas plus compliqué que ça ^^
    0
    1. 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
      1. ç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
        1. Rajoute un slash avant 404.html
          0
        2. Rajoute un slash avant 404.html
          0
      2. 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
        1. 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
          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