Canonicalisation et doublons
Le même contenu accessible à quatre URLs divise ses propres signaux en quatre. Ces actions désignent une URL comme la réponse et font pointer toutes les autres variantes vers elle : slash final, paramètres, protocole, www, pagination, syndication.
Pourquoi ce module existe
Sur la plupart des sites, les gains de position les moins chers sont ici : le travail est déjà fait, il ne reste qu’à le consolider.
Module B 12 actions n° 21 à 32 sur 410
-
021
Ajouter sur chaque page une balise rel="canonical" absolue et auto-référente
- Comment
- Ajoutez cette balise dans le <head> de chaque page indexable : <link rel="canonical" href="https://votresite.com/cette-page"> Le href doit être une URL absolue, pas relative.
- Sur la plupart des CMS, c’est une ligne de configuration : WordPress : Yoast ou Rank Math l’ajoutent automatiquement. Vérifiez sur quelques pages.
- Next.js : utilisez metadata.alternates.canonical dans la page ou le layout.
- Astro : utilisez Astro.site plus votre slug.
- · Pour les pages dynamiques, générez la canonical depuis l’URL de la requête. Exemple avec Express : app.use((req, res, next) => { res.locals.canonical = `${req.protocol}://${req.get('host')}${req.originalUrl.split('?')[0]}`; next(); });
- Vérification : affichez le source de 10 pages au hasard. Chacune doit avoir exactement une canonical, pointant vers elle-même.
- À éviter
- Faire pointer la canonical vers une autre URL que la page elle-même (si c’est vraiment voulu, c’est une autre action)
- Utiliser une URL relative dans le href de la canonical (elle doit être absolue)
- Avoir plusieurs balises canonical sur la même page (Google les ignore toutes)
- Oublier de canonicaliser les vues paginées (les pages 2, 3, etc. doivent pointer vers la page 1, ou vers une page « tout afficher »)
- Vérifier
- Faites un curl sur 10 pages au hasard. Chacune doit avoir exactement un <link rel="canonical"> dans le head.
- Le href de chaque canonical doit correspondre à l’URL de la page (paramètres retirés).
- Dans l’inspection d’URL de la Search Console, la « Canonical » et la « Canonical déclarée par l’utilisateur » doivent correspondre à l’URL inspectée.
-
022
Faire pointer la canonical des doublons inter-domaines ou syndiqués vers l’URL d’origine
- Comment
- Identifiez la relation. La page A sur domaine1.com et la page B sur domaine2.com ont un contenu substantiellement identique. L’originale est domaine1.com/page.
- Sur la page domaine2.com/page, ajoutez : <link rel="canonical" href="https://domaine1.com/page">
- Sur la page d’origine domaine1.com/page, la canonical pointe vers elle-même.
- Ajoutez au besoin des balises hreflang si les pages servent des marchés ou des régions différentes. La canonical et le hreflang sont des signaux indépendants — ils n’entrent pas en conflit.
- Vérifiez avec l’inspection d’URL de la Search Console sur l’URL dupliquée. La « Canonical » doit afficher l’URL d’origine.
- À éviter
- Canonicaliser entre domaines vers une page différente (le doublon doit contenir un contenu substantiellement identique)
- Oublier le conflit avec le noindex — si vous posez une canonical inter-domaines, ne mettez PAS aussi un noindex sur le doublon (Google y verra une contradiction)
- Utiliser une redirection 301 au lieu d’une canonical alors que vous voulez garder les deux URLs accessibles (301 quand les visiteurs doivent atterrir sur l’originale, canonical quand le doublon doit rester accessible tout en consolidant les signaux)
- Vérifier
- Sur la page dupliquée, affichez le source. Vérifiez la présence de <link rel="canonical" href="https://domaine-origine.com/page">.
- Passez le doublon dans l’inspection d’URL de la Search Console. Google doit indiquer l’originale comme canonique.
- Au bout de 2 à 4 semaines, cherchez site:domaine-doublon.com/page dans Google. Le résultat doit renvoyer vers l’originale.
-
023
Faire en sorte que canonical, hreflang, sitemap et liens internes emploient EXACTEMENT la même chaîne d’URL (protocole, slash, casse)
- Comment
- Fixez UNE forme d’URL et écrivez-la : protocole https, hôte avec ou sans www, slash final ou non, minuscules.
- Générez canonical, hreflang, sitemap et liens internes depuis la même fonction (par exemple une fonction url_for() unique dans vos gabarits) plutôt que de les écrire à la main.
- Recherchez les écarts : crawlez le site, exportez les canonical, les href hreflang et les <loc> du sitemap, et comparez-les chaîne par chaîne aux URLs finales (après redirection).
- À éviter
- Une canonical en https://exemple.com/page/ et un sitemap en https://www.exemple.com/page : deux signaux qui se contredisent
- Des liens internes vers http:// qui passent par une redirection à chaque clic
- Des hreflang écrits en relatif ou avec une casse différente de la canonical
- Vérifier
- Crawlez avec Screaming Frog : l’onglet Canonicals → « Non-Indexable Canonical » et les liens internes redirigés doivent être à 0.
- Prenez 5 pages : la canonical, le hreflang, le <loc> du sitemap et l’URL affichée après chargement doivent être la même chaîne, caractère pour caractère.
-
024
Consolider par des 301 les variantes exemple.com/, /index.html, avec et sans slash final, et en majuscules
- Comment
- Choisissez la forme canonique : avec ou sans slash final, sans /index.html, en minuscules.
- Au serveur, redirigez en 301 toutes les autres formes vers elle, en un seul saut. Apache : RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L] ; Nginx : rewrite ^(.*)/index\.html$ $1/ permanent;
- Pour la casse, redirigez les URLs contenant des majuscules vers leur version en minuscules (RewriteMap tolower sous Apache, ou un middleware).
- Mettez à jour les liens internes pour qu’ils visent directement la forme canonique.
- À éviter
- Répondre 200 sur /page et sur /page/ avec le même contenu (deux URLs indexables)
- Rediriger en 302 au lieu de 301
- Enchaîner deux redirections (http → https → slash final) au lieu d’une seule
- Vérifier
- curl -I sur /page, /page/, /page/index.html et /PAGE/ : une seule doit répondre 200, les autres 301 directement vers elle.
- Search Console → Pages : le motif « Page en double sans URL canonique sélectionnée par l’utilisateur » ne doit pas contenir ces variantes.
-
025
Désindexer la valeur maigre des corps de pagination ?page=2 et suivants : les garder indexables mais avec un contenu unique et une canonical vers elles-mêmes (pas vers la page 1)
- Comment
- Laissez les pages ?page=2 et suivantes indexables, avec une canonical vers elles-mêmes (pas vers la page 1, qui dirait à Google que leur contenu n’existe pas).
- Rendez chaque page de pagination distincte : title et H1 suffixés « — page 2 », liste d’articles différente, pas de chapeau recopié de la page 1.
- Retirez de ces pages le texte d’introduction long de la page 1 : il ne doit exister qu’une fois.
- Gardez des liens <a href> simples entre les pages (précédent, suivant, numéros), explorables sans JavaScript.
- À éviter
- Canonical de toutes les pages de pagination vers la page 1 : les articles profonds perdent leur chemin de crawl
- Mettre les pages 2+ en noindex, follow : à terme Google finit par ne plus suivre leurs liens
- Répéter le même title et la même description sur toutes les pages
- Vérifier
- Ouvrez ?page=3 : la canonical doit pointer vers ?page=3, le title doit mentionner la page.
- Search Console → Inspection de l’URL sur un article accessible seulement depuis la page 4 : il doit être découvert et indexé.
-
026
Paramétrer les URLs de tri et de filtre avec un noindex ou un blocage robots ; garder une seule canonical propre par produit ou catégorie
- Comment
- Listez les paramètres de tri et de filtre (?sort=, ?order=, ?color=, ?price_min=) et classez-les : ceux qui créent une page qu’on recherche (couleur d’un produit très demandée) et ceux qui ne font que réordonner.
- Pour les seconds, posez une canonical vers l’URL sans paramètre et, si le volume est énorme, bloquez-les dans robots.txt (Disallow: /*?sort=).
- Ne combinez pas canonical et Disallow sur les mêmes URLs : une URL bloquée n’est jamais lue, sa canonical non plus.
- Pour les filtres qui méritent d’être indexés, créez une URL propre (/chaussures/rouges/) avec son propre contenu.
- À éviter
- Bloquer dans robots.txt des URLs déjà indexées : elles restent dans l’index, sans pouvoir être désindexées
- Laisser des milliers de combinaisons de filtres explorables : le crawl s’épuise sur des doublons
- Canonical vers une page catégorie qui ne contient pas les produits filtrés
- Vérifier
- Search Console → Pages : le nombre d’URLs avec paramètres de tri dans « Explorée, actuellement non indexée » doit baisser.
- Dans les logs serveur, la part des hits de Googlebot sur des URLs à paramètres doit diminuer après 4 semaines.
-
027
Fusionner les pages quasi dupliquées (même intention, moins de 20 % de contenu propre) en une seule URL plus forte, et rediriger le reste en 301
- Comment
- Repérez les quasi-doublons : même requête visée, contenu à plus de 80 % identique (Screaming Frog → Content → Near Duplicates, seuil 90 %).
- Pour chaque groupe, gardez l’URL qui a le plus de trafic et de liens entrants ; intégrez-y ce que les autres avaient d’unique.
- Redirigez les autres en 301 vers elle et mettez à jour les liens internes.
- Retirez les URLs redirigées du sitemap.
- À éviter
- Fusionner des pages qui répondent à des intentions différentes (un guide et une page produit)
- Rediriger vers la page d’accueil au lieu de la page fusionnée
- Supprimer le contenu unique des pages absorbées au lieu de le reprendre
- Vérifier
- Toutes les anciennes URLs répondent 301 vers la page gagnante en un saut.
- Après 4 à 8 semaines, Search Console → Performances : la page gagnante reçoit les impressions cumulées des anciennes sur la requête visée.
-
028
Supprimer les pages qui ne sont que du gabarit et que Google regroupe comme doublons (fuite : clustering IndexingDupsLocalized)
- Comment
- Trouvez les pages dont le contenu propre est minime par rapport au gabarit : pages de tags à un article, fiches vides, pages de ville générées avec seulement le nom changé.
- Mesurez-les : texte principal (hors navigation et pied de page) sous ~100 mots, ou identique à d’autres pages hormis un mot.
- Pour chacune : enrichissez-la d’un contenu réellement propre, fusionnez-la avec une page proche, ou retirez-la (404/410 ou noindex) et enlevez les liens vers elle.
- À éviter
- Générer une page par ville ou par tag en ne changeant qu’un nom
- Garder des centaines de pages vides « au cas où » elles rankeraient
- Mettre ces pages en noindex tout en les laissant dans le sitemap
- Vérifier
- Screaming Frog → Content → Low Content Pages et Near Duplicates : la liste doit se réduire aux pages volontairement conservées.
- Search Console → Pages : « Page en double, Google n’a pas choisi la même URL canonique que l’utilisateur » doit baisser.
-
029
Donner à chaque page un <title> et une meta description uniques (les titles dupliqués déclenchent le regroupement en doublons)
- Comment
- Exportez tous les titles et meta descriptions (Screaming Frog → Page Titles → Duplicate ; Meta Description → Duplicate).
- Réécrivez chaque doublon pour qu’il décrive ce qui distingue la page : produit précis, ville, angle, numéro de page.
- Pour les gabarits (catégories, pagination, fiches), construisez le title à partir des champs propres à la page plutôt qu’un texte fixe.
- Laissez une meta description vide plutôt que dupliquée si vous ne pouvez pas en écrire une propre : Google en génère une depuis le contenu.
- À éviter
- Le même title « Accueil | Marque » sur plusieurs pages
- Des titles qui ne diffèrent que par la marque
- Une description par défaut du CMS copiée sur toutes les pages
- Vérifier
- Screaming Frog : Page Titles → Duplicate = 0 et Meta Description → Duplicate = 0 (hors pages en noindex).
- Recherchez site:votresite.com "texte du title" : une seule page doit sortir.
-
030
Fixer un domaine préféré et imposer la canonical en HTTPS ; rediriger HTTP vers HTTPS sur tout le site
- Comment
- Installez un certificat valide couvrant l’apex et le www (Let’s Encrypt est gratuit).
- Choisissez l’hôte préféré (avec ou sans www) et redirigez en 301, en un seul saut, les trois autres combinaisons (http, http+www, https+autre hôte).
- Ajoutez l’en-tête Strict-Transport-Security: max-age=31536000 une fois le HTTPS stable.
- Mettez canonical, sitemap et liens internes en https sur l’hôte préféré.
- À éviter
- Des redirections en chaîne http://www → https://www → https://
- Des ressources (images, scripts) encore chargées en http : contenu mixte bloqué
- Oublier le www dans le certificat : erreur de sécurité sur la moitié des liens entrants
- Vérifier
- curl -I http://exemple.com, http://www.exemple.com, https://www.exemple.com : chacune répond 301 directement vers l’URL préférée.
- Chrome DevTools → Console : aucun avertissement Mixed Content sur les pages principales.
-
031
Traiter les paramètres UTM et de tracking avec une canonical vers l’URL propre
- Comment
- Ajoutez sur chaque page une canonical absolue vers l’URL sans paramètres de tracking (utm_*, gclid, fbclid).
- Construisez la canonical côté serveur à partir du chemin, jamais en recopiant l’URL demandée.
- Ne mettez jamais de liens internes avec des UTM : ils écrasent la source réelle dans l’analytique et créent des URLs explorables.
- Si les UTM sont déjà indexées, laissez la canonical agir ; ne les bloquez pas dans robots.txt.
- À éviter
- Une canonical qui recopie l’URL avec ses paramètres
- Mettre des UTM sur les liens du menu ou du pied de page
- Bloquer ?utm_ dans robots.txt : Google ne voit plus la canonical
- Vérifier
- Ouvrez /page?utm_source=test&gclid=1 : la canonical doit être /page sans paramètres.
- site:votresite.com inurl:utm_ ne doit rien renvoyer après quelques semaines.
-
032
Localiser correctement les doublons : entre variantes régionales d’une même langue, c’est le hreflang qu’il faut, pas la canonical
- Comment
- Pour des variantes d’une même langue par pays (fr-FR, fr-BE, fr-CA), gardez une canonical vers elle-même sur chaque version.
- Reliez-les par hreflang : chaque page liste toutes les variantes, y compris elle-même, plus un x-default.
- Différenciez réellement les versions : devise, prix, livraison, mentions locales, numéros de téléphone.
- Vérifiez que les liens hreflang sont réciproques : si A cite B, B doit citer A.
- À éviter
- Canonical de fr-BE vers fr-FR : la version belge disparaît de l’index belge
- hreflang non réciproque : Google l’ignore
- Des codes invalides (fr-UK au lieu de en-GB, ou « be » au lieu de « fr-BE »)
- Vérifier
- Search Console n’a plus de rapport hreflang : crawlez avec Screaming Frog → Hreflang → « Missing Return Links » et « Inconsistent Language » doivent être à 0.
- Recherche Google avec le pays réglé sur Belgique : la version fr-BE doit sortir.
Continuer
Module suivant
← Module A / 20 actions
Crawl et indexation
Rien d’autre sur cette liste ne compte si Google ne peut ni récupérer ni indexer la page. Ces actions viennent en premier parce qu’elles sont la…
Module C / 16 actions →
Architecture et maillage interne
Les liens internes sont le seul facteur de classement que vous contrôlez entièrement. Ils disent à Google quelles pages comptent, et ils transportent…