Pour ajouter des balises hreflang, répertoriez chaque langue ou version régionale d'une page, donnez à chacune un code de langue (éventuellement avec une région, telle que en-GB), puis mettez le même ensemble complet de <link rel="alternate" hreflang="…" href="…"> lignes dans le <head> de chaque version, y compris une ligne pour la page elle-même. Si vous ne pouvez pas modifier l'en-tête HTML, vous pouvez mettre les mêmes informations dans les en-têtes HTTP ou dans votre plan de site XML à la place ; Google traite les trois méthodes comme équivalentes.
Principaux points à retenir
- Hreflang s'applique aux pages qui ont des équivalents traduits ou régionaux sur d'autres URL. Les sites en une seule langue n'en ont pas besoin.
- Utilisez une seule méthode : l’en-tête HTML, les en-têtes HTTP ou le plan du site. Google affirme que les combiner n’apporte aucun avantage.
- Chaque version se répertorie elle-même et toutes les autres versions, avec des valeurs absolues
https://URL. Les paires qui ne sont pas liées l'une à l'autre sont ignorées. - Les codes sont un langage ISO 639-1, puis une région ISO 3166-1 Alpha 2 facultative :
fr,fr-CA,en-GB. Jamais une région seule. - Ajouter
x-defaultpour les visiteurs qui ne correspondent à aucune de vos versions. - Sur WordPress, Shopify et la plupart des outils de traduction, hreflang peut être généré pour vous. Vérifiez-le une fois, puis revérifiez après les modifications du thème ou du plugin.
Avant de commencer : mappez vos versions
Hreflang décrit les relations, vous avez donc besoin de la liste complète des URL associées avant d'écrire une seule balise. Créez un petit tableau pour chaque type de page :
| Version | Code | URL |
|---|---|---|
| Anglais (par défaut) | en | https://example.com/pricing/ |
| Français | fr | https://example.com/fr/pricing/ |
| Français pour le Canada | fr-CA | https://example.com/fr-ca/pricing/ |
| Repli | x-default | https://example.com/pricing/ |
Trois décisions entrent dans ce tableau.
1. Langue uniquement, ou langue plus région ? Utilisez un code de langue nue (fr) à moins que le contenu ne diffère réellement selon les pays, par exemple en termes de prix, de devise, d’orthographe ou de texte juridique. Les conseils de Google sont que lorsque vous avez plusieurs versions régionales d'une langue, c'est une bonne idée de fournir également une version générique pour les locuteurs de cette langue dans d'autres endroits (Recherche Google Central). Dans le tableau ci-dessus, fr attrape des francophones en France, en Belgique et partout ailleurs, tandis que fr-CA est pour le Canada.
2. Quels codes sont valides ? Google prend en charge les codes de langue ISO 639-1 et les codes de région ISO 3166-1 Alpha 2, ainsi que les codes de script ISO 15924 pour des cas tels que zh-Hant et zh-Hans. Il stipule que d’autres codes, tels que es-419, ne sont pas pris en charge et que des valeurs réservées telles que EU, UN et UK n'ont aucun effet. Pour le Royaume-Uni, écrivez en-GB. Notre liste des codes de langue hreflang a les plus communs au même endroit.
3. Quelle est la solution de secours ? x-default nomme la page pour les visiteurs dont les paramètres de langue ne correspondent à aucune de vos versions. Google affirme qu'il a été conçu pour les pages de sélection de langue et qu'il fonctionne mieux là-bas, mais de nombreux sites le pointent vers leur page de langue principale.
Confirmez également que chaque URL est l'adresse finale : elle renvoie 200, n'est pas redirigée et est sa propre adresse canonique. La documentation canonique de Google indique que lorsque vous utilisez hreflang, vous devez spécifier une page canonique dans la même langue (Recherche Google Central).
Méthode 1 : ajouter des balises hreflang à l'en-tête HTML
C'est la méthode utilisée par la plupart des sites. Google le recommande lorsque vous n'avez pas de plan de site ou que vous ne pouvez pas définir d'en-têtes de réponse HTTP.
Pour la page de tarification du tableau, chacune des trois versions contient exactement ce bloc <head>:
<link rel="alternate" hreflang="en" href="https://example.com/pricing/" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/pricing/" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/pricing/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/pricing/" />
Étape par étape :
- Ouvrez le modèle qui génère
<head>pour ce type de page (dans WordPress, généralement le thèmeheader.phpou un hook ; dans un site statique, le fichier de mise en page). - Générez le bloc à partir de données, pas à la main. Les balises saisies à la main sur des centaines de pages se désynchronisent. Créez la liste à partir de la même source qui crée vos URL de langue.
- Inclure la page actuelle dans sa propre liste. Google : “Chaque version linguistique doit s'auto-énumérer ainsi que toutes les autres versions linguistiques.”
- Utilisez des URL absolues.
https://example.com/fr/pricing/, non/fr/pricing/ou//example.com/fr/pricing/. - Gardez chacun
<link>à usage unique. Google prévient de ne pas combiner hreflang avec d'autres attributs tels quemediadans une seule balise. - Vérifiez que la tête est bien formée. Les balises doivent être à l'intérieur d'un fichier valide
<head>. Si un script ou un élément parasite casse la tête plus tôt, Google peut ne pas les voir. Collez votre HTML rendu dans un validateur en cas de doute.
Méthode 2 : ajouter hreflang avec des en-têtes HTTP
Utilisez des en-têtes pour les fichiers qui n'ont pas d'en-tête HTML, tels que les PDF. Le serveur renvoie un Link: en-tête répertoriant chaque version, y compris celle demandée, et l'en-tête est identique pour chaque version :
Link: <https://example.com/guide.pdf>; rel="alternate"; hreflang="en",
<https://example.com/fr/guide.pdf>; rel="alternate"; hreflang="fr",
<https://example.com/guide.pdf>; rel="alternate"; hreflang="x-default"
Les URL sont placées entre crochets angulaires et les entrées sont séparées par des virgules. Sur Apache ou nginx, vous définissez ceci par fichier ou par emplacement ; sur un CDN, avec une règle d'en-tête de réponse. Testez-le avec curl -I sur chaque URL pour confirmer que l'en-tête apparaît sur chacune d'elles.
Méthode 3 : ajoutez hreflang à votre plan de site XML
Un plan de site conserve toutes les annotations dans un seul fichier, ce qui convient aux grands sites ou aux équipes qui ne peuvent pas modifier les modèles. Les règles de la documentation de Google :
- Déclarer l'espace de noms
xmlns:xhtml="http://www.w3.org/1999/xhtml"sur<urlset>. - Créer un séparé
<url>entrée pour chaque version, avec la sienne<loc>. - À l'intérieur de chaque entrée, ajoutez-en une
<xhtml:link rel="alternate" hreflang="…" href="…"/>pour chaque version, y compris elle-même. Trois versions signifient trois entrées, chacune avec les mêmes trois enfants. - L'ordre n'a pas d'importance et les liens enfants ne comptent pas dans la limite d'URL du plan du site.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/pricing/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/pricing/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/pricing/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/pricing/"/>
</url>
<url>
<loc>https://example.com/fr/pricing/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/pricing/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/pricing/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/pricing/"/>
</url>
</urlset>
Soumettez le plan du site dans Search Console. Gardez à l'esprit qu'un plan de site ne peut répertorier que les URL sous le répertoire dans lequel il est hébergé, donc un plan de site dans /fr/ impossible de lister les pages anglaises à la racine.
Quelle méthode choisir ?
| Si votre situation est… | Utiliser |
|---|---|
| Un CMS ou un site où vous (ou un plugin) contrôlez la tête | Balises HTML |
| PDF et autres téléchargements en plusieurs langues | En-têtes HTTP |
| Des milliers d'URL ou de modèles que vous ne pouvez pas modifier | Plan du site |
| Une plateforme ou un outil de traduction qui génère hreflang | Sa sortie intégrée ; n'ajoutez pas de deuxième ensemble |
La position de Google est que les trois méthodes sont équivalentes et que leur utilisation totale n'apporte “aucun avantage dans la recherche”, seulement plus à maintenir (Recherche Google Central).
Ajout de hreflang sur les plateformes courantes
WordPress. WordPress lui-même n'a pas de couche multilingue, donc hreflang vient de ce qui crée vos pages traduites. Vérifiez les paramètres de votre plugin de traduction avant d'écrire du code et assurez-vous que votre plugin SEO ne génère pas également un ensemble conflictuel. Si vous utilisez ConveyThis, consultez la section ci-dessous.
Shopify. Shopify génère automatiquement hreflang à partir de vos marchés et paramètres de langue lorsque chaque marché ou langue a son propre domaine, sous-domaine ou sous-dossier, et ajoute un x-default pointant vers le domaine principal. La fonctionnalité est activée par défaut et peut être désactivée dans les préférences de la boutique en ligne (Shopify Centre d'aide). Si vous le désactivez pour gérer vous-même les balises, vous devenez responsable de garder chaque ensemble complet.
Sites statiques et applications personnalisées. Générez le bloc dans votre mise en page à partir d'une seule carte linguistique (un fichier JSON ou de configuration répertoriant chaque locale et son modèle d'URL). Construisez le plan du site à partir de la même carte afin que les deux ne soient jamais en désaccord.
Une liste de contrôle avant de publier
- Le même ensemble de balises apparaît sur chaque version de la page.
- Chaque version s'inclut elle-même.
- Chaque URL est absolue, renvoie 200 et est auto-canonique.
- Les codes sont d'abord linguistiques ; les régions sont de véritables codes ISO (
GB, nonUK). - Il y en a un
x-default. - Une seule méthode est utilisée.
- Le contenu visible de la page est en fait dans la langue revendiquée par la balise. Google détecte la langue à partir du contenu visible, pas à partir du code (Recherche Google Central), donc une page “française” qui est principalement anglaise ne se comportera pas comme une page française.
Parce que le rapport de ciblage international de Search Console a été retiré en 2022 (Aide de la console de recherche), vérifiez avec un robot d'exploration qui suit hreflang et signale les liens de retour manquants. La page de Google mentionne l'outil de test hreflang de Merkle et le générateur d'Aleyda Solis comme des options tierces populaires qu'il ne maintient pas. Si un outil indique qu'il n'a rien trouvé du tout, travaillez dessus notre guide de l'avertissement “pas de balises hreflang”.
Comment ConveyThis ajoute hreflang pour vous
Lorsque vous traduisez un site avec ConveyThis et publiez chaque langue sur son propre sous-dossier (/fr/) ou sous-domaine (fr.example.com), hreflang est généré automatiquement. Sur WordPress, le plugin imprime les liens alternatifs dans l'en-tête de chaque page, un par langue plus un x-default pointant vers votre page en langue originale et incluant les alternatives de langue dans son plan du site. Les balises sont construites à partir de la même liste de langues et des mêmes règles d'URL que les pages traduites, donc l'ajout d'une langue met à jour l'ensemble en une seule fois.
Cela vous laisse deux choses à vérifier : que votre cache ou plugin d'optimisation sert la tête intacte et qu'aucun autre plugin ne remet un pointage canonique des pages traduites à l'original. Le aperçu du référencement multilingue montre comment les URL traduites, les métadonnées et hreflang fonctionnent ensemble, personnalisation des URL traduites explique comment localiser les limaces et le Intégration WordPress la page couvre la configuration du plugin. Pour chaque cas limite, des variantes régionales à la pagination, voir le guide complet de mise en œuvre de hreflang.
Questions fréquemment posées
Où vont exactement les balises hreflang ?
Dans le <head> de chaque version linguistique d'une page, comme <link rel="alternate" hreflang="code" href="absolute-url"> éléments. Alternativement, mettez les mêmes informations dans un HTTP Link: en-tête ou dans votre plan de site XML.
Ai-je besoin d'une balise hreflang pour la page elle-même ?
Oui. Google exige que chaque version soit répertoriée elle-même ainsi que toutes les autres versions. L'ensemble des liens est identique sur toutes les versions.
En-UK est-il un code hreflang valide ?
Non. UK est un code réservé et n'a aucun effet dans la recherche Google. Utilisez en-GB pour l'anglais au Royaume-Uni.
Dois-je ajouter hreflang dans le HTML et le plan du site ?
Non. Google traite les méthodes comme équivalentes et affirme que l'utilisation de plusieurs méthodes n'apporte aucun avantage en matière de recherche tout en rendant la configuration plus difficile à maintenir.
Combien de temps faudra-t-il avant que Google utilise de nouvelles balises hreflang ?
Google doit réexplorer les pages concernées, cela dépend donc de la fréquence à laquelle vos pages sont explorées. Assurez-vous que toutes les versions sont indexables et liées depuis votre site, et vérifiez les URL traduites avec l'inspection des URL dans la Search Console.
Sautez le travail manuel
Garder hreflang complet sur chaque page et langue est plus facile lorsque le même système crée les URL traduites et les balises. Tu peux commencez par ConveyThis et connectez votre site.