Pourquoi les erreurs Hreflang sont si coûteuses
Les erreurs de balises hreflang sont particulièrement dommageables car elles échouent souvent silencieusement. Contrairement à un lien cassé qui renvoie un 404 visible, une balise hreflang mal configurée est simplement ignorée par les moteurs de recherche sans aucun avertissement sur la page elle-même. Le résultat : votre stratégie de SEO international semble correcte sur le papier mais n'apporte aucun bénéfice en pratique. Les moteurs de recherche affichent les mauvaises versions linguistiques aux utilisateurs, le contenu dupliqué dilue votre classement, et vous perdez du trafic organique sur des marchés dans lesquels vous avez spécifiquement investi.
Les dix erreurs suivantes représentent les problèmes d'implémentation hreflang les plus courants que nous observons sur des milliers de sites web multilingues. Chacune comprend une explication claire de ce qui ne va pas, pourquoi c'est important et comment y remédier.
Erreur 1 : Balises réciproques manquantes
Le problème : La page A inclut une balise hreflang pointant vers la page B, mais la page B n'inclut pas de balise hreflang pointant en retour vers la page A.
Hreflang requiert une confirmation bidirectionnelle. Si votre page anglaise dit "mon équivalent espagnol est à /es/page/", la page espagnole à /es/page/ doit également dire "mon équivalent anglais est à /en/page/". Cette confirmation mutuelle est la façon dont les moteurs de recherche vérifient que la relation est intentionnelle et non une erreur ou une tentative de manipulation.
Ce qui se passe : Google ignore entièrement le hreflang pour la paire qui manque de réciprocité. Même si vous avez 20 pages localisées correctement liées, un seul lien retour manquant casse la chaîne pour cette paire spécifique.
Comment corriger : Assurez-vous que chaque page de l'ensemble hreflang inclut le jeu complet de liens alternés -- y compris une balise auto-référençante. Si votre page anglaise liste 6 liens hreflang, chaque page de cet ensemble doit lister les mêmes 6 liens. Notre Générateur de balises Hreflang produit automatiquement des balises réciproques pour toutes les pages d'un ensemble.
Erreur 2 : Hreflang auto-référençant manquant
Le problème : Une page inclut des balises hreflang pointant vers toutes ses variantes linguistiques sauf elle-même.
La documentation de Google stipule explicitement que chaque page doit inclure une balise hreflang pointant vers elle-même. Cette auto-référence n'est pas redondante -- elle fait partie du mécanisme de validation utilisé par les moteurs de recherche pour confirmer que l'ensemble hreflang est complet.
Exemple de l'erreur :
<!-- Sur la page anglaise -- auto-référence manquante -->
<link rel="alternate" hreflang="es" href="https://example.com/es/page/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/page/" />
<!-- Où est hreflang="en" pointant vers cette page ? -->
Comment corriger : Incluez toujours la page actuelle dans son propre ensemble hreflang :
<!-- Correct : inclut l'auto-référence -->
<link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/page/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/page/" />
Erreur 3 : Codes de langue ou de région incorrects
Le problème : Utilisation de codes ISO de langue et de région invalides ou incorrects dans les valeurs hreflang.
Les erreurs de code les plus courantes incluent :
- Utiliser
ukpour le Royaume-Uni (le code correct esten-GB;ukest le code ISO 639-1 pour l'ukrainien) - Utiliser
jppour le japonais (le code de langue correct estja;JPest le code pays pour le Japon) - Utiliser
brpour le portugais brésilien (le code correct estpt-BR;brseul est le code ISO 639-1 pour le breton) - Utiliser des codes à trois lettres comme
engoudeu(hreflang requiert des codes à deux lettres ISO 639-1) - Utiliser uniquement un code pays sans préfixe de langue (par exemple,
hreflang="US"est invalide) - Utiliser des tirets bas au lieu de tirets (par exemple,
en_USau lieu deen-US)
Comment corriger : Validez chaque valeur hreflang contre la liste des codes de langue ISO 639-1 et la liste des codes pays ISO 3166-1 Alpha-2. Le format est toujours {langue} ou {langue}-{RÉGION}, avec la langue en minuscules et la région en majuscules, séparées par un tiret.
Erreur 4 : Discordance HTTP vs HTTPS
Le problème : Votre site sert des pages en HTTPS, mais vos balises hreflang référencent des URLs HTTP (ou inversement).
<!-- Le site est en HTTPS, mais hreflang utilise HTTP -->
<link rel="alternate" hreflang="en" href="http://example.com/en/page/" />
Les moteurs de recherche traitent http://example.com/en/page/ et https://example.com/en/page/ comme deux URLs différentes. Si votre page est servie à l'adresse HTTPS mais que le hreflang pointe vers l'adresse HTTP, Google constate une discordance -- le hreflang pointe vers une URL qui soit n'existe pas (si HTTP redirige vers HTTPS), soit vers une page entièrement différente.
Comment corriger : Auditez toutes les URLs hreflang pour vous assurer que le protocole correspond au protocole de service réel. Si votre site fonctionne en HTTPS (et il le devrait), chaque URL dans chaque balise hreflang doit commencer par https://. Cela s'applique également aux balises canonical, aux URLs du sitemap et à toute autre référence à vos pages.
Erreur 5 : Utilisation d'URLs relatives
Le problème : Les balises hreflang utilisent des URLs relatives au lieu d'URLs absolues.
<!-- INCORRECT : URL relative -->
<link rel="alternate" hreflang="es" href="/es/page/" />
<!-- CORRECT : URL absolue -->
<link rel="alternate" hreflang="es" href="https://example.com/es/page/" />
La spécification hreflang exige des URLs absolues. Les URLs relatives sont silencieusement ignorées par les moteurs de recherche. Votre hreflang n'aura tout simplement aucun effet, et vous pourriez ne pas le réaliser pendant des mois car il n'y a aucun message d'erreur.
Comment corriger : Utilisez toujours des URLs entièrement qualifiées commençant par https:// (ou http:// si votre site ne prend véritablement pas en charge HTTPS). Cela inclut le protocole, le domaine et le chemin complet. N'utilisez jamais non plus d'URLs à protocole relatif (//example.com/page/) -- spécifiez toujours le protocole explicitement.
Erreur 6 : x-default manquant
Le problème : Votre ensemble hreflang n'inclut pas d'entrée x-default.
Bien que techniquement optionnel, omettre x-default signifie que les moteurs de recherche n'ont aucune indication sur ce qu'il faut afficher aux utilisateurs dont la langue ou la région n'est pas couverte par votre ensemble hreflang. Si vous avez des versions en anglais, espagnol et allemand, que devrait voir un utilisateur japonais ?
Sans x-default, Google devine. Parfois il affiche la version anglaise (ce qui pourrait être acceptable), mais parfois il n'affiche rien de votre site car il ne peut pas déterminer avec certitude la bonne correspondance.
Comment corriger : Ajoutez une entrée hreflang x-default à chaque ensemble de pages. Faites-la pointer vers la page qui offre la meilleure expérience de secours -- généralement votre version anglaise ou une page avec un sélecteur de langue.
<link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/page/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/page/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page/" />
Erreur 7 : Codes de langue dupliqués dans le même ensemble
Le problème : Inclure plusieurs entrées hreflang avec le même code langue-région dans l'ensemble de balises d'une même page.
<!-- INCORRECT : deux entrées pour "en" -->
<link rel="alternate" hreflang="en" href="https://example.com/en/page-v1/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page-v2/" />
Lorsque Google rencontre des codes de langue dupliqués, il ne peut pas déterminer quelle URL est la bonne pour cette langue. Le résultat est imprévisible -- Google peut en choisir une, alterner entre les deux ou ignorer les deux.
Comment corriger : Chaque code langue-région doit apparaître exactement une fois par ensemble hreflang. Si vous avez deux pages anglaises servant des objectifs différents, elles ne doivent pas faire partie du même ensemble hreflang. Hreflang relie du contenu équivalent entre les langues, pas des pages différentes au sein de la même langue.
Erreur 8 : Balise Canonical pointant vers une autre langue
Le problème : La balise canonical d'une page localisée pointe vers la page équivalente dans une autre langue au lieu de pointer vers elle-même.
<!-- Sur la page allemande -- INCORRECT -->
<link rel="canonical" href="https://example.com/en/page/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/page/" />
Cela dit à Google : "La page allemande est une copie de la page anglaise ; veuillez indexer uniquement la version anglaise." Google obéit au canonical, désindexe la page allemande, et votre hreflang est ignoré. Vous perdez entièrement votre présence dans les recherches en allemand.
Il s'agit d'une erreur si critique et répandue que nous avons rédigé un guide dédié : Hreflang vs Canonical : Comment ils fonctionnent ensemble.
Comment corriger : Chaque page localisée doit avoir un canonical auto-référençant. Le canonical de la page allemande doit pointer vers l'URL allemande. Le canonical de la page espagnole doit pointer vers l'URL espagnole. Ne faites jamais de références croisées de canonicals entre les langues.
Erreur 9 : Format XML Sitemap incorrect pour Hreflang
Le problème : Implémenter hreflang dans le sitemap XML mais en utilisant un format de balisage incorrect.
Les erreurs courantes de format de sitemap incluent :
- Oublier la déclaration de namespace
xmlns:xhtmldans l'élément<urlset> - Utiliser
<link>au lieu de<xhtml:link>dans les entrées<url> - Placer les annotations hreflang en dehors des blocs
<url> - Ne pas inclure toutes les URLs de chaque langue dans chaque bloc
<url>(chaque entrée URL doit contenir l'ensemble hreflang complet)
Format correct :
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/en/page/</loc>
<xhtml:link rel="alternate" hreflang="en"
href="https://example.com/en/page/" />
<xhtml:link rel="alternate" hreflang="es"
href="https://example.com/es/page/" />
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/en/page/" />
</url>
</urlset>
Comment corriger : Validez le XML de votre sitemap contre le schéma avant de le soumettre. Assurez-vous que le namespace xhtml est déclaré, utilisez <xhtml:link> (pas <link>) et incluez l'ensemble hreflang réciproque complet dans chaque bloc <url>.
Erreur 10 : Ne pas valider après l'implémentation
Le problème : Implémenter les balises hreflang une fois et ne jamais vérifier si elles fonctionnent correctement.
Les implémentations hreflang se détériorent avec le temps. Les pages sont déplacées, les URLs changent, de nouvelles langues sont ajoutées, les modèles CMS sont mis à jour et les développeurs apportent des modifications sans réaliser l'impact sur les balises hreflang. Une configuration hreflang correcte au lancement peut être complètement cassée six mois plus tard.
Les causes courantes de détérioration post-lancement incluent :
- Des changements de structure d'URL lors d'une refonte du site qui mettent à jour les URLs des pages mais pas les références hreflang
- De nouvelles pages linguistiques ajoutées sans mettre à jour l'ensemble hreflang sur toutes les pages linguistiques existantes
- Des mises à jour de plugins CMS qui modifient la façon dont les balises hreflang sont générées
- Des changements de configuration CDN ou serveur qui altèrent le comportement des URLs
- Des migrations de domaine (par exemple, passer d'une structure en sous-répertoires à des sous-domaines) sans mettre à jour les URLs hreflang
Comment corriger : Établissez une routine de validation régulière :
- Utilisez le rapport de Ciblage international de Google Search Console pour vérifier les erreurs hreflang signalées par Google
- Effectuez des crawls périodiques avec un outil qui extrait et croise les balises hreflang sur l'ensemble de votre site
- Validez la réciprocité -- pour chaque page, confirmez que chaque URL qu'elle référence la référence également en retour
- Vérifiez après chaque déploiement -- intégrez la validation hreflang dans votre pipeline CI/CD pour que les balises cassées soient détectées avant d'atteindre la production
- Surveillez les performances de recherche par langue -- une chute soudaine de trafic depuis un marché spécifique indique souvent un hreflang cassé pour cette langue
Résumé
Ces dix erreurs représentent la grande majorité des échecs d'implémentation hreflang. La bonne nouvelle est qu'elles sont toutes évitables avec une implémentation soignée et une validation régulière :
- Balises réciproques manquantes -- chaque page doit lier vers toutes les autres pages de l'ensemble, et inversement
- Hreflang auto-référençant manquant -- chaque page doit s'inclure dans son propre ensemble hreflang
- Codes de langue incorrects -- utilisez les codes de langue ISO 639-1 et les codes de région ISO 3166-1 Alpha-2
- Discordance HTTP/HTTPS -- le protocole doit correspondre au protocole de service réel
- URLs relatives -- utilisez toujours des URLs absolues commençant par
https:// - x-default manquant -- incluez un repli pour les utilisateurs dans les régions non couvertes
- Codes de langue dupliqués -- chaque code apparaît exactement une fois par ensemble
- Canonicals inter-langues -- chaque page localisée a un canonical vers elle-même, jamais vers une autre langue
- Format de sitemap incorrect -- utilisez
<xhtml:link>avec le namespace correct - Pas de validation -- vérifiez régulièrement, automatisez quand c'est possible
Utilisez notre Générateur de balises Hreflang pour produire des ensembles de balises qui évitent automatiquement les erreurs 1 à 7. Pour une validation continue, établissez une routine qui détecte les problèmes avant qu'ils n'impactent votre visibilité dans les moteurs de recherche.