Sitemap multilingue XML

En décembre 2011, Google annonçait le support d'une balise alternate/hreflang pour préciser les versions linguistiques existantes pour une même page directement dans la balise <head> d'une page :

<link rel="alternate" hreflang="fr" href="http://www.mon-domaine.com/fr">
<link rel="alternate" hreflang="en" href="http://http://www.mon-domaine.com/en">

En mai 2012, Google ajouta le support du alternate/hreflang au protocole sitemap.

Désormais, si vous souhaitez préciser des versions linguistiques différentes pour une même URL, il est possible de le faire directement dans votre sitemap XML.

Imaginez que vous avez une page en anglais qui est destinée aux anglophones en général. Vous avez également l'équivalent de cette page destinée aux germanophones en général et une autre page équivalent destinée aux germanophones situés en Suisse. Votre groupe de pages équivalente est donc :

  • www.mon-domaine.com/english/
  • www.mon-domaine.com/deutsch/
  • www.mon-domaine.com/schweiz-deutsch/

Le fichier sitemap suivant informe Google que la page mon-domaine.com/english/ à une équivalence en allemand (mon-domaine.com/deutsch/) et en Suisse-allemand (mon-domaine.com/schweiz-deutsch/).

<?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>http://www.mon-domaine.com/english/</loc>
    <xhtml:link rel="alternate" hreflang="de" href="http://www.mon-domaine.com/deutsch/" />
    <xhtml:link rel="alternate" hreflang="de-ch href="http://www.mon-domaine.com/schweiz-deutsch/" />
    <xhtml:link rel="alternate" hreflang="en" href="http://www.mon-domaine.com/english/" />
  </url>
  <url>
    <loc>http://www.mon-domaine.com/deutsch/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="http://www.mon-domaine.com/english/" />
    <xhtml:link rel="alternate" hreflang="de-ch" href="http://www.mon-domaine.com/schweiz-deutsch/" />
    <xhtml:link rel="alternate" hreflang="de" href="http://www.mon-domaine.com/deutsch/" />
  </url>
  <url>
    <loc>http://www.mon-domaine.com/schweiz-deutsch/</loc>
    <xhtml:link rel="alternate" hreflang="de" href="http://www.mon-domaine.com/deutsch/" />
    <xhtml:link rel="alternate" hreflang="en" href="http://www.mon-domaine.com/english/" />
    <xhtml:link rel="alternate" hreflang="de-ch" href="http://www.mon-domaine.com/schweiz-deutsch/" />
  </url>
</urlset>

Dans le cas de l'utilisation d'un sitemap multilingue, il est nécessaire de spécifier l'espace de nom suivant dans la balise urlset : xmlns:xhtml="http://www.w3.org/1999/xhtml"

Il est nécessaire de créer une balise url pour chaque URL. Chaque balise <url> doit inclure toutes les versions linguistiques d'elle-même via l'utilisation des attributs : xhtml:link rel="alternate" hreflang="XX", elle-même inclue.