SEO

Canonical et hreflang : comment bien les implémenter (et les erreurs qui les annulent)

Ce que fait la balise canonical, ce que fait hreflang, comment les combiner sur un site multilingue avec x-default, et les erreurs qui poussent Google à les ignorer.

La balise rel="canonical" indique aux moteurs de recherche quelle URL est préférée lorsqu’un même contenu est accessible depuis plusieurs adresses. Les attributs hreflang indiquent quelles versions dans d’autres langues ou régions existent pour une même page. Ils ne sont pas en concurrence : canonical consolide les doublons au sein d’une langue et hreflang relie les équivalents entre langues. Chaque version linguistique doit avoir sa propre canonical autoréférente et un jeu complet de hreflang pointant vers toutes les autres, elle-même comprise.

Cet article explique comment implémenter les deux correctement, quel est le rôle de x-default et quelles erreurs concrètes font que Google les ignore.

Ce qu’est l’URL canonique

Une même page est souvent accessible depuis plusieurs URL : avec et sans barre finale, avec des paramètres de suivi (?utm_source=...), avec www et sans, en HTTP et en HTTPS. Pour les moteurs, ce sont des adresses distinctes. Si vous ne dites pas laquelle vous préférez, ils en choisiront une et répartiront les signaux entre toutes.

<link rel="canonical"> lève cette ambiguïté depuis le <head> :

<link rel="canonical" href="https://blog.aimran.es/fr/articles/canonical-et-hreflang-implementation/" />

Règles de base, selon la documentation de Google :

  • Utilisez des URL absolues, avec protocole et domaine.
  • Une seule balise canonical par page. S’il y en a plusieurs, Google les ignore toutes.
  • Pointez vers une URL qui renvoie 200 et est indexable. Une canonical vers une page en noindex ou qui redirige est contradictoire.
  • La canonical autoréférente (la page se désigne elle-même) est correcte et recommandée : elle indique explicitement la bonne version.

Google traite la canonical comme un signal fort, pas un ordre. Si le contenu de l’URL canonique ne ressemble pas à celui de la page qui la déclare, il peut en choisir une autre. C’est pourquoi la canonical ne sert pas à « rediriger » des pages différentes ; pour cela, il y a le 301.

Ce qu’est hreflang

hreflang signale qu’une page a des versions équivalentes dans d’autres langues ou régions, pour que le moteur montre à chaque utilisateur celle qui correspond à sa langue. On le déclare dans le <head> avec une balise par version :

<link rel="alternate" hreflang="es" href="https://exemple.com/es/guia/" />
<link rel="alternate" hreflang="fr" href="https://exemple.com/fr/guide/" />
<link rel="alternate" hreflang="x-default" href="https://exemple.com/es/guia/" />

Les valeurs utilisent des codes de langue ISO 639-1 (es, fr) et, en option, de région ISO 3166-1 alpha-2 (fr-CA, en-GB). Il n’existe pas de code région seul : hreflang="ca" seul désigne le catalan, pas le Canada.

Les deux règles que presque tout le monde enfreint

  1. Réciprocité. Si la page en espagnol lie la française avec hreflang, la française doit lier l’espagnole. Google appelle cela les « return links » ; sans eux, les annotations sont ignorées.
  2. Autoréférence. Chaque page inclut aussi un hreflang vers elle-même. L’ensemble des balises doit être identique dans toutes les versions.

x-default

x-default indique quelle version afficher quand aucune langue déclarée ne correspond à celle de l’utilisateur (ou quand vous avez un sélecteur de langue). Il pointe généralement vers la langue principale du site. Il n’est pas obligatoire, mais recommandé.

Où le déclarer

Trois emplacements équivalents ; choisissez-en un et restez cohérent :

  • Des balises <link> dans le <head> (l’habitude pour les pages HTML).
  • L’en-tête HTTP Link: (pour les PDF et autres fichiers non HTML).
  • Le sitemap XML, avec des éléments <xhtml:link> dans chaque <url>. C’est l’option la plus pratique quand il y a beaucoup de pages, car un générateur peut maintenir la réciprocité automatiquement.

Comment se combinent canonical et hreflang

C’est la partie qui crée le plus de confusion. La règle est simple : la canonical de chaque version pointe vers elle-même, et le hreflang pointe vers toutes les versions.

Page canonical hreflang
/es/guia/ /es/guia/ es → /es/guia/, fr → /fr/guide/, x-default → /es/guia/
/fr/guide/ /fr/guide/ es → /es/guia/, fr → /fr/guide/, x-default → /es/guia/

L’erreur grave est de mettre l’URL espagnole comme canonical de la version française. Vous dites alors à Google que la française est un doublon de l’espagnole et qu’il ne faut pas l’indexer, ce qui annule complètement le hreflang. Ce sont deux pages différentes (langues différentes) ; chacune est canonique d’elle-même.

Liste de vérification

  1. Une seule balise canonical par page, absolue, vers une URL 200 et indexable.
  2. La canonical de chaque langue pointe vers sa propre URL.
  3. hreflang avec des codes valides (langue, ou langue-RÉGION).
  4. Le même jeu de hreflang dans toutes les versions, autoréférence comprise.
  5. x-default pointant vers la version par défaut.
  6. Les URL des hreflang correspondent exactement aux canoniques (même barre finale, même protocole).
  7. Si une version disparaît, elle est retirée des hreflang de toutes les autres.

Erreurs fréquentes

  1. URL relatives dans canonical ou hreflang. Google recommande des absolues ; les relatives sont facilement mal interprétées.
  2. Canonical vers la page d’accueil sur toutes les pages à cause d’une erreur de gabarit. Plus courant qu’on ne croit, et cela désindexe tout le site.
  3. hreflang sans return links. La cause numéro un de « sans balises de retour » dans Search Console.
  4. Mélanger les langues dans une URL. Si /guide/ affiche de l’espagnol ou du français selon le navigateur, il n’y a pas une URL par langue et hreflang ne peut pas fonctionner. Chaque langue a besoin de sa propre URL.
  5. Canonical vers une URL avec paramètres ou sans HTTPS. Pointez toujours vers la version propre et sécurisée.

Comment vérifier

Dans Search Console, l’outil d’inspection d’URL montre quelle URL Google a choisie comme canonique face à celle que vous déclarez. Si elles diffèrent, examinez le contenu dupliqué, les redirections et les liens internes : Google choisit souvent l’URL qui reçoit le plus de liens internes. Pour hreflang, tout validateur qui vérifie la réciprocité entre versions vous fera gagner des heures ; vous pouvez aussi générer les balises depuis une source unique de routes (comme ce blog) pour qu’elles ne puissent jamais se désynchroniser.

Conclusion

Canonical répond à « laquelle de ces URL dupliquées voulez-vous indexer ? » et hreflang à « quelles versions linguistiques de cette page existent ? ». Implémentez la première en autoréférente et absolue, la seconde comme un jeu complet et réciproque avec x-default, et n’utilisez jamais la canonical pour relier des langues différentes. Si vous le pouvez, générez les deux automatiquement depuis la même source de vérité : la plupart des erreurs apparaissent quand on les maintient à la main.

Sources et références

  1. Google Search Central : spécifier une URL canonique avec rel="canonical" et d’autres méthodes developers.google.com
  2. Google Search Central : indiquer à Google les versions localisées de votre page developers.google.com
  3. Google Search Central : gérer des sites multirégionaux et multilingues developers.google.com
  4. sitemaps.org : protocole des sitemaps sitemaps.org

Outils associés

Herramientas gratuitas de AIMRAN Tools que funcionan en tu navegador, sin registro.

Ver todas las herramientas
Articles de SEO