Un client indépendant du reste du parc que je gère m’a transmis un sitemap XML généré par un plugin SEO tiers, mélangeant sans distinction les URL françaises et anglaises de son site, sans la moindre annotation reliant une page à sa traduction. Google Search Console indexait correctement les deux versions séparément, mais sans jamais comprendre qu’il s’agissait de traductions d’un même contenu, ce qui l’amenait parfois à afficher la version française dans les résultats de recherche britanniques.
Le sitemap XML seul ne résout jamais ce problème : c’est l’annotation hreflang à l’intérieur du sitemap, ou en alternative dans le <head> de chaque page, qui indique explicitement aux moteurs de recherche la relation entre les différentes versions linguistiques d’un même contenu.
La structure attendue d’un sitemap avec hreflang
Le protocole des sitemaps, documenté sur sitemaps.org, permet d’ajouter à chaque entrée <url> une ou plusieurs balises <xhtml:link> pointant vers les versions alternatives de la même page dans d’autres langues. Chaque URL du site doit lister l’intégralité de ses variantes linguistiques, elle-même incluse avec la valeur hreflang correspondant à sa propre langue :
<url>
<loc>https://exemple.fr/nos-services/</loc>
<xhtml:link rel="alternate" hreflang="fr" href="https://exemple.fr/nos-services/" />
<xhtml:link rel="alternate" hreflang="en" href="https://exemple.fr/en/our-services/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://exemple.fr/en/our-services/" />
</url>
Cette structure doit se répéter pour chaque URL alternative également présente dans le sitemap, avec le même jeu complet de balises xhtml:link, dans le même ordre logique. Une incohérence entre deux entrées, où une page pointe vers sa traduction mais où la traduction ne pointe pas en retour vers l’original, constitue une erreur fréquente qui invalide la relation aux yeux des moteurs de recherche.
Configurer un plugin multilingue pour cette génération
Polylang, dans sa version Pro, ainsi que WPML combinés à un plugin SEO compatible, génèrent normalement cette structure automatiquement dans le sitemap XML natif de WordPress, sans intervention manuelle, à condition que les traductions de chaque page soient correctement liées entre elles dans l’interface d’administration. Le point de configuration à vérifier se situe généralement dans les réglages SEO du plugin, section sitemap, où une option active ou désactive l’inclusion des balises hreflang.

Vérifier la génération avec un outil de validation
Après activation, j’ouvre systématiquement l’URL du sitemap directement dans un navigateur et je recherche la présence de la chaîne xhtml:link pour confirmer visuellement que l’annotation est bien générée. Un contrôle plus poussé consiste à vérifier, pour un échantillon d’URL, que chaque relation est bien réciproque entre la version française et la version anglaise.
- Le sitemap doit rester synchronisé automatiquement à chaque publication ou modification de traduction, sans régénération manuelle nécessaire.
- Un plugin de cache agressif peut servir une version obsolète du sitemap : vérifiez la configuration d’exclusion du cache pour les fichiers XML de sitemap.
- La balise
x-defaultdoit pointer vers une version cohérente avec la structure du site, généralement la langue par défaut ou une page de sélection de langue.
Le cas d’un site avec sitemaps séparés par langue
Une architecture alternative consiste à générer un fichier sitemap distinct par langue, référencés depuis un fichier d’index de sitemaps commun. Dans ce cas, l’annotation hreflang doit tout de même être présente à l’intérieur de chaque fichier de langue, puisque la relation entre langues ne peut pas être déduite du simple fait que les fichiers sont séparés. Cette architecture facilite en revanche la soumission ciblée d’un sitemap par langue dans certains outils de suivi qui distinguent les propriétés par domaine ou par dossier.
Je recommande de toujours soumettre le sitemap complet, avec toutes les langues et leurs annotations, à Google Search Console plutôt que de multiplier les soumissions partielles : cela réduit le risque d’oubli d’une langue lors d’une future mise à jour du site.
Diagnostiquer une annotation absente ou incomplète
Quand l’annotation n’apparaît pas malgré une configuration apparemment correcte du plugin, la cause vient presque toujours d’une traduction non liée correctement entre elle dans l’interface d’administration : Polylang et WPML ne peuvent générer une relation hreflang que pour des contenus explicitement déclarés comme traductions l’un de l’autre. Une page dupliquée manuellement sans passer par le mécanisme officiel de traduction du plugin n’apparaîtra jamais dans cette annotation, même si son contenu est visuellement traduit.
En résumé
Un sitemap XML multilingue sans annotation hreflang laisse les moteurs de recherche deviner seuls la relation entre vos versions linguistiques, avec le risque de voir la mauvaise langue indexée pour le mauvais pays. La génération automatique par un plugin multilingue bien configuré couvre la majorité des projets ; il reste indispensable de vérifier visuellement la présence des balises xhtml:link et la réciprocité des relations avant de considérer le sitemap fiable.