Aller au contenu

Sujets conseillés

Posté

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.

Posté

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 !

Posté (modifié)

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

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.

Posté

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]

Posté

Le flag [L] est bien en place.

Je suis sur serveur mutualisé malheureusement (Infomaniak).

Ce cas est-il fréquent ?

Posté

Je n'avais pas vu ta seconde réponse.

Même sans le "./" le souci est le même.

Il s'agit de répertoires virtuels, peut être est-ce l'origine du problème ?

Posté (modifié)

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

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 !

Posté

Je tombe sur une page d'erreur maintenant, 404.

Par contre je dois quitter le boulot, je reprends demain.

Posté

Il faut :

- renommer le fichier

- le changer dans la dernière règle !

Posté

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 ?

Veuillez vous connecter pour commenter

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



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