Beno Posté 11 Septembre 2012 Partager Posté 11 Septembre 2012 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 More sharing options...
Dan Posté 11 Septembre 2012 Partager Posté 11 Septembre 2012 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 More sharing options...
Beno Posté 11 Septembre 2012 Auteur Partager Posté 11 Septembre 2012 (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é 11 Septembre 2012 par Beno Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 11 Septembre 2012 Partager Posté 11 Septembre 2012 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 More sharing options...
Dan Posté 11 Septembre 2012 Partager Posté 11 Septembre 2012 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 More sharing options...
Beno Posté 11 Septembre 2012 Auteur Partager Posté 11 Septembre 2012 Le flag [L] est bien en place. Je suis sur serveur mutualisé malheureusement (Infomaniak). Ce cas est-il fréquent ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Beno Posté 11 Septembre 2012 Auteur Partager Posté 11 Septembre 2012 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Message populaire. Dan Posté 11 Septembre 2012 Message populaire. Partager Posté 11 Septembre 2012 J'ai testé ce fichier sur mon serveur, et manifestement ça boucle ! Dans ce cas, renomme ton fichier exclusivites.php en exclusivites_2.php et change ta dernière règle. Ceci fonctionne chez moi : RewriteEngine OnRewriteCond %{QUERY_STRING} ^page=([0-9]+)&choix_tri=(.*)$RewriteRule exclusivites.php http://www.le-hub.com/ventes-en-exclusivite/page-%1/tri-%2? [R=301,L]RewriteRule ventes-en-exclusivite/page-([0-9]+)/tri-(.*)? exclusivites_2.php?page=$1&choix_tri=$2 [L] J'imagine que c'est pour de l'optimisation SEO que tu fais une 301 ? 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Beno Posté 11 Septembre 2012 Auteur Partager Posté 11 Septembre 2012 (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é 11 Septembre 2012 par Beno Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 11 Septembre 2012 Partager Posté 11 Septembre 2012 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 Le reste du monde verra la nouvelle URL ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Beno Posté 11 Septembre 2012 Auteur Partager Posté 11 Septembre 2012 Super, merci beaucoup ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Beno Posté 11 Septembre 2012 Auteur Partager Posté 11 Septembre 2012 Je tombe sur une page d'erreur maintenant, 404. Par contre je dois quitter le boulot, je reprends demain. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 11 Septembre 2012 Partager Posté 11 Septembre 2012 Il faut : - renommer le fichier - le changer dans la dernière règle ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Beno Posté 11 Septembre 2012 Auteur Partager Posté 11 Septembre 2012 Si c'est bon ça fonctionne ! Je saisissais mal l'URL En tout cas merci beaucoup pour ton aide ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Beno Posté 12 Septembre 2012 Auteur Partager Posté 12 Septembre 2012 J'en profite pour éclaircir 2 petites choses et essayer de comprendre un peu mieux 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 More sharing options...
Message populaire. Dan Posté 12 Septembre 2012 Message populaire. Partager Posté 12 Septembre 2012 Le ? sur la dernière ligne est un oubli de ma part. J'ai copié/collé la règle et ai oublié de l'enlever L'indicateur de début de chaîne est optionnel... surtout que selon la config du serveur il peut y avoir aussi un / qui débute la chaîne. Donc, pour couvrir tous les cas, ceci est plus portable pour les débuts de chaînes : ^/? Cela signifie qu'au début de ligne il peut y avoir optionnellement un caractère / 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Beno Posté 12 Septembre 2012 Auteur Partager Posté 12 Septembre 2012 Maintenant tout est clair ! Encore merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
suzanne Posté 12 Septembre 2012 Partager Posté 12 Septembre 2012 salut j'ai profitée de votre question réponse pour résoudre mes soucis merci c'est ça l'utilité des forums. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant