Guest faz Posté 2 Novembre 2004 Posté 2 Novembre 2004 Bonjour Je viens de lancer la V2 de mon site (http://www.francomix.com) tournant désormais sous SPIP. Mes pages articles, rubriques, brèves sont à l'origine sous la forme : article.php3?id_article=12 rubrique.php3?id_rubrique=12 breve.php3?id_breve=12 Pour rendre mes url plus lisibles, compréhensibles, et pertinentes pour les MR et les recherches j'ai mis des règles de réécritures dans le htaccess qui permettent de transformer l'url d'un article par ex en : article=Saint_ Germain___Tourist=34.html Ici l'url reprend le titre de l'article et l'id correspondant. Tout fonctionnait parfaitement . Sauf que les stats fournies par mon hébergeur ne prenaient pas en compte ces url et affichaient seulement /article. Pas très précis. Mon hébergeur m'a dit de supprimer le caractère = et de le remplacer par un -. Très bien je change les règles de réécriture dont voici le code : RewriteEngine onRewriteRule ([a-z]+)-([^=]*)-([0-9]+).html$ /$1.php3?id_$1=$3 [QSA,L] et les nouvelles url deviennent par ex pour l'article de st germain : article-Saint_ Germain___Tourist-34.html Ok. Sauf que Google étant passé par mon site entretemps à référencé toutes les pages avec les =. Et là est mon problème. Je ne voudrais pas risquer le duplicat-content de Google. On sait jamais Donc on m'a parlé de la redirection dans le htaccess avec le Mod_rewrite et le code 301 pour rediriger une page du style article=Saint_ Germain___Tourist=34.html vers article-Saint_ Germain___Tourist-34.html mais je n'y connais rien en rewriting rules. Merci pour votre aide Philippe
Dan Posté 2 Novembre 2004 Posté 2 Novembre 2004 Salut Philippe, et bienvenue à bord du Hub ! Je ne m'en ferais pas si j'étais toi. Les anciennes URLs vont disparaître et Google va les laisser tomber. Pas de souci pour le contenu dupliqué, à partir du moment où plus rien ne pointe vers les anciennes (avec le = ) Dan
Guest faz Posté 2 Novembre 2004 Posté 2 Novembre 2004 Bon merci de me rassurer j'avoue que ça m'inquiétait Par contre ça m'intéressait quand même de faire une redirection car les visiteurs qui cliquent dans Google sur une ancienne URL se retrouvent sur la page 404 et ça le fait pas vraiment n'est ce pas ? Pas bon pour l'image du site
Dan Posté 2 Novembre 2004 Posté 2 Novembre 2004 Dans ce cas, tu peux rediriger tes anciennes adresses de telle sorte: RewriteRule (.+)=(.+)=(.+)\.html $1.php3?id_$1=$3 [QSA,L] Dan
Guest faz Posté 2 Novembre 2004 Posté 2 Novembre 2004 Merci J'ai réussi à faire fonctionner avec RewriteRule ([a-z]+)=([^=]*)=([0-9]+)\.html$ /$1-$2-$3\.html [QSA,L] Ici ce qui est pas encore top c'est que article=Charles_Trenet___Le_fou_chantant=89.html par ex s'affiche dans la barre d'adresse. C'est possible d'afficher la bonne URL avec les - Sinon ça ne fonctionne pas avec RewriteRule ([a-z]+)=([^=]*)=([0-9]+)\.html$ /$1-$2-$3\.html [QSA,R=301,L] Le code 301 ne veut pas passer Ton script me renvoit une erreur 404
Dan Posté 2 Novembre 2004 Posté 2 Novembre 2004 (j'avais oublié le \.html donc le 404 était normal ) Pour avoir un changement dans la barre d'adresse, il faut une redirection externe avec le flag R=301. Donc, il faut que ta règle soit: RewriteRule ([a-z]+)=([^=]*)=([0-9]+)\.html$ http://www.domaine.tld/$1-$2-$3\.html [QSA,R=301,L]
Guest faz Posté 2 Novembre 2004 Posté 2 Novembre 2004 Merci http://www.domaine.tld/$1-$2-$3\.html .tld c'est quoi ? moi je met .com par exemple ? Bon ouff c'est génial : RewriteRule ([a-z]+)=([^=]*)=([0-9]+)\.html$ http://www.francomix.com/$1-$2-$3\.html Renvoi sur ma nouvelle URL et ça fonctionne Un grand merci à toi Dan Ca faisait 4 jours que j'étais coincé Donc si je résume R=301 va dire à Google qui'l faut oublier l'ancienne url ? Quand Google aura fait le ménage je pourrais virer ce script ?
Guest faz Posté 2 Novembre 2004 Posté 2 Novembre 2004 Bon j'ai eu peur 2 minutes j'avais oublié d'ajouter [QSA,R=301,L] Mais tout est ok quand même
Dan Posté 2 Novembre 2004 Posté 2 Novembre 2004 Oui, le code 301 dira à Google (et aux autres moteurs) de remplacer l'ancienne URL par la nouvelle. C'est assez simple quand on n'oublie pas qu'une redirectin externe (avec renvoi d'une entête autre que la 302) passe automatiquement par une URL complètement définie (http://....) A+ Dan PS: TLD signifie Top Level Domain , donc à remplacer par celle qui s'applique dans ton cas
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant