dlagreze Posté 8 Mars 2010 Posté 8 Mars 2010 Bonjour, Serveur Mutu OVH. Je rencontre un problème pour réécrire mes urls avec paramètres. Mon htaccess: Options +FollowSymlinksRewriteEngine OnRewriteBase /RewriteRule ^references/site-internet/prestation/([0-9]+)-([0-9]+)-([0-9A-Za-z]+)$ http://www.toto.fr/references/site-internet/prestation?ids=$1&cat=$2&nom=$3 [QSA,L] Je souhaite une url "propre" du type: http://www.toto.fr/references/site-internet/prestation/1-1-toto Hors j'obtiens http://www.toto.fr/references/site-internet/prestation?ids=1&cat=1&nom=toto en faisant un lien: <a href="http://www.toto.fr/references/site-internet/prestation/1-1-toto"> Je souhaiterais l'inverse en fait ! En espérant que je ne sois pas le seul à rencontrer se genre de souci
captain_torche Posté 8 Mars 2010 Posté 8 Mars 2010 Si je ne m'abuse, c'est parce que tu renseignes une url complète comme second argument. Essaye comme ça : RewriteRule ^references/site-internet/prestation/([0-9]+)-([0-9]+)-([0-9A-Za-z]+)$ references/site-internet/prestation?ids=$1&cat=$2&nom=$3 [QSA,L]
dlagreze Posté 8 Mars 2010 Auteur Posté 8 Mars 2010 Si je ne m'abuse, c'est parce que tu renseignes une url complète comme second argument. Essaye comme ça : RewriteRule ^references/site-internet/prestation/([0-9]+)-([0-9]+)-([0-9A-Za-z]+)$ references/site-internet/prestation?ids=$1&cat=$2&nom=$3 [QSA,L] Bonsoir captain_torche, Et non ma règle fonctionne apparemment bien (avec ovh il faut bien mettre les url complètes), mais je ne comprends pas pourquoi dans la barre du navigateur j'obtiens:/>http://www.toto.fr/references/site-internet/prestation?ids=1&cat=1&nom=toto hors moi je souhaite avoir:/>http://www.toto.fr/references/site-internet/prestation/1-1-toto Je confonds où le 1er paramètre est bien celui qui doit rester dans la barre de navigation ? et la 2ème est en fait le lien serveur avec la bonne url et ses paramètres (&id=...&cat=...)?
captain_torche Posté 8 Mars 2010 Posté 8 Mars 2010 Non, avec OVH il ne faut pas mettre l'url complète (Ce qui cause la redirection de la première url vers la seconde). La seule chose qui est obligatoire, est de faire précéder toutes les urls de réécriture avec un slash, ou de mettre un rewritebase comme tu l'as fait. Essaye ce que je t'ai dit, pour voir ce que ça donne ?
dlagreze Posté 9 Mars 2010 Auteur Posté 9 Mars 2010 (modifié) En faisant comme ça je rencontre un erreur 404 provoquer par le fait que les paramètres passer en GET ne sont pas récupérer, et j'ai comme test dans ma page (si pas de GET &ids=...&cat=...&nom=... alors redirectin vers 404). Alors qu'avec l'url complète je retrouve bien les variables J'ai l'impression que le "?" bloque la lecture des paramètres !! car en faisant un $_GET['ids'] dans la page 404 je récupère bien la valeur. Modifié 9 Mars 2010 par dlagreze Inutile de citer le post précédent, on vient de le lire ...
Jeanluc Posté 9 Mars 2010 Posté 9 Mars 2010 A droite dans la réécriture, cela ne devrait pas être prestation.php plutôt que prestation (tout court) ? Jean-Luc
Jeanluc Posté 9 Mars 2010 Posté 9 Mars 2010 (si pas de GET &ids=...&cat=...&nom=... alors redirectin vers 404). ... en faisant un $_GET['ids'] dans la page 404 je récupère bien la valeur. Là, je ne comprends pas comment tu peux ne pas avoir les variables dans la page normale et les retrouver ensuite dans la page 404. La page 404 ne peut pas trouver toute seule les paramètres s'ils ne sont pas quelque part dans la page qui fait la redirection. Pourrais-tu être plus précis parce que strictement parlant, soit tu envoies un code 404 et tu n'as pas vraiment de redirection, soit tu fais une redirection vers une page d'erreur qui renvoie un code 200 ? Jean-Luc
dlagreze Posté 9 Mars 2010 Auteur Posté 9 Mars 2010 J'utilise un CMS (Modx) est je gère ma page 404 comme je veux ! (d'où le rajout GET pour voir si ma réécriture fonctionne) Mais c'est pas le problème, je récupère la valeur GET car l'url reste pour la page 404, donc ça veux rien dire. Et "prestation" est un dossier donc pas de prestation.php. Actuellement j'ai: RewriteRule ^references/site-internet/prestation/([0-9]+)-([0-9]+)-([0-9A-Za-z]+)$ references/site-internet/prestation/?ids=$1&cat=$2&nom=$3 [QSA,L] et avec un lien : <a href="http://www.toto.fr/references/site-internet/prestation/1-1-toto"> j'obtiens dans la barre de navigation: http://www.toto.fr/references/site-internet/prestation avec page 404 comme contenu.
Jeanluc Posté 9 Mars 2010 Posté 9 Mars 2010 J'utilise un CMS (Modx) est je gère ma page 404 comme je veux !J'ai plutôt l'impression que c'est ton CMS qui fait ce qu'il veut ! Par exemple, WordPress est un CMS qui fait en interne une sorte de réécriture d'URL qui ne fonctionne évidemment plus si on fait des changements sauvages dans l'URL par des RewriteRule. Cela dit, je ne sais pas si c'est pareil avec ton Modx. Jean-Luc
Remi Posté 11 Mars 2010 Posté 11 Mars 2010 Je pense qu'il ne faut pas utiliser des urls simplifiées dans la cible... Donc rajoute 'index.php' avant le '?' du second paramètre. ....prestation/index.php?ids=$1&.....
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant