Hreflang et canonical : configurer un site multilingue
Pour un site en français et en anglais, publiez chaque traduction sur une URL distincte. Reliez les pages équivalentes avec hreflang et choisissez une URL canonique pour chaque contenu. Dans le cas courant de deux traductions complètes, la page française indique sa propre URL canonique et la page anglaise fait de même.
Vérifiez que Google peut consulter les pages et que votre CMS conserve ces relations lorsque vous changez une URL ou retirez une traduction. Les domaines example.com illustrent un site fictif.
Hreflang et canonical : deux informations différentes
Avec hreflang, vous déclarez les variantes linguistiques ou régionales d’un même contenu. Avec rel="canonical", vous indiquez l’URL que vous préférez pour un contenu accessible à plusieurs adresses. Google tient compte de ces signaux, mais peut choisir une autre URL canonique. Documentation Google sur les URL canoniques.
Une page française et sa traduction anglaise
Configuration à prévoir — Deux URL canoniques distinctes, reliées par hreflang
La même page française avec et sans paramètre de suivi
Configuration à prévoir — Une URL française préférée ; la variante de suivi peut désigner cette URL comme canonique
Deux variantes régionales françaises aux contenus proches
Configuration à prévoir — Examiner les différences utiles, choisir la canonique appropriée et déclarer les variantes régionales
Un ancien article fusionné dans un guide
Configuration à prévoir — Redirection permanente vers le guide équivalent, puis mise à jour des liens et annotations
Une traduction complète n’est pas un doublon du seul fait qu’elle reprend le même sujet dans une autre langue. Google distingue ce cas des pages dont seul le menu change de langue. L’absence de hreflang ne suffit donc pas à justifier une affirmation de « pénalité pour contenu dupliqué ». Documentation sur les versions localisées.
Choisir entre fr, en, fr-CH et en-CH
Choisissez les codes selon le public de chaque version :
fr : contenu destiné aux francophones, sans ciblage régional explicite.
en : contenu destiné aux anglophones, sans ciblage régional explicite.
fr-CH : contenu en français destiné au marché suisse.
en-CH : contenu en anglais destiné au marché suisse.
Le pays reste facultatif. Une entreprise suisse peut utiliser fr et en si ces versions servent aussi ses lecteurs à l’étranger. Votre adresse à Genève ou l’extension de votre domaine ne vous oblige pas à créer une URL par pays.
Si vous proposez des versions régionales, définissez aussi la version à proposer aux autres lecteurs de la même langue. Vous pouvez, par exemple, associer fr-CH et fr à la même URL lorsqu’elle sert les deux publics. Documentez ce choix pour que les développeurs et les responsables du contenu utilisent la même règle. Google recommande une variante générique lorsqu’un site possède plusieurs versions régionales d’une langue. Codes et variantes pris en charge.
Utilisez la syntaxe langue-pays, telle que fr-CH, et non un pays seul. Pour un site bilingue, déclarez les langues que vous publiez : aucune règle SEO ne vous impose d’ajouter toutes les langues nationales suisses.
Si votre page française sert les publics suisse et international, vous pouvez conserver son annotation fr et ajouter cette annotation sur les deux pages du groupe :
<link rel="alternate" hreflang="fr-CH"
href="https://example.com/fr/services/sites-web">
Les deux codes français désignent ici la même page. Créez une autre URL régionale lorsque votre offre ou votre contenu justifie une version distincte.
Préparer le tableau des traductions
Avant de modifier le code, rassemblez les relations entre vos pages. Utilisez l’identifiant du contenu dans le CMS plutôt qu’une ressemblance entre les slugs.
service-web — deux traductions publiées
FR : https://example.com
EN : https://example.com
guide-budget — français publié
FR : https://example.com
EN : aucune traduction publiée.
guide-seo — fusion à préparer
Consignez l’ancienne URL française et l’ancienne URL anglaise. Préparez la fusion dans les deux langues.
Pour chaque ligne, ajoutez la canonique, le code linguistique, l’éventuel x-default et la personne responsable. Ce tableau permet de détecter une traduction absente avant que le CMS ne génère un lien vers une page inexistante.
Reliez une page de service à son équivalent anglais. Associer cette page à la homepage anglaise ne fournit pas une traduction du service. Pour organiser le contenu et la navigation en amont, consultez notre guide sur la création d’un site multilingue.
Exemple de balisage HTML pour deux pages FR/EN
Cet exemple utilise fr et en. Placez les balises dans le <head> de chaque page, en conservant les mêmes deux relations hreflang.
Sur la page française
<html lang="fr">
<head>
<title>Création de sites web</title>
<link rel="canonical"
href="https://example.com/fr/services/sites-web">
<link rel="alternate" hreflang="fr"
href="https://example.com/fr/services/sites-web">
<link rel="alternate" hreflang="en"
href="https://example.com/en/services/websites">
</head>
Sur la page anglaise
<html lang="en">
<head>
<title>Website development</title>
<link rel="canonical"
href="https://example.com/en/services/websites">
<link rel="alternate" hreflang="fr"
href="https://example.com/fr/services/sites-web">
<link rel="alternate" hreflang="en"
href="https://example.com/en/services/websites">
</head>
Chaque page se référence elle-même et référence sa traduction. Les URL hreflang doivent être absolues. Google accepte aussi des variantes sur des domaines différents : vous devez alors conserver les liens de retour entre les pages. Règles d’implémentation HTML.
Pour les canoniques, Google recommande aussi des URL absolues, tout en prenant en charge les URL relatives. Utiliser le même format absolu dans votre CMS simplifie les contrôles et évite de conserver une adresse de préproduction lors d’un déploiement. Recommandations sur les canoniques.
L’attribut HTML lang aide les technologies d’assistance à lire votre contenu dans la bonne langue. Conservez-le, même si Google indique détecter la langue à partir du contenu plutôt qu’avec cet attribut ou hreflang. Gestion des sites multilingues.
Ajouter x-default si vous avez prévu une version de repli
x-default reste facultatif. Vous pouvez choisir une page de sélection de langue ou une version du contenu pour les visiteurs dont la langue ne figure pas dans vos annotations. Dans notre exemple, si vous retenez la version anglaise comme repli, ajoutez sur les deux pages :
<link rel="alternate" hreflang="x-default"
href="https://example.com/en/services/websites">
Cette balise renseigne Google ; elle n’effectue pas une redirection dans le navigateur. Explication de x-default par Google.
Choisir une méthode que votre équipe peut maintenir
Google prend en charge trois méthodes pour déclarer les versions localisées : les balises HTML, les en-têtes HTTP et le sitemap XML. Vous pouvez choisir une seule méthode. Les cumuler n’apporte pas de bénéfice de recherche et multiplie les points à synchroniser. Méthodes prises en charge.
Balises dans le head HTML
Usage pratique — Pages générées par un CMS
Point à contrôler — Relations de traduction et contenu du head
Sitemap XML
Usage pratique — Génération centralisée d’un grand nombre d’URL
Point à contrôler — Une entrée par URL et les mêmes variantes dans chaque entrée
En-tête HTTP Link
Usage pratique — Documents tels que des PDF traduits
Point à contrôler — En-têtes renvoyés par le serveur pour chaque document
Voici un sitemap minimal pour les deux pages de l’exemple. Chaque entrée contient sa propre URL et les deux variantes.
<?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/fr/services/sites-web</loc>
<xhtml:link rel="alternate" hreflang="fr"
href="https://example.com/fr/services/sites-web"/>
<xhtml:link rel="alternate" hreflang="en"
href="https://example.com/en/services/websites"/>
</url>
<url>
<loc>https://example.com/en/services/websites</loc>
<xhtml:link rel="alternate" hreflang="fr"
href="https://example.com/fr/services/sites-web"/>
<xhtml:link rel="alternate" hreflang="en"
href="https://example.com/en/services/websites"/>
</url>
</urlset>
Si vous retenez cette méthode pour hreflang, vous pouvez conserver les canoniques dans le HTML. Les deux informations remplissent des fonctions différentes.
Pour deux PDF traduits, le serveur peut renvoyer le même en-tête sur chaque document :
Link: <https://example.com/fr/guides/seo.pdf>; rel="alternate"; hreflang="fr", <https://example.com/en/guides/seo.pdf>; rel="alternate"; hreflang="en"
Cet exemple déclare les traductions. Si vous devez aussi déclarer une canonique HTTP, utilisez une relation rel="canonical" distincte, sans lui ajouter hreflang. Canoniques dans les en-têtes HTTP.
Traiter les cas qui demandent une décision
Une traduction manque
Publiez les variantes qui existent. Ne créez pas une annotation vers une URL anglaise vide ou une page française affichée sous /en/. Pour un guide disponible seulement en français, le sélecteur de langue peut expliquer que la traduction manque. Ajoutez les relations réciproques lorsque vous publiez l’anglais.
Plusieurs URL affichent le même contenu
Si ?utm_source=newsletter ajoute seulement une information de suivi, vous pouvez conserver la canonique de l’URL sans ce paramètre. Si un paramètre change le contenu, examinez ce qu’il produit avant de le supprimer de la canonique.
Pour une liste paginée, Google recommande une URL canonique propre à chaque page : la page 2 contient une partie différente de la liste. Ne la désignez pas comme un doublon de la page 1. Reliez les variantes linguistiques équivalentes lorsqu’elles correspondent au même contenu. Recommandations sur la pagination.
Deux variantes régionales restent dans la même langue
Deux versions françaises destinées à des marchés différents peuvent avoir des contenus proches. Google prévoit alors de combiner une préférence canonique avec les annotations régionales. Décidez selon les différences de contenu, d’offre ou de conditions ; la règle « chaque URL pointe forcément vers elle-même » ne couvre pas tous les doublons régionaux. Gestion des doublons régionaux.
Le site impose une langue selon la localisation
Gardez chaque traduction accessible sur son URL. Proposez un changement de langue sans obliger le visiteur à accepter une redirection fondée sur son IP. Google avertit qu’un contenu adapté à la localisation ou à l’en-tête Accept-Language peut empêcher ses robots de découvrir toutes les variantes. Exploration des pages adaptées aux paramètres régionaux.
Vérifier la configuration avant et après publication
Attribuez ces contrôles à un développeur et à la personne responsable du SEO. Réalisez d’abord la recette sur les modèles concernés, puis vérifiez les URL publiées.
Réponse HTTP
Résultat attendu pour notre exemple FR/EN — Chaque URL finale renvoie 200, sans connexion obligatoire
Contenu
Résultat attendu pour notre exemple FR/EN — Le corps de la page correspond à la langue annoncée
Exploration et indexation
Résultat attendu pour notre exemple FR/EN — Pas de blocage robots.txt ni de noindex sur les pages destinées à la recherche
Canonique
Résultat attendu pour notre exemple FR/EN — Une canonique cohérente, française sur FR et anglaise sur EN
Hreflang
Résultat attendu pour notre exemple FR/EN — Deux URL absolues, auto-références et liens de retour
Sélecteur de langue
Résultat attendu pour notre exemple FR/EN — Lien vers le contenu équivalent lorsqu’il existe
Liens internes et sitemap
Résultat attendu pour notre exemple FR/EN — URL finales cohérentes avec les canoniques
Nouveau contenu
Résultat attendu pour notre exemple FR/EN — Une nouvelle traduction met à jour les deux versions
Suppression ou changement d’URL
Résultat attendu pour notre exemple FR/EN — Retrait des anciennes relations et contrôle des redirections
Inspectez le HTML renvoyé et le HTML rendu si votre site utilise JavaScript pour modifier le head. Pour vérifier l’indexation, utilisez l’Inspection d’URL de Search Console et comparez la canonique déclarée avec celle choisie par Google. Le test en direct renseigne sur l’accès actuel ; il ne prouve pas que Google a déjà adopté la nouvelle configuration dans son index. Aide de l’Inspection d’URL.
Google doit pouvoir consulter la page pour lire une instruction noindex. Un blocage dans robots.txt peut l’empêcher de voir cette instruction. Pour consolider des doublons, utilisez la préférence canonique adaptée ; ne remplacez pas cette décision par un noindex sur une traduction que vous souhaitez rendre visible. Documentation sur noindex.
L’ancien rapport « Ciblage international » de Search Console a disparu. Google continue à utiliser hreflang, mais vous devez contrôler les annotations avec un crawl ou un outil de validation. Avis de suppression du rapport.
Diagnostiquer une mauvaise version dans Google
Commencez par l’URL concernée, puis examinez sa traduction. Vérifiez le contenu, l’accès, la canonique choisie et les relations réciproques. Une balise correcte sur la page française ne répare pas une traduction anglaise qui renvoie 404.
Google choisit une canonique inattendue
Vérification prioritaire — HTML, en-têtes, redirections et contenu des deux pages
Action possible — Corriger les signaux contradictoires et examiner les différences de contenu
La traduction n’apparaît pas dans l’index
Vérification prioritaire — URL accessible, noindex, robots.txt, contenu traduit
Action possible — Rétablir l’accès ou compléter la traduction
Un outil signale un lien de retour manquant
Vérification prioritaire — Hreflang sur la page cible
Action possible — Générer les annotations depuis la même relation CMS
Les balises conservent une ancienne URL
Vérification prioritaire — Redirection et relation de traduction
Action possible — Remplacer la cible par l’URL finale
Après correction, Google doit réexplorer les pages. Une recette sans erreur ne garantit ni une position ni un délai de prise en compte. Diagnostic des problèmes canoniques.
Fusionner des articles sans perdre les destinations linguistiques
Préparez une correspondance ancienne URL → destination pour chaque langue. Par exemple, redirigez un ancien guide français vers le nouveau guide français et faites le même travail pour l’anglais.
Avant d’activer les redirections :
1. Intégrez dans le guide final les réponses utiles de chaque article absorbé.
2. Publiez les destinations et vérifiez leur contenu, leur réponse 200 et leur indexabilité.
3. Configurez les redirections permanentes 301 vers les destinations finales, en un saut.
4. Mettez à jour les liens internes, les canoniques et les relations hreflang.
5. Retirez les URL absorbées du sitemap des articles indexables et contrôlez chaque redirection.
Conservez le relevé des anciennes URL et un état de la performance du sujet avant la fusion. Vous pourrez suivre les visites et les requêtes sur l’ensemble ancien + nouveau, dans chaque langue. Google accepte les redirections vers un contenu consolidé pertinent et recommande de les conserver au moins un an. Documentation sur les changements d’URL. Notre guide sur la migration SEO couvre la préparation d’une refonte plus large.
Faire vérifier votre site multilingue
Pour préparer une mise en ligne ou comprendre une mauvaise association entre langues, rassemblez votre tableau de traductions et quelques URL représentatives. EWM peut vous accompagner dans le travail de référencement et la conception de votre site. Intégrez ces contrôles à la recette des prochaines modifications du CMS.