Logo de Cecil Cecil
Sur cette page

Personnaliser le sitemap et le robots.txt

Cecil génère automatiquement /sitemap.xml et /robots.txt : ce sont des pages par défaut générées avec les templates intégrés _default/sitemap.xml.twig et _default/robots.txt.twig.

Fonctionnement

Les deux pages sont déclarées dans la configuration par défaut :

pages:
  default:
    robots:
      path: robots
      layout: robots
      output: txt
    sitemap:
      path: sitemap
      layout: sitemap
      output: xml
      changefreq: monthly
      priority: 0.5
  • le sitemap liste toutes les pages affichables (publiées, ni paginées, ni redirigées, ni exclues), y compris les sections et les taxonomies, avec leurs traductions ;
  • le robots.txt autorise tout, interdit les pages de redirection et la page 404, et indique l’emplacement du sitemap.

Exclure une page du sitemap

Ajoutez excluded dans le front matter de la page :

---
title: Merci
excluded: true
---

La page est toujours publiée, mais retirée du sitemap et des pages de liste (page d’accueil, sections, etc.). Utilisez published: false pour ne pas la publier du tout.

Modifier la fréquence et la priorité par défaut

pages:
  default:
    sitemap:
      changefreq: weekly
      priority: 0.8

Vous pouvez aussi les définir page par page, dans le front matter :

---
title: Actualités
sitemap:
  changefreq: daily
  priority: 0.9
---

Ajouter des règles au robots.txt

Créez une page pages/robots.md : son contenu est ajouté aux règles générées. Comme elle remplace la page robots par défaut, définissez excluded: true pour l’exclure du sitemap et des pages de liste.

---
layout: robots
excluded: true
output: txt
---
User-agent: GPTBot
Disallow: /

Surcharger les templates

Extrayez les templates intégrés pour partir des originaux :

php cecil.phar util:templates:extract

Ou créez layouts/sitemap.xml.twig (ou layouts/robots.txt.twig) de zéro. Par exemple, un sitemap qui ignore aussi les pages ayant une variable de front matter personnalisée sitemap_exclude :

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  {%- for p in site.pages.showable|filter(p => not p.sitemap_exclude|default(false))|sort_by_date ~%}
  <url>
    <loc>{{ url(p, {canonical: true}) }}</loc>
    <lastmod>{{ p.date|date('Y-m-d') }}</lastmod>
  </url>
  {%- endfor ~%}
</urlset>