Erreurs hreflang qui plombent le SEO international
Dix erreurs expliquent presque toutes les configurations hreflang cassées, et la plupart échouent en silence. Voici comment repérer chacune et la corriger.
La plupart des problèmes hreflang se ramènent à dix erreurs : liens retour manquants, absence d'auto-référence, codes de langue ou de région invalides, URL relatives, renvoi vers des pages non canoniques, x-default absent, méthodes d'implémentation mélangées, couverture partielle, versions alternatives bloquées, et l'idée que hreflang réglerait le contenu dupliqué. Chacune a un symptôme clair et une correction précise.
Ce que fait réellement hreflang
hreflang indique aux moteurs de recherche quelle version linguistique ou régionale d'une page montrer à un utilisateur donné. Il remplace l'URL dans le résultat, rien de plus. Ce n'est pas un bonus de classement. Une page aux annotations impeccables doit toujours gagner sa position par ses propres mérites.
À quoi ressemble un jeu hreflang correct
Trois versions — anglais, espagnol et un repli — écrites sous forme d'éléments link dans le head de chacune de ces pages :
<link rel="alternate" hreflang="en" href="https://example.com/page/">
<link rel="alternate" hreflang="es" href="https://example.com/es/pagina/">
<link rel="alternate" hreflang="x-default" href="https://example.com/page/">
La même relation exprimée dans un sitemap XML, où l'élément urlset doit déclarer le namespace xhtml :
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/page/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/page/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://example.com/es/pagina/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page/"/>
</url>
</urlset>
La page espagnole porte exactement le même jeu. Cette symétrie est tout le mécanisme, et la plupart des erreurs ci-dessous sont autant de façons de la rompre.
1. Liens retour manquants
Toute relation hreflang est bidirectionnelle. Si A pointe vers B, B doit pointer vers A, sinon l'annotation reste non confirmée et se voit ignorée. Symptôme : les versions ne sont jamais permutées dans les résultats, et Search Console signale l'absence de balises retour. Correction : générer le même jeu complet sur chaque page du groupe, et non une liste à sens unique.
2. Pas de hreflang auto-référent
Chaque page doit inclure une entrée hreflang pour sa propre URL. L'omettre rend le jeu incomplet, et les moteurs écartent les jeux qu'ils ne peuvent pas réconcilier. Correction : ajouter l'auto-référence, pour qu'un groupe de trois langues porte trois entrées sur les trois pages.
3. Codes de langue et de région erronés
La valeur de langue doit être un code ISO 639-1 et la région facultative un code ISO 3166-1 Alpha 2. Une région ne peut jamais figurer seule. Trois erreurs classiques : en-UK au lieu de en-GB, la confusion entre zh-CN (chinois en Chine) et zh-Hans (une sous-étiquette d'écriture, pas une région), et l'invention d'une langue à partir d'un pays, comme uk pour la Grande-Bretagne alors qu'il désigne l'ukrainien. Les valeurs invalides sont abandonnées sans avertissement.
4. URL relatives
Les valeurs hreflang doivent être des URL absolues et complètes, protocole compris. Une valeur comme /es/pagina/ est invalide et l'entrée est ignorée. Symptôme : des annotations qui semblent correctes dans votre gabarit mais ne sont jamais enregistrées nulle part. Correction : produire https://example.com/es/pagina/ à chaque fois, exactement la règle qui s'applique aux valeurs loc d'un sitemap.
5. Renvoyer vers des URL non canoniques, en redirection ou en noindex
hreflang et canonical doivent s'accorder. La canonique de chaque page pointe vers elle-même, et chaque valeur hreflang pointe vers l'URL canonique d'une autre version. Annoter une URL qui redirige, se canonicalise ailleurs ou est en noindex envoie des instructions contradictoires, et le conflit se résout généralement par l'abandon de vos annotations. Correction : s'assurer que chaque URL du groupe répond en 200, est indexable et est auto-canonique.
6. x-default absent ou mal utilisé
x-default désigne le repli pour les utilisateurs dont vous ne couvrez pas la langue : un sélecteur de langue, une page d'accueil globale, ou votre version principale. Symptôme : des visiteurs issus de zones non couvertes atterrissent sur une version arbitraire. Correction : nommer un repli véritable et le répéter dans tout le groupe.
7. Mélanger les méthodes d'implémentation
Il existe trois emplacements valides pour hreflang : les éléments link HTML dans le head, les en-têtes HTTP Link, et les annotations xhtml:link dans le sitemap XML. N'importe lequel fonctionne. Les ennuis commencent quand un site en implémente deux à moitié : le head liste deux langues pendant que le sitemap en liste quatre. Choisissez une méthode et soyez complet dedans.
8. N'annoter que la page d'accueil
hreflang est un signal au niveau de la page, pas un réglage au niveau du site. Baliser la page d'accueil ne fait rien pour les 500 pages produit situées en dessous. Symptôme : la bonne page d'accueil par marché, et des pages profondes dans la mauvaise langue. Correction : associer chaque page à ses véritables équivalents et, lorsqu'il n'existe pas d'équivalent, omettre cette langue plutôt que pointer vers un à-peu-près.
9. Bloquer la version alternative au point de la rendre inexplorable
Une relation n'est confirmée que si les deux pages sont récupérables. Interdire un dossier de langue dans le robots.txt, ou le placer derrière des redirections géographiques qui renvoient les crawlers ailleurs, casse la vérification du lien retour. Correction : garder chaque URL annotée explorable et accessible sans redirection.
10. Attendre de hreflang qu'il règle le contenu dupliqué
hreflang gère les variantes régionales et linguistiques. Il ne déduplique pas des pages quasi identiques et ne remplace pas les balises canoniques. Deux pages anglaises presque identiques, l'une pour les États-Unis et l'autre pour l'Australie, se concurrencent toujours ; hreflang dit seulement à quel marché chacune est destinée. Les vrais doublons demandent une canonicalisation ou une consolidation.
Quelle méthode d'implémentation choisir
| Méthode | Idéale pour | Principal inconvénient |
|---|---|---|
| Éléments link HTML dans le head | Pages HTML, peu de langues, sites pilotés par gabarits | Le balisage croît comme le carré du nombre de langues et part à chaque chargement de page |
| En-tête HTTP Link | Fichiers non HTML comme les PDF, où il n'y a pas de head à modifier | Invisible dans le code source, exige une configuration serveur ou CDN, facile à perdre lors d'une migration |
| xhtml:link dans le sitemap XML | Grands sites et nombreuses langues ; garde le balisage des pages léger | Plus difficile à contrôler ponctuellement, et le sitemap doit rester valide et à jour sous peine de périmer tout le jeu |
La voie du sitemap passe le mieux à l'échelle, ce qui explique aussi qu'elle échoue en silence : un namespace mal formé ou un fichier périmé emporte les annotations avec lui. Validez le sitemap après tout changement de générateur, et découpez les grands jeux multilingues avec un index de sitemaps.
Comment vérifier que hreflang fonctionne
Vérifiez dans les deux sens. Récupérez la page A, lisez son jeu d'annotations, puis récupérez chaque URL qu'elle nomme et confirmez que chacune liste le même jeu, elle-même comprise. Le code source couvre la méthode HTML, les en-têtes de réponse la deuxième, et le sitemap la troisième. Toute asymétrie est le bug.
Là où Search Console propose un rapport de ciblage international pour votre propriété, il liste les erreurs hreflang telles que les balises retour manquantes et les codes de langue inconnus : c'est le moyen le plus rapide de voir les problèmes à grande échelle. Il est en retard sur vos déploiements, alors traitez-le comme un second avis. Pour les défauts d'exploration sous-jacents, le guide des erreurs de sitemap couvre les redirections, 404 et blocages robots.txt qui font tomber les jeux d'annotations.