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>