gaffasse Posté 14 Juin 2006 Posté 14 Juin 2006 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 : Options +FollowSymlinksRewriteEngine onRewriteRule ^mapage-(a-z)\.html$ index.php?lid=$1 [L] Merci.
Dan Posté 14 Juin 2006 Posté 14 Juin 2006 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: RewriteRule ^mapage-([a-zA-Z]+)\.html$ index.php?lid=$1 [L] soit encore: 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 Dan
gaffasse Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 Salut DAN : En fait j'ai mal copié le bout de code, voici ce que j'ai utilisé sur mon site : 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 Posté 14 Juin 2006 Posté 14 Juin 2006 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 Dan
gaffasse Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 Je pense que j'ai trouvé une piste : Mon code de la page index contenait : 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 Posté 14 Juin 2006 Posté 14 Juin 2006 Salut, si tu es sous Windows, c'est normal, car il ne gère pas les majuscules
Dan Posté 14 Juin 2006 Posté 14 Juin 2006 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 Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 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 (-).
Dan Posté 14 Juin 2006 Posté 14 Juin 2006 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 Dan
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant