IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[URL rewriting] Rediriger les anciennes URL vers les nouvelles pour éviter le duplicate content Google


Sujet :

Apache

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut [URL rewriting] Rediriger les anciennes URL vers les nouvelles pour éviter le duplicate content Google
    Bonsoir à toutes et à tous,

    J'ai récemment souhaité réécrire les urls de mon site, et j'ai commencé par la gestion multilingue. Pour transformer une url de type :
    www.monsite.com/contact.php?langue=fr
    en :
    www.monsite.com/fr/contact
    j'ai modifié mon fichier .htaccess de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /
    RewriteRule ^(fr|en)/(.*) $2.php?langue=$1 [QSA,L]
    Jusque là, pas de problème, tout fonctionne

    Seulement, mon site a des références dans les résultats de recherche de Google, Yahoo et Bing. Pour éviter les contenus dupliqués, sanctionnés par Google, il me faut donc rediriger ces anciennes adresses (de type www.monsite.com/script.php?langue=fr) vers les nouvelles (de type www.monsite.com/langue/script). J'ai donc à nouveau modifié mon .htaccess de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /
    # Réécriture qui était OK
    RewriteRule ^(fr|en)/(.*) $2.php?langue=$1 [QSA,L]
    # Redirection 301 : pb
    RewriteCond %{QUERY_STRING} langue=(fr|en)
    RewriteRule ^(.*)\.php http://www.monsite.com/%1/$1? [R=301,L]
    Et là, plus rien ne fonctionne !!! Que je clique sur un lien de mon site ou un lien Google vers mon site, la barre d'adresse indique correctement l'url réécrite dans Firefox, mais j'obtiens le message d'erreur suivant :
    " La page n'est pas redirigée correctement
    Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas. "

    Jusqu'à peu, je faisais des .htaccess basiques et j'ai du récupérer des infos un peu partout - y compris sur developpez.com - pour commencer à comprendre un peu mieux les RewriteRule.

    Mais là, je bloque. Deux jours que je m'arrache les cheveux sur ce problème.

    Pour ne pas devenir chauve, j'ai préféré faire ce post, en espérant que quelqu'un pourra m'aider !

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut [URL rewriting] .htaccess : empêcher une boucle sans fin de redrection
    Merci Mac (Giver ?) de t'être intéressé à mon problème !!!

    Mais n'ayant pas consulté ta réponse, j'ai continué à chercher sur Internet et je me suis rendu compte que les règles de réécriture de mon fichier .htaccess bouclaient sans fin.

    J'ai trouvé une solution en consultant les pages suivantes :
    - Utilisation d'un paramètre internal_redirect (qui pourrait s'appeler "choucroute", cela n'a pas d'incidence) pour stopper la boucle :
    Voir la page
    - Et surtout une explication claire et précise. Utilisation d'un paramètre stop (peu importe le nom) pour stopper la boucle :
    Voir la page

    Du coup, pour celles et ceux qui sont intéressés par cette discussion, voici le fichier .htaccess corrigé qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /
    RewriteRule ^(fr|en)/(.*) $2.php?langue=$1&stop=true [QSA,L]
    RewriteCond %{QUERY_STRING} !stop=true
    RewriteCond %{QUERY_STRING} langue=(fr|en)
    RewriteRule ^(.*)\.php http://www.monsite.com/%1/$1? [R=301,L]
    Merci encore à toi, Mac : si j'avais consulté ta réponse plus tôt, cela m'aurait évité de m'arracher quelques cheveux de plus !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2011, 17h43
  2. [URL rewriting] Rediriger les pages sur /index.php
    Par doudoustephane dans le forum Apache
    Réponses: 4
    Dernier message: 23/11/2010, 22h10
  3. Réponses: 2
    Dernier message: 05/11/2008, 10h38
  4. Réponses: 1
    Dernier message: 29/02/2008, 17h54
  5. [URL Rewriting] Infos sur l'URL Rewriting
    Par Thomad dans le forum Apache
    Réponses: 2
    Dernier message: 16/09/2007, 00h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo