# 10 — robots.txt & sitemaps : nettoyage

> **Spec** : robots.txt · XML sitemaps · Sitemap index — tier **recommended**
> **Verdict** : 🟢 **PASS avec nettoyage recommandé** · **Priorité : P3**
> **Effort estimé** : 1 h

## État des lieux

### robots.txt — fonctionnel, mais chargé de cruft

Structure valide (RFC 9309), `Sitemap:` correctement déclaré. Points à corriger :

| # | Ligne(s) | Problème | Action |
|---|---|---|---|
| 1 | `Host: https://www.abc-guepes.com` | **Non standard** — directive legacy Yandex, dépréciée depuis 2018, ignorée par tous les moteurs. La canonicalisation d'hôte se fait par 301 ([issue 01](01-redirection-apex.md)) | Supprimer |
| 2 | `Disallow: /page-data/` (groupes `*` **et** `Googlebot`) | `/page-data/` contient les JSON que Gatsby utilise pour l'hydratation côté client. La spec met en garde contre le blocage des ressources de rendu (« Google needs to render the page to rank it »). Le HTML étant entièrement pré-rendu, c'est survivable — mais c'est un risque sans bénéfice | Supprimer des deux groupes |
| 3 | `Disallow: /static/` (groupe `*`) | Bloque les assets pour tous les bots non-Google (le groupe `Googlebot` dédié, lui, ne le bloque pas — un bot utilise **un seul** groupe, le plus spécifique) | Supprimer |
| 4 | `Crawl-delay: 1` (bingbot) | Non standard ; Bing préfère le réglage dans Bing Webmaster Tools | Supprimer, configurer côté BWT |
| 5 | `Disallow: /component---*` | Wildcard `*` non-RFC (supporté Google/Bing seulement) et cible inexistante en prod (les chunks Gatsby vivent sous `/static/` et à la racine) | Supprimer |
| 6 | Groupes sociaux `facebookexternalhit`, `Twitterbot`, etc. avec `Allow: /` | Inutiles (tout est déjà autorisé par défaut) mais inoffensifs | Optionnel : simplifier |

robots.txt cible après nettoyage :

```
User-agent: *
Disallow: /dev-404-page/
Disallow: /404/
Disallow: /404.html

# Bots SEO agressifs
User-agent: AhrefsBot
Crawl-delay: 10
User-agent: MJ12bot
Crawl-delay: 10
User-agent: DotBot
Crawl-delay: 10
User-agent: SemrushBot
Crawl-delay: 30
User-agent: MauiBot
Disallow: /

Sitemap: https://www.abc-guepes.com/sitemap-index.xml
```

(Le volet **crawlers IA** — GPTBot, ClaudeBot, PerplexityBot… absents du fichier — relève de l'audit agent-readiness, traité séparément.)

### Sitemaps — conformes

- `/sitemap-index.xml` → `sitemap-0.xml`, XML valide, namespace sitemaps.org 0.9 ✓
- **`lastmod` honnêtes et différenciés** (pas un timestamp de build uniforme) ✓ — exigence clé de la spec
- 100 % des `<loc>` sur l'hôte canonique `https://www.abc-guepes.com`, sans slash final, cohérents avec les canonicals ✓
- Le 404 de `/sitemap.xml` est un **faux positif** : le sitemap vit à `/sitemap-index.xml` et est correctement déclaré dans robots.txt (chemin par défaut de `gatsby-plugin-sitemap`)

Améliorations mineures :

1. `<changefreq>` et `<priority>` présents partout — ignorés par Google, bruit inoffensif ; à retirer si le plugin le permet.
2. Pas de `<lastmod>` sur l'entrée `<sitemap>` de l'index — l'ajouter permet aux crawlers de sauter le re-fetch.
3. ⚠️ **Comptage divergent entre deux passes de l'audit : 862 vs 665 URLs.** À trancher : `curl -s https://www.abc-guepes.com/sitemap-0.xml | grep -c '<loc>'`. Si ~862, vérifier l'absence de doublons ou d'URLs de pages retirées ; si ~665, RAS.

## Vérification

```bash
curl -s https://www.abc-guepes.com/robots.txt          # plus de Host:, plus de /page-data/
curl -s https://www.abc-guepes.com/sitemap-0.xml | grep -c '<loc>'   # compter, trancher 862 vs 665
```
- Google Search Console → Sitemaps : soumis, 0 erreur, couverture d'indexation suivie.
- Tester le robots.txt dans GSC (outil de test robots) après modification.
