Url rewriting et ordre des paramètres GET transmis

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

prog-x
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: Sam Jan 06, 2007 11:09

Url rewriting et ordre des paramètres GET transmis

Message le Sam Jan 06, 2007 11:56

Bonjour,

J'essaye de mettre en place la solution décrite dans ce tutoriel pour une utilisation multilingue d'un site mais je bute sur un problème très précis et, peut-être, tout simple à résoudre. J'ai simplifé le .htaccess pour isoler le problème (j'ai pris pratiquement le même que dans le tuto) :

Code: Tout sélectionner
RewriteRule ^(.*)-l([0-9]*)(.*)\.html$  $1$3.php?ln=$2 [QSA]
RewriteRule ^(.*)-L([0-9]*)\.php$  $1.php?ln=$2 [L,QSA]


Le problème est que lorsque je veux passer une url du type http://test.ch/test/page23-l1-L2.html la variable $_GET['ln'] est égale à 1 au lieu d'être égale à 2.

En fait ma réecriture d'URL me renvoies page23.php?ln=2&ln=1 au lieu de page23.php?ln=1&ln=2 étant donné que le paramètre déterminant est le 2ème, d'après mes observations.

Donc la question : est-ce que l'ordre des paramètres identiques joue un rôle, est-ce que la règle de réecriture devrait être écrite différement ou est-ce un paramètres du serveur à modifier?
(je précise encore que mon hébergeur est infomaniak).

Merci d'avance pour votre/vos réponse(s).


correiaj
WRInaute accro
WRInaute accro
 
Messages: 1106
Inscription: Lun Avr 25, 2005 22:39

Message le Sam Jan 06, 2007 14:23

RewriteRule ^(.*)-l([0-9]*)(.*)\.html$ $1$3.php?ln=$2 [QSA]
RewriteRule ^(.*)-L([0-9]*)\.php$ $1.php?ln=$2 [L,QSA]


Le problème est que lorsque je veux passer une url du type http://test.ch/test/page23-l1-L2.html


Donc ça fait ça:
http://test.ch/test/page23-l1-L2.html ->
http://test.ch/test/page23-L2.php?ln=1 ->
http://test.ch/test/page23.php?ln=2&ln=1
Pourquoi??
Parce que le moteur de réécriture inérprête les instruction dans l´ordre:
1/ il réécrit et donne http://test.ch/test/page23.php?ln=2
2/ il rajoute la Query String (QSA) et donne http://test.ch/test/page23.php?ln=2&ln=1

Soit tu enlève QSA, soit tu change le nom de ta deuxième variable GET...

prog-x
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: Sam Jan 06, 2007 11:09

Message le Sam Jan 06, 2007 19:16

Merci correiaj pour ta réponse.

Effectivemment les 2 solutions seraient enviseageables mais j'ai ommis de préciser dans mon ennoncé du problème que la plupart des mes liens sont du style :

http://test.ch/test/page23-l1.html

Donc si je change mon paramètre ln il ne fonctionnera plus avec un lien qui ne contient pas le changement de langue (Lx). Tout comme d'ailleurs si je supprime la Query String (QSA) le paramètre l1 ne deviendra jamais ?ln=1.

pour résumer :
http://test.ch/test/page23-l1.html devrait donner un $_GET['ln'] égal à 1
et
http://test.ch/test/page23-l1-L2.html devrait donner un $_GET['ln'] égal à 2


Donc est-ce que l'exemple est mal exprimé dans le tutorial ou ai-je fait une grossière erreur? D'après ce que dit correiaj, qui me semble très logique, l'exemple donné ne pourra jamais fonctionner correctement. Qu'en est-il?

prog-x
WRInaute discret
WRInaute discret
 
Messages: 85
Inscription: Sam Jan 06, 2007 11:09

Message le Dim Jan 07, 2007 10:20

Si je reprends le tutoriel il donne ceci comme exemple :

Par exemple, le fichier page23-l1-L2.html sera réécrit une première fois page23-L2.php?language=1 (1ère règle) puis page23.php?language=1&language=2 (2ème règle).

Ce qui est faux puisque j'obtiens en réalité page23.php?language=2&language=1 ce que correiaj a parfaitement démontré.

Alors la question : qu'est-ce que je fais de faux pour ne pas obtenir le même résultat que le tutoriel?


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Alerts

  • Analyse de popularité
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Transformer des simples citations de votre site en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité