Aller au contenu

Sujets conseillés

Posté

Bonjour,

Serveur Mutu OVH.

Je rencontre un problème pour réécrire mes urls avec paramètres.

Mon htaccess:


Options +FollowSymlinks

RewriteEngine On
RewriteBase /
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 :)

Posté

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]

Posté

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=...)?

Posté

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 ?

Posté (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 :nonono:

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é par dlagreze
Inutile de citer le post précédent, on vient de le lire ...
Posté

A droite dans la réécriture, cela ne devrait pas être prestation.php plutôt que prestation (tout court) ?

Jean-Luc

Posté
(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

Posté

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.

Posté
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

Posté

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&.....

Veuillez vous connecter pour commenter

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



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