hreflang est une ligne dans le code source qui indique aux moteurs de recherche quelle version linguistique d'une page s'adresse à quel public. Vous en avez besoin dès que le même contenu existe en plusieurs langues ou pour plusieurs pays sur des URL distinctes. Trois règles déterminent si cela fonctionne : chaque version renvoie à toutes les versions y compris à elle-même, chaque renvoi est réciproque et il y a un x-default pour les visiteurs qui ne correspondent à aucune des langues indiquées. hreflang n'est pas un facteur de positionnement et il pilote seulement quelle version est montrée à qui. L'erreur qui coûte le plus souvent un marché linguistique entier se trouve ailleurs : une version linguistique sans entrée propre dans votre sitemap reste discrètement invisible, même quand le hreflang lui-même est parfait.
Quand vous en avez besoin et quand non
Vous avez besoin de hreflang dans deux cas. Le premier est que la même page existe en plusieurs langues sur des URL distinctes, par exemple /diensten.html et /en/services.html. Le second est que la même langue a deux versions pour deux pays qui diffèrent sur le fond : d'autres prix, un autre traitement de la TVA.
Vous n'en avez pas besoin pour un site en une seule langue pour un seul marché. Ni pour une page qui n'existe que dans une langue.
Il y a un troisième cas où la réponse est inconfortable. Si votre site change de langue sans que l'URL change, il n'y a pas de deuxième URL vers laquelle pointer. Un moteur de recherche indexe une version d'une URL, vous avez donc une langue dans l'index et le reste n'existe pas. Si vous voulez que quatre langues soient trouvables, il vous faut quatre URL. C'est une décision de construction et pas un réglage.
Les trois règles qui déterminent si cela fonctionne
Voici à quoi ressemble un jeu complet, dans le <head> de chaque page :
<link rel="alternate" hreflang="nl" href="https://uwdomein.be/diensten.html">
<link rel="alternate" hreflang="en" href="https://uwdomein.be/en/services.html">
<link rel="alternate" hreflang="de" href="https://uwdomein.be/de/leistungen.html">
<link rel="alternate" hreflang="fr" href="https://uwdomein.be/fr/services.html">
<link rel="alternate" hreflang="x-default" href="https://uwdomein.be/en/services.html">
Complet. Le jeu contient toutes les versions qui existent. Si vous en oubliez une, elle n'appartient pas au groupe.
Avec autoréférence. Chaque page renvoie aussi à elle-même. Sur la page néerlandaise figure donc également la ligne avec hreflang="nl". Sans cette ligne, Google ignore tout le jeu.
Réciproque. Ces cinq lignes figurent littéralement à l'identique sur les quatre pages. Si A renvoie à B et que B ne renvoie pas à A, Google laisse tomber la paire. C'est l'erreur la plus fréquente et vous la voyez à l'œil nu.
Deux exigences supplémentaires. Utilisez des URL absolues avec protocole et domaine, jamais des chemins relatifs. Et faites en sorte que chaque URL indiquée se charge directement. Un hreflang qui pointe vers une adresse qui redirige ou qui aboutit ailleurs via une canonique est ignoré.
Ce qu'est exactement x-default
x-default n'est pas votre langue principale. C'est la version destinée à tous ceux qui ne tombent dans aucune des langues indiquées : un visiteur d'Espagne, du Japon ou du Brésil. En pratique vous choisissez soit votre sélecteur de langue soit la version la plus largement utilisable, le plus souvent l'anglaise.
Un seul par jeu. Ce n'est pas obligatoire. C'est à conseiller, car sans x-default le moteur de recherche choisit lui-même et ce sera votre langue principale.
Codes de langue avec et sans région
Le code de langue est composé de deux lettres issues de la norme ISO 639-1 : nl, en, de, fr. Le code de région qui suit est facultatif, deux lettres issues de la norme ISO 3166-1 Alpha 2, toujours avec un trait d'union entre les deux : nl-BE, nl-NL, de-AT, fr-CH. Une région sans langue devant elle n'existe pas.
C'est là que cela dérape souvent, car les codes pour les langues et les codes pour les pays se ressemblent sans être les mêmes.
| Ce qui figure | Ce que cela signifie | Ce que cela devait être |
|---|---|---|
hreflang="be"
|
biélorusse |
nl-BE ou fr-BE
|
hreflang="uk"
|
ukrainien |
en-GB
|
hreflang="en-UK"
|
non valide et donc ignoré |
en-GB
|
hreflang="nl_BE"
|
non valide, tiret bas au lieu du trait d'union |
nl-BE
|
hreflang="eu"
|
basque | aucun code ne couvre l'UE, choisissez par langue |
Ne séparez nl-BE et nl-NL que lorsque le contenu diffère réellement. Si vous avez une seule page néerlandophone pour les deux pays, utilisez simplement nl. Ce code couvre tous les néerlandophones où qu'ils se trouvent. Deux pages identiques sous deux codes de région divisent vos signaux et doublent votre entretien.
Le code de région pilote sur la localisation présumée du visiteur et pas sur son réglage de langue. nl-BE désigne les néerlandophones en Belgique.
Où le placer : choisissez un seul endroit
-
Des éléments
<link>dans le<head>. Le plus utilisé et le plus facile à contrôler, car vous le voyez dans le code source. -
Un en-tête HTTP
Link:. Nécessaire pour les fichiers sans head, comme un PDF. - Dans le sitemap XML. Le mieux pour les grands sites, car vous entretenez tout à un seul endroit au lieu de le faire sur chaque page.
Choisissez-en un. Deux méthodes côte à côte qui se contredisent, c'est pire que pas de méthode du tout.
Dans le sitemap cela se présente ainsi. L'espace de noms xmlns:xhtml va sur <urlset> :
<url>
<loc>https://uwdomein.be/diensten.html</loc>
<xhtml:link rel="alternate" hreflang="nl" href="https://uwdomein.be/diensten.html"/>
<xhtml:link rel="alternate" hreflang="en" href="https://uwdomein.be/en/services.html"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://uwdomein.be/en/services.html"/>
</url>
La version linguistique sans entrée propre reste discrètement invisible
C'est la partie qui coûte un marché entier et que personne ne remarque.
Un moteur de recherche trouve une page par trois chemins : un lien ordinaire avec un href dedans, une entrée dans votre sitemap ou un renvoi hreflang depuis une page qu'il connaît déjà. Si ces trois chemins disparaissent, la page n'existe pas.
Le scénario que nous voyons le plus souvent se déroule ainsi. Le sélecteur de langue en haut est un menu en JavaScript qui ne produit pas de vrai lien. Le sitemap est généré sur la base de la langue principale et ne contient donc que des URL néerlandaises. Les pages allemandes et françaises se trouvent simplement sur le serveur. Personne ne pointe vers elles.
Le sournois là-dedans, c'est que rien ne sonne l'alarme. La Search Console ne signale aucune erreur, car une URL que Google n'a jamais découverte ne peut pas non plus produire d'erreur. Vos statistiques ne montrent aucune baisse, car il n'y a jamais eu de trafic. Les pages existent, la facture de traduction est payée et le marché reste vide.
Deux contrôles d'une minute chacun :
-
Tapez
site:uwdomein.be/de/dans Google. Zéro résultat signifie zéro page allemande indexée. - Ouvrez dans la Search Console la section Sitemaps et regardez le nombre d'URL découvertes. Un site de 20 pages en quatre langues doit y montrer environ 80 URL. S'il indique 20, vous avez une langue dans l'index et trois invisibles.
Pages fois langues. C'est la règle empirique la plus utilisable de ce chapitre. Si le nombre s'écarte fortement, vous ne cherchez pas des erreurs de hreflang mais des URL manquantes.
Un dernier piège, juste après. Une canonique de /de/diensten.html vers /diensten.html sort votre page allemande de l'index, quelle que soit la quantité de hreflang que vous mettez autour. Chaque version linguistique reçoit une canonique qui pointe vers elle-même. Voir le chapitre 1.
Ce que hreflang ne fait pas
Il n'améliore aucune position. hreflang détermine quelle version quelqu'un voit et pas à quelle place. C'est en outre une indication et pas un ordre : Google peut montrer une autre version quand celle-ci correspond mieux à la recherche.
Il ne résout pas non plus le contenu dupliqué entre langues. Ce problème n'existe pas, car une traduction n'est pas une copie.
Google, Bing et Yandex utilisent hreflang. Savoir si les systèmes derrière les réponses IA en font quelque chose n'est pas documenté et nous ne l'avons pas mesuré. Pour le GEO, autre chose compte : chaque langue avec son URL propre et du vrai texte dans le HTML du serveur. Voir le chapitre 6 et le chapitre 7.
Vérifier soi-même, sans outil payant
La Search Console ne signale pas les erreurs de hreflang comme une catégorie distincte. Vous contrôlez donc vous-même. Le test manuel dure deux minutes et attrape la plupart des erreurs :
- Ouvrez une page et appuyez sur Ctrl+U ou Cmd+Option+U.
-
Cherchez
hreflanget notez le jeu. - Ouvrez une des URL énumérées et répétez l'étape 2.
- Si exactement le même jeu s'y trouve, autoréférence comprise, la réciprocité est en ordre.
- Vérifiez que chaque URL se charge directement sans redirection.
Il existe par ailleurs des contrôleurs hreflang gratuits qui parcourent votre site et alignent les paires non réciproques. Utiles à partir d'une vingtaine de pages. Nous n'en citons aucun par son nom, parce que ce genre de listes vieillit.
Ce que vous pouvez faire vous-même et ce que vous ne pouvez pas
À faire vous-même, sans développeur :
- Le test manuel de réciprocité sur vos cinq pages les plus importantes.
-
Vérifier les codes de langue pour
be,uketen-UK. Cela seul règle une part surprenante des cas. -
Ajouter un
x-defaults'il manque. - Compter combien d'URL contient votre sitemap et confronter ce nombre à pages fois langues.
- Vérifier que chaque version linguistique a une canonique vers elle-même.
Ce pour quoi vous avez besoin d'aide :
- Un sélecteur de langue qui ne produit pas de vrais liens. C'est une décision de construction et pas une case à cocher.
- Un CMS qui crée un sitemap distinct par langue sans index qui les rassemble.
- Quatre langues sur des centaines de pages, où le hreflang doit venir du sitemap au lieu du head de chaque page.
- Une redirection basée sur le pays du visiteur. Elle pousse le crawler chaque fois vers la même version, si bien que le reste n'est jamais lu.
Comptez une demi-journée pour un site de vingt pages en quatre langues, le contrôle a posteriori compris. Ce chapitre est petit. Celui qui se trompe perd tout de même un marché linguistique entier sans le voir.
Questions fréquentes
Qu'est-ce que hreflang et en ai-je besoin ?
hreflang est une ligne dans le code source qui indique aux moteurs de recherche quelle version linguistique d'une page s'adresse à quel public. Vous en avez besoin dès que le même contenu existe en plusieurs langues sur des URL distinctes. Pour un site en une seule langue pour un seul marché, cela n'a aucune utilité.
Que signifie x-default dans hreflang ?
C'est la version montrée aux visiteurs qui ne tombent dans aucune des langues ou régions indiquées, par exemple quelqu'un du Japon ou du Brésil. Ce n'est pas la même chose que votre langue principale. Vous en indiquez un par jeu et en pratique il pointe vers votre sélecteur de langue ou vers la version anglaise.
Dois-je indiquer nl-BE et nl-NL séparément ?
Uniquement lorsque les deux pages diffèrent réellement sur le fond, par exemple par d'autres prix ou d'autres conditions de livraison. Si le texte est identique, utilisez simplement nl. Ce code couvre tous les néerlandophones et vous évitez un double entretien.
Pourquoi mon hreflang ne fonctionne-t-il pas ?
Dans la plupart des cas la réciprocité manque : la page A renvoie à B et B ne renvoie pas à A, après quoi Google laisse tomber la paire. D'autres causes fréquentes sont une autoréférence manquante, un code de langue erroné comme be ou en-UK et une URL indiquée qui redirige au lieu de se charger directement.
hreflang est-il un facteur de positionnement ?
Non. hreflang détermine quelle version linguistique quelqu'un voit et pas à quelle position vous vous trouvez. C'est en outre une indication et pas un ordre : Google peut montrer une autre version quand il estime qu'elle convient mieux.
Vous préférez ne pas le faire vous-même : SEMANU réalise l'audit SEO et GEO complet pour 1 450 euros, rapport et séance de travail compris. Le détail figure sur la page du guide.
La mesurabilité et la visibilité font partie de votre stratégie logicielle
La mesurabilité et la visibilité relèvent du conseil stratégique et ne sont pas une discipline à part. Si vous préférez ne pas le faire vous-même, nous l'intégrons à la stratégie logicielle : ce que vous mesurez, le seuil qui justifie une action et qui en assure le suivi.