Aller au contenu

Sujets conseillés

Posté

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 +FollowSymlinks
RewriteEngine on
RewriteRule ^mapage-(a-z)\.html$ index.php?lid=$1 [L]

Merci. :)

Posté

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

Posté

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)

Posté

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

Posté

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.

Posté

Salut, si tu es sous Windows, c'est normal, car il ne gère pas les majuscules ;)

Posté

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

Posté

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 (-). :)

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...