Aller au contenu principal
divagations - Retour à l'accueil

Un plan du site pour les robots

Guillaume Barbier

Temps de lecture : ~ 3 minutes

Il me manquait ce petit truc crucial pour guider les moteurs d'indexations, un plan du site et un fichier robots.txt qui indique sa position. Les implémenter n'est pas très compliqué, mais il y a quand même quelques points d'attention.

Trouver comment faire avec Eleventy est facile, il y a de multiples ressources à ce sujet, comme celle-ci, assez proche de ce que j'ai choisi de faire : Generate a sitemap for your Eleventy website(Opens in a new window)

Le robots.txt

Ce fichier est le plus simple, en fait il est tellement simple que l'on pourrait simplement l'écrire tel quel et juste ajouter une config pour le copier tel quel (comme on le fait pour les images) :

// In eleventy.config.js
eleventyConfig.addPassthroughCopy({ 'src/robots.txt': '/robots.txt' });

Attention !

Les points à ne pas oublier avec les robots.txt

Il y a deux points sur lesquels il ne faut pas se tromper :

  • Le fichier doit toujours être à la racine du site
  • Il doit toujours s'appeler robots.txt

Si ces deux points ne sont pas respectés, les robots ne les trouveront jamais !

PS : il faut aussi faire attention au poids max de 512ko, mais dans mon cas, ça ne devrait pas être trop dur.

Mais je suis fainéant et j'aime bien jouer au plus malin, donc à la place je me fait un petit fichier robots.liquid :

---
permalink: /robots.txt
layout: false
eleventyExcludeFromCollections: true
---
User-agent: *
Allow: /

Host: {{ base.url }}

Sitemap: {{ base.url }}/sitemap.xml

Au final, je n'ai rien à interdire dans mon fichier robots.txt et le templating me sert uniquement à dynamiser le nom de domaine (comme ça si, un jour, je change de nom de domaine, je n'ai qu'une donnée à changer à un endroit).

Le sitemap.xml

Contrairement au précédent fichier, il y a un vrai intérêt à dynamiser ce fichier, vu qu'il doit contenir toutes les pages web du site.

Et avec les collections, c'est assez facile :

---
permalink: /sitemap.xml
layout: false
eleventyExcludeFromCollections: true
---
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  {%- for page in collections.all %}
    <url>
      <loc>{{ base.url }}{{ page.url }}</loc>
      <lastmod>{{ page.date | dateForURL }}</lastmod>
      <changefreq>{{ page.data.changeFreq | default: "monthly" }}</changefreq>
    </url>
  {%- endfor %}
</urlset>

Avertissement

Bien exclure tous les contenus non-pertinents

L'objectif est de ne générer des entrées que pour les contenus pertinent. Il faut donc bien s'assurer d'exclure des collections tous les contenus transformés par Eleventy et qui ne sont pas pertinents, comme :

  • les pages 404
  • les .htaccess et .htpasswd
  • les pages que nous venons d'ajouter
  • etc.

C'est fini pour les robots, tout est en place.

Maintenant je m'interroge… et pour les humains ?
Car un plan exhaustif et à jour du site est un mode de navigation alternative plébiscité par les normes d'accessibilité (Exemple dans les WCAG : G63: Providing a site map(Opens in a new window))

Sauf que les humains ne se contenteront pas d'un paquet d'URL en vrac… Il leur faut du sens !

Le sujet est un peu plus complexe à résoudre avec Eleventy, il va falloir que je travaille dessus…