La syntaxe
La déclaration se place dans l’en tête de chaque page, une ligne par version.
<link rel="alternate" hreflang="fr-FR" href="https://exemple.fr/page/">
<link rel="alternate" hreflang="fr-BE" href="https://exemple.fr/be/page/">
<link rel="alternate" hreflang="en" href="https://exemple.fr/en/page/">
<link rel="alternate" hreflang="x-default" href="https://exemple.fr/">
Le code de langue seul suffit quand 1 seule version existe pour cette langue. Le code pays s’ajoute uniquement pour distinguer 2 variantes de la même langue, par exemple le français de France et celui de Belgique. Déclarer un pays sans nécessité multiplie les lignes sans rien apporter.
La valeur x-default désigne la page à servir quand aucune version ne correspond au visiteur. Elle est facultative et utile dès que le site couvre plus de 2 marchés.
La règle de réciprocité
C’est le point où la plupart des configurations échouent.
Chaque page doit déclarer toutes les versions, y compris elle-même. Si la page française pointe vers l’anglaise, la page anglaise doit pointer vers la française. Une déclaration non réciproque est ignorée dans son ensemble, pas seulement sur la ligne fautive.
La conséquence pratique est qu’ajouter une langue oblige à modifier toutes les pages existantes. C’est ce qui rend la maintenance manuelle intenable au-delà de quelques pages, et qui justifie une génération automatique depuis le système.
Les quatre erreurs fréquentes
Le code pays employé comme code de langue. L’attribut attend d’abord une langue. Écrire hreflang="be" désigne le biélorusse, pas la Belgique. La forme correcte est fr-BE.
Les adresses relatives. L’adresse complète, protocole compris, est la seule forme acceptée.
Le conflit avec la canonique. Chaque version doit se désigner elle-même comme canonique. Une page française qui déclare la version anglaise comme canonique annule le dispositif : Google ne conserve qu’une page, et le hreflang n’a plus rien à trier.
Les pages en erreur ou redirigées. Une version qui ne répond pas en 200 invalide la déclaration qui la mentionne.
Ce que hreflang ne règle pas
3 attentes déçues reviennent régulièrement.
Il ne remplace pas un contenu traduit. 2 pages identiques déclarées comme versions linguistiques distinctes restent 2 pages identiques, et Google n’en retient qu’une.
Il ne cible pas un pays pour le classement. Une page déclarée fr-CA ne se positionne pas mieux au Canada du fait de cette déclaration. Le ciblage géographique passe par d’autres signaux, notamment le domaine, l’hébergement et les liens locaux.
Il ne s’applique pas aux versions non traduites. Un site français avec une simple page de contact en anglais n’a pas besoin de hreflang.
Vérifier
La Search Console signale les erreurs de ciblage international, notamment les déclarations sans retour et les codes invalides. C’est la première source à consulter, parce qu’elle reflète ce que Google a réellement interprété.
Un crawl du site complète le contrôle en listant les pages dont les déclarations ne se répondent pas et celles qui pointent vers des adresses en erreur. Sur un site à plusieurs centaines de pages et 3 langues, ces contrôles ne se font pas à la main.
La construction d’ensemble d’un site multilingue, du choix de la structure d’URL au ciblage par marché, est traitée sur la page SEO international.






