Url rewriting et ordre des paramètres GET transmis
4 messages • Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
Url rewriting et ordre des paramètres GET transmis
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) :
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).
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).
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...
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?
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?
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?
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?
4 messages • Page 1 sur 1
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 :
- Gérer ses paramètres de tracking dans Google Webmaster Tools
- Tutoriel URL Rewriting
- Suite de l'article sur le fichier .htaccess : l'URL rewriting
- l'URL Rewriting expliqué aux débutants
- Optimiser le référencement d'un forum phpBB : réécriture d'URL
- L'URL Rewriting expliqué aux débutants
- Le référencement de pages PHP
- Votre site est mal référencé ? Voilà les remèdes !
- Gérer l'entête HTTP en PHP
- 3ème partie de l'article .htaccess : les réécritures conditionnelles
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é




le forum