Digital en Europe

Hreflang : l'erreur de balisage qui fait disparaître vos pages allemandes des résultats allemands

Hreflang dit au moteur de recherche quelle page est la version allemande de quelle page anglaise. Quand l'annotation est fausse, le moteur l'ignore et traite la page allemande comme une copie de la page anglaise. La page allemande sort alors des résultats allemands sans le moindre message d'erreur.

Chine → France

Une entreprise construit un site européen, le traduit en allemand, en français et en espagnol, et publie le tout. Quelques semaines plus tard, personne en Allemagne ne trouve la version allemande, alors que la version anglaise y apparaît à sa place. Rien n'est cassé : les pages se chargent, le texte est correct, les liens fonctionnent. La cause tient le plus souvent en quelques lignes dans l'en-tête de chaque page, que personne dans l'équipe ne lit et que le moteur lit très attentivement. Le problème est fréquent sur les sites bâtis par des équipes qui n'ont jamais eu à gérer plusieurs versions linguistiques d'une même page.

Ce que fait hreflang, et ce qu'il ne fait pas

Hreflang est une annotation placée dans l'en-tête de la page, dans le plan du site ou dans la réponse HTTP. Pour une page donnée, elle liste les pages équivalentes dans les autres langues et pour les autres pays, chacune avec un code : une langue, éventuellement suivie d'un pays. Quand quelqu'un en Allemagne cherche en allemand, le moteur peut remplacer le résultat anglais par le résultat allemand, parce que l'annotation lui dit qu'il s'agit de la même page pour des publics différents. C'est un signal, pas un ordre. Il ne traduit pas, ne donne pas une meilleure position à une page et n'empêche pas qu'une page soit montrée ailleurs. Il se contente de choisir la bonne version parmi des pages qui existent déjà et sont déjà indexées.

Pourquoi une page peut-elle disparaître à cause de cela ? Parce que le moteur évite d'afficher plusieurs résultats qui se ressemblent. Quand il trouve des pages presque identiques, il les regroupe et en garde une, appelée canonique. Une page allemande dont le menu n'est pas traduit, avec des noms de produits anglais et des caractéristiques techniques identiques à celles de la page anglaise, ressemble beaucoup à cette dernière aux yeux du moteur. L'annotation hreflang est ce qui prouve qu'elles s'adressent à des publics différents. Si l'annotation est invalide, la preuve est écartée. Le moteur garde la page anglaise, l'allemande est classée comme doublon, et personne n'est prévenu.

Les trois erreurs classiques

  • Pas de lien retour. La page anglaise désigne la page allemande comme équivalente, mais la page allemande ne renvoie pas vers l'anglaise. Hreflang ne compte que si les deux côtés se confirment, et le moteur écarte donc la paire. Chaque version doit lister toutes les autres et elle-même, et une version ajoutée plus tard doit être ajoutée sur chaque page existante, pas seulement sur la nouvelle.
  • Des codes qui n'existent pas. La langue s'écrit d'abord, puis un pays facultatif, avec les codes des normes internationales. Erreurs typiques : un pays seul sans langue, le Royaume-Uni écrit avec les mauvaises lettres, un tiret bas là où un trait d'union est attendu, ou un code inventé par l'extension de traduction. Un code invalide est ignoré sans aucun message, comme si la ligne n'existait pas.
  • Des annotations qui contredisent la page canonique. La page allemande se déclare version allemande, mais sa balise canonique pointe vers la page anglaise. Les deux signaux disent le contraire, et la canonique l'emporte : on dit à la page allemande qu'elle n'est qu'une copie. Il en va de même quand hreflang désigne des adresses qui redirigent ailleurs, qui renvoient une erreur ou dont l'indexation est bloquée.

D'autres façons de se tromper

Trois autres cas méritent d'être cités. Le premier est une page qui ne se référence pas elle-même : chaque page doit figurer dans sa propre liste, et beaucoup de générateurs l'oublient. Le deuxième est la version par défaut. Une valeur particulière, x-default, désigne la page à montrer quand aucune langue ne correspond, souvent la page anglaise ou un sélecteur de langue ; l'omettre n'est pas une erreur mais laisse le choix au moteur. Le troisième vient des redirections automatiques selon la langue du navigateur ou l'adresse IP. Si un visiteur, ou le robot du moteur, est envoyé vers la page anglaise dès qu'il arrive de l'extérieur d'un pays, le robot ne voit jamais la page allemande. Proposez le choix par un lien visible plutôt que de l'imposer.

Comment le constater de l'extérieur

  1. Ouvrez la page allemande et affichez son code source. Cherchez dans l'en-tête les lignes qui commencent par le mot alternate et portent l'attribut hreflang. Vérifiez que la page allemande elle-même y figure, que chaque langue de votre site y est, et que les codes sont orthographiés comme attendu.
  2. Faites de même sur la page anglaise et confirmez qu'elle liste l'allemande. Puis suivez chaque adresse listée et vérifiez qu'elle se charge directement, sans redirection, et qu'elle porte la même liste en retour.
  3. Regardez la balise canonique de chaque version. Sur une page allemande, elle doit désigner cette même page allemande, pas l'anglaise.
  4. Dans l'outil gratuit de recherche destiné aux propriétaires de sites, inspectez l'adresse allemande. Si le rapport indique que la page est un doublon et que le moteur a retenu une autre canonique que la vôtre, vous tenez la cause.
  5. Dans le rapport de performance, filtrez sur l'Allemagne et sur la page allemande. Si c'est l'adresse anglaise qui recueille les impressions qui devraient revenir à l'allemande, la substitution ne fonctionne pas.
Ce que vous constatezCause probablePremier point à vérifier
La page anglaise s'affiche dans les résultats allemandsAnnotation ignorée ; pages regroupées comme doublonsLes liens retour sur les deux versions
Page allemande signalée comme doublonBalise canonique vers l'anglaisCanonique de la page allemande
Annotations présentes mais sans effetCodes invalides ou adresses qui redirigentOrthographe des codes ; chargement direct de chaque adresse
Version allemande jamais exploréeRedirection automatique selon la langue ou le paysVisiter l'adresse allemande sans redirection

Corriger dans un ordre raisonnable

Commencez par les balises canoniques, car une canonique fausse annule tout le reste. Puis la liste elle-même : faites-la produire par un seul gabarit ou une seule extension que vous comprenez, plutôt que de la saisir page par page, car les listes manuelles divergent dès qu'une page est ajoutée. Générez l'ensemble des paires à partir d'une source unique, pour toutes les pages, pas seulement l'accueil. Supprimez ensuite la redirection automatique selon la langue. Enfin, soumettez à nouveau le plan du site et patientez : le moteur doit réexplorer chaque page du groupe avant de faire confiance au nouveau signal, et le temps que cela prend dépend de la taille du site et de la fréquence des passages. Un site traduit en partie ne doit relier que les pages qui existent réellement dans chaque langue.

Hreflang ne répare pas une mauvaise traduction. Si la page allemande est une traduction automatique avec un menu anglais, le moteur y voit encore peu de différence avec l'anglaise, et l'acheteur qui y arrive voit la même chose. Corrigez d'abord le balisage, qui coûte quelques heures, puis demandez-vous honnêtement si la page mérite d'être montrée à un acheteur allemand. Une page que vous n'enverriez pas à un client ne doit pas être celle que vous demandez au moteur de préférer.

Questions qui reviennent.

Faut-il un code de langue seul, ou une langue plus un pays ?

Utilisez la langue seule quand une même page sert tous les pays qui la parlent, et ajoutez le pays quand les pages diffèrent réellement selon le marché : prix, livraison, pages légales, vocabulaire. Une page allemande pour l'Allemagne et une autre pour l'Autriche se justifient si l'information diffère ; sinon, une seule page allemande est plus simple et évite deux copies presque identiques. N'employez jamais un pays seul, car l'annotation commence toujours par une langue. Quel que soit votre choix, appliquez-le de la même façon sur chaque page et dans chaque langue, et tenez une table unique des paires que toute l'équipe peut lire.

Hreflang nous aide-t-il à mieux nous classer en Allemagne ?

Non. Il choisit laquelle de vos pages montrer, pas à quelle hauteur une page se classe. Une page allemande correctement annotée mais mince restera derrière de meilleures pages allemandes de vos concurrents. Ce que hreflang évite, c'est le cas où votre page allemande a été écartée comme copie, de sorte qu'elle n'a jamais la possibilité de concourir. Le classement lui-même dépend encore de la qualité du texte, de l'adéquation avec ce que cherchent les acheteurs, et des références qui pointent vers le site depuis l'Allemagne. Voyez hreflang comme une hygiène : il retire un handicap, et n'ajoute rien de plus.

Notre site utilise une extension de traduction. Hreflang est-il géré pour nous ?

Souvent en partie, et on ne peut pas le supposer. Certaines extensions produisent correctement les annotations ; d'autres ne le font que pour certains types de pages, ajoutent des codes qui ne respectent pas la norme, ou traduisent les pages au moment de l'affichage, si bien que le moteur ne voit jamais d'adresse allemande distincte. Vérifiez en affichant le code source d'une page de chaque type : accueil, catégorie, produit, article. Si l'extension ne charge la traduction que dans le navigateur, le moteur peut n'indexer que la page anglaise, et il n'y a alors rien à annoter. Dans ce cas, la correction est structurelle, avec de vraies adresses par langue, et non un réglage.