Jump to content
Beno

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

Rate this topic

Recommended Posts

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.

Share this post


Link to post
Share on other 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 !

Share this post


Link to post
Share on other 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]

Edited by Beno

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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]

Share this post


Link to post
Share on other sites

Le flag [L] est bien en place.

Je suis sur serveur mutualisé malheureusement (Infomaniak).

Ce cas est-il fréquent ?

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

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 On

RewriteCond %{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 ?

  • Upvote 1

Share this post


Link to post
Share on other 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]

Edited by Beno

Share this post


Link to post
Share on other 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 !

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Il faut :

- renommer le fichier

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

Share this post


Link to post
Share on other sites

Si c'est bon ça fonctionne !

Je saisissais mal l'URL blush.gif

En tout cas merci beaucoup pour ton aide !

Share this post


Link to post
Share on other 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 ?

Share this post


Link to post
Share on other sites

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 /

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By kevinjoseph
      Bonjour, j’ai un gros problème sur mon site Wordpress . Du jour au lendemain, mon site wordpress fais une redirection vers un autre site wordpress que j’ai crée ,sans que je touche à quoi que ce soit. Quand j’essai d’aller sur l’admin pour désactiver les plugins et voir d’où peut venir le problème. Impossible d’accéder, sa me redirige vers l’admin de l’autre site. Au final il est impossible que j’accède au site via (google, la bare de recherche, les favoris, l’admin…) pour voir ce qu’il fonction pas, j’ai juste accès au FTP. J'ai essayé de voir d'où pouvez venir ce bug en supprimant les plugins, le théme, mes derniers modifications, regarder sur le .htaccess si il y avais quelque par le nom de domaine de l'autre site écrit. Ca n'a rien changer, le site continue de ce rediriger automatiquement vers l'autre site. Si vous avez une idée d’où sa peut venir ou comment faire pour arranger ça et surtout comment éviter que sa ce reproduise. Sa m’aiderai beaucoup, merci d’avance.
      voici le code du .htaccess:
       
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>

      # END WordPress
      ~   Ludovic • 16:28    
    • By leobk
      Bonjour,
       
      J'ai un sous-domaine www.fr.monsite.com dédié pour la réservation des vols
      j'ai redirigé récemment ce sous-domaine vers le site principal www.monsite.com et le nombre des erreurs 404 a explosé
      un nombre énorme d'URLs de type :
      www.fr.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
      redirigent vers :
      www.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
       
      L'URL de destination est biensur introuvable 404, puisque les variables utilisés dans les deux sites ne sont pas identiques
      Voici la structure d'URL si on fait une recherche de vol sur le site principal :
      https://www.monsite.com/fr/resa?depart=SXF&arrivee=NBE&aller=2017-11-10&retour=2017-11-30&adultes=1&enfants=1&bebes=0&departureDateTime_D=&arrivalDateTime_D=&departureDateTime_R=&arrivalDateTime_R=&fareGroupName=&fareGroupName_R=&sens=2&currency=EUR&airline=&flightNumber=&flight=&flight_retour=&webview=0&felxibilite=2
       
       
      existe-il un moyen pour rediriger l'ensemble des URLs dynamiques du sous-domaines vers une URL statique du domaine principale (autre que l'accueil)?
       
       
    • By fbern
      Bonjour
       
      j'ai un vieux site sous wordpress, et je voudrais faire une dizaine de redirections.
      Je n'ai pas besoin d'expressions régulières, c'est du 1 pour 1.
      N'étant pas développeur, pouvez vous m'aider: dois-je obligatoirement utiliser mod rewrite ?
      Est-ce que vous n'auriez pas une solution plus simple car je n'ose pas mettre les mains dans Apache?
      merci
    • By PieceMobile
      Bonjour,



      J'espère que vous allez tous bien.



      Auriez vous une solution pour rediriger ( via une règle htaccess par exemple ) :



      http://www.mon-site.com/blabla.html?ps_mobile_site=1



      vers : http://www.mon-site.com/blabla.html



      A mon avis, s'agissant d'un paramètre d'URL, de ce que j'ai cru comprendre -a mon petit niveau- c’était pas possible, mais ça me dépannerai pas mal si l'un d'entre vous avait une idée.



      Merci d'avance





×
×
  • Create New...