Aller au contenu

Un souci avec la combinaison réécriture / redirection 301


Sujets conseillés

Bonjour à tous,

Je me permets de poster ma demande car ça fait un moment que je cherche en vain une solution à mon problème.

Je suis en train de mettre place la réécriture d'URL pour mon site, jusque là ça fonctionne bien.

Par exemple :

RewriteRule ^ventes-en-exclusivite/page-([0-9]+)/tri-(.*)$ ./exclusivites.php?page=$1&choix_tri=$2 [L]

Là où ça bloque c'est lorsque j'essaye de faire une redirection 301 dans la foulée. Voici mon code :


RewriteCond %{QUERY_STRING} ^page=([0-9]+)&choix_tri=(.*)$
RewriteRule ^exclusivites.php$ http://www.monsite.com/ventes-en-exclusivite/page-%1/tri-%2? [R=301,L]

RewriteRule ^ventes-en-exclusivite/page-([0-9]+)/tri-(.*)? ./exclusivites.php?page=$1&choix_tri=$2 [L]

Ca me fait une boucle infinie.

Merci par avance pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Il te sert à quoi le "?" de ta règle ??

RewriteRule ^ventes-en-exclusivite/page-([0-9]+)/tri-(.*)? ./exclusivites.php?page=$1&choix_tri=$2 [L]

Parce qu'il rend ce qui précède, donc le (.*) , facultatif !

Si c'est pour "matcher" le ? final de ta redirection 301, c'est inutile car ce dernier ne sera jamais transmis vu qu'il est là pour empêcher l'ajout du QUERY_STRING !

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse.

Justement, je n'étais pas sûr de l'utilité du "?".

Je teste sans.

[edit]

Si je vais sur http://www.monsite.com/exclusivites.php?page=3&choix_tri=surf_hab_asc la réécriture fonctionne car l'URL devient http://www.monsite.com/ventes-en-exclusivite/page-3/tri-surf_hab_asc mais je tombe toujours sur une page d'erreur ("Cette page Web présente une boucle de redirection").

[/edit]

Modifié par Beno
Lien vers le commentaire
Partager sur d’autres sites

Il semble bien que la deuxième règle, qui génère "exclusivites.php?page=$1&choix_tri=$2" passe à nouveau dans la condition au début de fichier, malgré le flag [L], ce qui fait boucler tes réécritures.

Tu es certain que tu as le flag [L] en place ?

SI tu es sur dédié, tu peux utiliser RewriteLogLevel et un RewriteLog dans le fichier httpd.conf pour voir précisément ce que ça fait.

Lien vers le commentaire
Partager sur d’autres sites

Essaie sans mettre le ./ au second argument de ta règle, il force peut-être une redirection externe, ce qui expliquerait le passage par ta condition.

RewriteRule ^ventes-en-exclusivite/page-([0-9]+)/tri-(.*) exclusivites.php?page=$1&choix_tri=$2 [L]

Lien vers le commentaire
Partager sur d’autres sites

Il me faut donc renommer mon fichier "exclusivites.php" en "exclusivites_2.php" sur le serveur ?

Ca ne va pas poser de problème pour le référencement du coup ?

La redirection 301 permettant justement de conserver ce référencement non ?

Je me trompe peut être, j'avoue que c'et assez flou.

[edit]Oui, c'est bien pour ne pas perdre le référencement [/edit]

Modifié par Beno
Lien vers le commentaire
Partager sur d’autres sites

Tu ne perdras pas le référencement, vu que tu fais une redirection 301. Donc de toute manière, avec cette redirection, plus personne ne verra ton fichier exclusivites.php qui ne doit même plus exister. Il ne sera donc qu'à usage interne à ton site. Tu peux bien le nommer comme tu veux, dan.php si ça te chante smile.gif

Le reste du monde verra la nouvelle URL !

Lien vers le commentaire
Partager sur d’autres sites

J'en profite pour éclaircir 2 petites choses et essayer de comprendre un peu mieux smartass.gif

Sur la dernière ligne tu as remis le "?". Est-ce obligatoire dans ce cas ?

Et sur les 2 lignes de rewriting tu n'as pas mis l'indication de début de chaîne "^", ça veut dire que c'est optionnel ?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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