Version complète: sur le forum Webmaster Hub : URL rewriting
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
gaffasse
Bonjour tt le monde,
J'essaye de réécrire mes URL à l'aide de la technique URL rewriting décrite dans plusieurs sites dont Webmaster HUB, mais j'ai un petit problème.
Mes variables sont du genre AA, DES (index.php?id=AA), je n'arrive pas à un bon résultat, par contre avec les chiffres (comme décrit sur l'article précité) ça marche.
Voici ce que j'ai mis dans le .htaccess :
CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^mapage-(a-z)\.html$  index.php?lid=$1  [L]


Merci. smile.gif
Dan
Bonjour,

Tout simplement parce que le "match" que tu essaies de faire ne se fera que pour des caractères en bas de casse (minuscules).

Si tu veux pouvoir traiter des caractères majuscules, tu as 2 possibilités:
- soit les préciser dans ta règle
- soit utiliser le flag NC (pour NoCase) qui rendra ta règle insensible à la casse.

Donc, soit ceci:
CODE
RewriteRule ^mapage-([a-zA-Z]+)\.html$  index.php?lid=$1  [L]

soit encore:
CODE
RewriteRule ^mapage-([a-z]+)\.html$  index.php?lid=$1  [NC,L]


Dans ta règle, tu mentionnes (a-z), ce qui est faux !
Si tu veux tester une ou plusieurs lettres dans la gamme de a à z, il faut utiliser les crochets et au moins un signe + ensuite.
Je te suggère de relire l'article, tu as dû louper quelques passages importants smile.gif

Dan
gaffasse
Salut DAN :
En fait j'ai mal copié le bout de code, voici ce que j'ai utilisé sur mon site :
CODE
RewriteRule ^somme-([a-z]+)\.html$  index.php?load=$1  [L]

C'est vrai que j'utilise des variables en majuscule, j'ai donc modifié ce code en ajoutant ce que tu m'as recommandé, mais sans résultat.
Je me retrouve sur la page d'accueil (valeur par défaut)
Dan
Essaie déjà en enlevant le ^ au début de ta règle.
Parce que selon le paramétrage du serveur il y a peut-être un / qui précède.

Et si tu es chez OVH, mets un / devant le second argument wink.gif

Dan
gaffasse
Je pense que j'ai trouvé une piste :
Mon code de la page index contenait :
CODE
switch($id)
        {
     case "DL" :
     $page="list.php";
     break;
         }

J'ai remplacé le DL (majuscule) en dl (minuscule) et ça a marché.
Mais j'aimerais tout de même comprendre où était le problème.
Merci.
Phobos
Salut, si tu es sous Windows, c'est normal, car il ne gère pas les majuscules wink.gif
Dan
Si tes arguments sont tous en majuscule, remplace le ([a-z]+) par ([A-Z]+) et enlève le flag NC ... ou alors il te faudra remplacer tous les éléments du case de ton fichier par leur équivalent en minuscules.

Dan
gaffasse
J'ai déjà essayé [A-Z] ça n'a pas marché. Avec [NC,L] c'est mieux, et en plus mes arguments ne sont pas tous en maj.
j'aurai aimé mettre des mots au lieu des lettre (drapeaux-liste au lieu de DL), pour le moment ça ne marche pas, je pense que c'est à cause du tiret (-). smile.gif
Dan
Dans ce cas il faut mettre ([0-9a-z_-])+ pour couvrir les chiffres, le tiret et le soulignement.

C'est mieux quand on donne toutes les infos en une fois plutôt que par bribes, ma boule de cristal ne fonctionne pas aujourd'hui smile.gif

Dan
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.