Eviter le duplicate content sur les archives des catégories
Par défaut, WordPress contient un bug qui provoque du duplicate content sur les pages d’archives des catégories. Pourtant, il existe une solution simple pour éviter ce problème.
Dans WordPress, l’adresse URL vers les catégories ressemble par défaut à ceci : http://example.com/cat/non-classe/
Niveau SEO et référencement naturel, il serait mauvais d’avoir une page qui reprend exactement les mêmes articles dans le même ordre, et avec les mêmes extraits.
Avez-vous déjà essayé ces URLs là ?
- http://example.com/cat/non-classe/non-classe/non-classe/
- http://example.com/cat/toto/blabla/non-classe/
On remarque que la page ne provoque pas d’erreur 404 et que les pages sont identiques… Par conséquent, nos pages sont dupliquées et on obtient un duplicate content assez désagréable. De plus, si des référenceurs malins s’en prennent à vous, ils diffusent ces URLs pour vous plomber le référencement de votre site Internet.
Pour éviter à ce problème, copiez le code suivant dans le fichier functions.php
présent à la racine de votre thème :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
add_action( 'wp', 'baw_non_duplicate_content' );
function baw_non_duplicate_content( $wp ) {
global $wp_query;
// On cherche à naviguer dans une catégorie
if( isset( $wp_query->query_vars['category_name'], $wp_query->query['category_name'] ) )
{
global $wp_rewrite;
$paged = isset( $wp_query->query_vars['paged'] ) && (int)$wp_query->query_vars['paged']>1 ?
'/'.$wp_rewrite->pagination_base.'/'.(int)$wp_query->query_vars['paged'] : '';
// On récupère l'url de la catégorie désirée, et l'url actuelle
$correct_url = get_term_link( $wp_query->query_vars['category_name'], 'category' );
if( is_string( $correct_url ) && $correct_url )
{
$correct_url .= $paged;
}
$actual_url = home_url( $_SERVER['REQUEST_URI'] );
// Si les urls sont différentes, on redirige vers la vraie url de la catégorie
if( is_string( $correct_url ) && $correct_url != $actual_url )
{
wp_redirect( $correct_url, 301 );
die();
}
}
}
[/pastacode]
N’hésitez pas à mettre en place cette astuce sur tous vos sites WordPress pour éviter le duplicate content qui est tant détesté et chassé par les pro du SEO !
66 Commentaires
Une astuce intéressante, on n’y pense pas forcément. Par contre si l’URL est linkée à aucun endroit, il y a peu de chance que l’internaute tombe dessus et donc fasse un lien vers cette page. Donc ça ne risque pas de “surcharger” le code pour rien ?
Hello
Non car ici aucune requête supplémentaire n’est faite, on regarde juste ce que WordPress a déjà en mémoire, donc on perds peut-être une nanoseconde ;)
Le truc c’est qu’il parait que des vilains référenceurs peuvent s’amuser à volontairement backlinker vos URLs duplicate dans le but de vous faire sombrer côté SEO.
Voilà !
Franchement desfois wordpress complique les choses pour rien, il te crée des pages dont tu veux pas!
Sinon pour le référençage des pages dupliquée, tu peux mettre une balise canonical ;)
WordPress ne crée pas ces URLs c’est bien le problème. En fait le soucis réside dans le fait que le parsing de la requête est un peu bancale et devrait à mon gout rediriger comme le propose mon astuce.
ps : Merci à Jo de me faire la vidéo, je suis un peu pris ces temps-ci …
Tu penses que la balise canonical suffit pour palier au problème ?
ps2 : on dit référençage aussi ? Je pensais juste “référencement”, mais je suis pas bon SEO, je veins peut-etre d’apprendre un truc.
Merci pour cet astuce, je me demandais justement comment éviter cela, et je sais qu’avec toi, ce sera de façon sécurisée ^^
Merci Rodrigue ;)
@Julio : effectivement je n’avais pas pensé au NSEO… mais oui du coup tu as raison, il vaut mieux quelques lignes de code pour s’en protéger.
Sinon pour “référençage”, on est 2. Pas certain que ce soit français. ;-)
Pour la balise canonical, logiquement ça devrait aider, mais avec Google qui fait un peu ce qu’il veut, je ne pense pas que ce soit suffisant. C’est mieux que rien, mais s’il y a mieux (comme ta solution), autant appliquer une autre méthode.
Ce que je trouve tout de même bizarre avec ce bug, c’est qu’il n’est pas présent sur les archives des tags.
Pourquoi ? That’s the question !
Chapeau bas! Très efficace.
J’allais poser la question de la performance mais pour une nanoseconde dans un cas précis je vais m’abstenir.
@jo : car les tags n’ont pas de parent, c’est une taxo non hiérarchique. Les cat peuvent donc avoir une url contenant plusieurs éléments, le dernier étant le dernier enfant. Les tags non, donc si l’url contient un élément de trop, WordPress te sort une 404 ;)
@jm: Oui quand tu lis le contenu d’un array, ça ne mange rien ;)
@JuJu (je peux ?) : En effet, expliquer comme ça, c’est tout de suite plus logique !
Merci pour l’info ^^
Nan tu peux pas, Juju c’est ma soeur …
Ce bug existe même si on a une structure de permalien comme suit: /%postname%/ ?
@William : Oui, ce bug est présent quelque soit la structure des permaliens !
Ce bug est connu depuis plusieurs mois par les devs et je ne sais pas comment ça va finir, il a été corrigé, puis rebug et depuis plus d’un an, rien n’a changé la discution n’avance pas :/
Le bug n’est pas présent si vous n’utilisez pas la structure de permaliens, donc /?cat=2 ne peut pas reproduire le bug.
Bon pour autant, je préfère avec les permaliens et mon astuce ;)
Je vais faire mon chieur mais c’est pas mieux de faire une 301 pour éviter la duplication “à la source” ?
@Pixgeeks : Le code fait une redirection 301 => wp_redirect( home_url( $correct_url ), 301 ); :)
Merci pour l’astuce, c’est clair qu’on y pense pas souvent…Pourtant Google sanctionne facile le duplicate content. Il faudra que je teste ce script sur mes sites ;)
Bonjour
Bravo pour l’article, non seulement c’est clair mais ça ne va pas vers quatre chemins, j’ai vite compris ce qu’il fallait faire. Une astuce à appliquer sans attendre,
Merci beaucoup
A bientôt
Hello,
Super idée, cependant le code ne marche pas du tout sur mes blogs.
De plus, le add_action ne devrait-il pas être placé après la fonction ?
@pixgeeks: Si, vas-y, montre nous comment faire alors, merci d’avance.
@Julio : Bin euh, j’ai envie de dire que ton code fait déjà une 301 =D
Oui mais il dit “à la source”, j’attends de voir.
Merci beaucoup!!! A ne pas négliger quand on s’intéresse de près ou de loin au SEO Bug WP quand tu nous tiens …
Génial ! merci de l’astuce mais pourquoi avous enlevez pas le dossier réécrit /cat/ c’est possible avec wordpress seo je crois non ?
Oui mais tout le monde n’a pas le besoin, l’envie, le savoir d’enlever ce préfixe, ceci est même justement un autre besoin, un autre problème, une autre astuce ;)
Oui là j’avoue que je me posais la même question que WILOOOO… Qui fait du SEO WP sans utiliser wordpress SEO ?
Auquel cas, il permet d’enlever le préfixe /categorie/
Je me demande si j’ai bien compris de quoi on parle, en fait ???
D’ailleurs ce post fort intéressant m’amène à me poser une autre question relative au duplicate content… Sur WP il est courant d’attribuer un article à plusieurs catégories.
Du coup, le même extrait est repris sur les deux URLS des deux catégories, cela ne pénalise t-il pas le référencement ?
N’est-ce pas une forme de duplicate content ?
Bonne soirée,
Fabi
C’est est une et il me semble que SEOMIX avait une parade, je vais chercher … au premier qui trouve ;)
Je l’ai ^^
http://www.seomix.fr/duplication-de-contenu-et-optimisations-evidentes/
Bravo, désolé je n’ai plus de médailles …
Merci pour le bout de code, Sinon axe-net parle de la même problématique avec une approche différente le duplicate et wordpres, je note ta méthode.
bonjour,
dans le même ordre que le commentaire de wiloooo, j’ai moi aussi enlevé le dossier “cat”, du coup est ce que l’astuce proposée à un intérêt pour moi ou ça ferait double emploi?
@Romain : l’astuce fonctionne quelque soit la base de la catégorie ;)
Julio utilise $wp_query->query_vars[‘category_name’] pour récupérer le chemin de la catégorie. Que la base soit cat, category ou autre chose ne changera rien.
@jonathan : j’ai rajouté le code, je vois pas trop la différence mais je dois pas être assez calé pour ça ;)
Merci, pour ce code, j’ y connais rien , mais je te fait confiance et l’est copier/coller dans mon fichier..C’est pas le genre de chose qu’ on peut vérifier finalement..
Salut,
J’ai été très surpris de voir qu’il est effectivement possible d’arriver à une catégorie depuis plusieurs URLs !
Hallucinant cette “faille” quand même, tu as contacté le support WP ?!
Bon, je sais ce qu’il me reste à faire : Merci pour ce script Julio ! ;-)
Thank Good Job Julio
Bien vu en effet, c’est un soucis dans wordpress cette mauvaise gestion des urls, à côté de ça je conseil toujours de mettre en place une canonical même si c’est plutôt une rustine elle est très pratique ^^ car malheureusement ce n’est pas le seul bug d’url’s sur WordPress …
en effet, je ne sais pas si c’est mon plugin seo qui fait ça, mais il y a bien un canonical qui redirige vers la bonne url.
Mais tant qu’a faire avec du NSEO, on peut aussi ajouter des paramètres inutiles du genre :
?id=mon-negative-seo
qui seront considérés comme duplicate
@Attila : Pour les paramètres en GET sur les URLs, il suffit d’ajouter un Disallow: /*? dans le fichier robots.txt pour que ces pages là ne soient pas prise en compte ;)
Plus d’infos sur cet article : robots.txt pour WordPress
Ah oui effectivement. Il faut juste espérer ne pas avoir besoin d’un paramètre dans l’url.
Si par exemple on a un lien qui provient de twitter ou rss avec un ?utm_source dedans, il ne sera pas suivi par google
C’est pareil pour les ?utm_source, on s’en moque de les indéxés et ça fera du duplicate content si on le fait.
Cela sert juste à donner une indication à Google Analytics.
Salut, je suis en cour de test de SeeUrank Suite = Falcon + Webtools de Yooda et toutes mes urls de catégories sont considérés comme cassés, c’est plutôt embêtant..est ce le script qui provoque ca? Merci^^
Merci pour ce hack WordPress très utile !
Entre les archives et les tags, tout cela peut parfois s’avérer néfaste sans qu’on comprenne vraiment pourquoi et quand la solution est si simple, aucune raison de se priver !
@GWEN
J’ai le même problème avec SeeRank alors que je n’ai pas encore mis le code proposé. Pour moi,j’ai comme l’impression que le bogue de SeeRank est le diagnostic erroné mais il y a effectivement un pb avec nos WordPress… sans garantie
Bonjour,
Je ne touche pas trop au code.
Je sais trouver et ouvrir le fichier function.php mais comment le modifier sans l’altérer…
@Tendances: Il suffit d’ouvrir le fichier, de C/C le code dedans et de sauvegarder.
Donc finalement je l’ai collé juste à la suite de la dernière ligne mais je n’ai pas l’impression que ça ait marché.
Car mes articles en non classé redirige vers la page classée dans la bonne catégorie.
/chronique/chronique-la-passion-du-sport-mais-pas-que-3/
/non-classe/chronique-la-passion-du-sport-mais-pas-que-3/
J’espère être clair ;)
@Tendances: Ici on parle uniquement des pages des catégories et non pas des pages d’un article. C’est pour cela qu’il n’y a pas de redirection sur vos articles.
L’astuce de l’article permet de régler le problème sur la page catégorie et pas sur la page d’un article (voir les URLs d’exemple dans l’article).
Bonjour,
Pouvez-vous m’éclaircir comment des référenceurs malins peuvent profiter du duplicate content sur les archives des catégories pour plomber le référencement d’un certain site Internet. Je n’ai pas bien saisi ce point.
@Mima: S’il est possible d’accéder à la même page avec un nombre infini d’URL, alors n’importe qui peut indéxer une de ces URLs à votre insu.
Bonsoir! Heu Julio, chez moi le code ne crée aucun changement. Mais dans les commentaires, j’ai lu que le code fonctionne en effectuant une redirection. C’est donc que, avant d’insérer le code, la redirection s’effectuait déjà sur mon blog, je n’en avait donc pas besoin ? Etrange..
Pensez-vous que cela soit du à l’ajout des plugins PermalinkFinder, Auto Redirect 404 et Redirection ?
(Eh oui… j’ai les 3, je suis un parano du 404 et du duplicate content… Les 3 plugins ne se court-circuitent t-ils pas ? C’est hors-sujet donc entre parenthèse!) Merci :-)
Bonjour,
Excellent et très utile.
J’ai toutefois une question (je ne suis pas un programmeur chevronné) : comment ce code gère t-il le https ? Lors de l’installation d’un certificat HTTPS, toutes les URL sont doublées sur le site, avec le même contenu, seuls changent http et https. Ce code gère t-il ce problème potentiel ? Merci du retour.
@David: Ce code concerne uniquement le problème avec les catégories. Ça ne touche pas au cas du SSL ou non.
@David : Ce soucis doit être réglé via HTACCESS, tu dois forcer une redirection sur l’un ou l’autre.
Bonjour et merci pour l’article,
Une question particulière : je suis en train de réaliser une boutique sous Woocommerce, le référencement de produits est potentiellement difficile car produits non uniques, donc je redoute de classer certains produits dans plusieurs catégories.
Une question toute simple avez vous déjà testé cette fonction avec une boutique woocommerce ?( j’ai l’impression que ce plugin fait déjà beaucoup de modifs dans le wordpress original)
Me recommandez vous la mise en place de cette fonction pour ma boutique woo ?
merci :)
bonjour après sa il y aura plus de duplicate content sur les categories et tags ?
Bonjour,
J’ai installé ce code dans mon fichier functions.php et ça conduit ma page administration en erreur suivant:
Parse error: syntax error, unexpected end of file in /homepages/9/d507077369/htdocs/wordpress/wp-content/themes/mantra/admin/admin-functions.php on line 230
Je ne sais pas comment réglait ce problème, car je n’ai pas accès à ma page de connexion mais heureusement que le site s’ouvre en mode visiteur.
bonjour, c’est vraiment penalisant du duplicate content sur les categories ? je pense pas de mon coté
Ah bah cool ! Je vais l’ajouter dans les fonctions de mon blog ! Voilà un blog que j’apprécie beaucoup de par ces nombreuses astuces sur WordPress. Merci. :)
bonjour ont l’installe ou ce code après quel ligne il y en a tellement :/
bonjour,
je viens peut être un peu tard sur l’article mais j’ai un soucis que je n’arrive pas à régler…
j’ajoute automatiquement une image à chacun des articles de mon blog.
j’ai créé une page qui n’affiche les articles que d’une catégorie et par conséquent la page affiche l’équivalent d’une page d’archives de catégories.
Le soucis c’est que sur chaque article j’ai mon image (200×300) et en plus son équivalent en plus grand (400×600), et c’est bien moche.
Une idée pour qu’une seule image s’affiche comme sur ma page d’accueil?
Merci d’avance!!
Vraiment intéressant cet article, par contre peux-tu préciser (pour les novice dans mon genre) le chemin exacte ou il faut inséré ce code ?
Bonjour
J’ai ajouté votre code et mon site est maintenant inaccessible ! aidez moi ! Page blanche
C’est bon, j’ai réparé mais votre code ne fonctionne pas ^^
Bonjour,
Merci pour cet article. Afin de faire bénéficier aux internautes d’un complément d’information exclusif, je vous propose une autre source que nous venons de publier, qui donne notamment des précisions afin d’éviter d’avoir du contenu dupliqué sur son site e-commerce : http://www.lafabriquedunet.fr/seo/articles/eviter-duplicate-content-site-ecommerce/
Encore merci et à bientôt,
Adrien.