Aller au contenu

Changement règles réécriture et référencement


Guest faz

Sujets conseillés

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 on
RewriteRule ([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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Dans ce cas, tu peux rediriger tes anciennes adresses de telle sorte:

RewriteRule (.+)=(.+)=(.+)\.html  $1.php3?id_$1=$3 [QSA,L]

;) Dan

Lien vers le commentaire
Partager sur d’autres sites

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 :(

Lien vers le commentaire
Partager sur d’autres sites

(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]

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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 ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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