robots.txt : le fichier qui contrôle le crawl de votre site

robots.txt est un fichier texte placé à la racine d'un hôte qui indique aux robots d'exploration quelles URL ils ont le droit de demander. Il régule le crawl, pas l'indexation : une URL bloquée peut encore apparaître dans Google si d'autres sites y renvoient.

Ce que robots.txt bloque, et ce qu’il ne bloque pas

robots.txt est un fichier texte encodé en UTF-8 qui liste les chemins qu'un robot a le droit de demander. Il ne protège rien. Il n'authentifie personne. C'est une convention que les robots sérieux respectent et que les autres ignorent, puisque rien dans HTTP ne force son application.

La confusion la plus coûteuse porte sur l'indexation. `Disallow` empêche le téléchargement d'une URL, pas son apparition dans les résultats. Si dix sites pointent vers `https://exemple.fr/promo-privee`, Google peut afficher cette adresse avec un extrait vide et la mention « Aucune information n'est disponible pour cette page ». Search Console la classe alors dans « Indexée malgré le blocage par le fichier robots.txt ». Pour retirer réellement une page, il faut autoriser son exploration et servir une balise `` ou un en-tête `X-Robots-Tag: noindex`. Un robot bloqué ne lira jamais l'instruction qui lui demande de partir.

Écrit en 1994 par Martijn Koster, le protocole d'exclusion des robots n'a été normalisé qu'en septembre 2022, avec la RFC 9309. Ces 28 années d'usage sans texte de référence expliquent les divergences d'implémentation qui traînent encore, en particulier sur `Crawl-delay` et sur les jokers.

Emplacement, portée et code de réponse HTTP

Le fichier se trouve à la racine de l'hôte et nulle part ailleurs : `https://exemple.fr/robots.txt`. Un fichier déposé dans `https://exemple.fr/blog/robots.txt` n'est jamais lu, par aucun moteur.

Sa portée est limitée au triplet schéma + hôte + port. `https://exemple.fr/robots.txt` ne régit ni `http://exemple.fr`, ni `https://blog.exemple.fr`, ni `https://exemple.fr:8443`. Chaque hôte a besoin du sien. C'est pour cette raison qu'un sous-domaine de préproduction reste ouvert au crawl alors que le domaine principal est verrouillé, et l'inverse arrive tout aussi souvent.

Google lit au maximum 500 kibioctets (512 000 octets) et ignore tout ce qui suit. Le fichier est mis en cache jusqu'à 24 heures : une correction n'est pas prise en compte dans la minute. Les redirections sont suivies sur au moins 5 sauts, au-delà le fichier est traité comme absent.

Réponse sur /robots.txtInterprétation RFC 9309Effet sur le crawl
200 avec contenuFichier valideLes règles s'appliquent
200 avec fichier videAucune règleTout est autorisé
301 / 302Redirection, 5 sauts minimumRègles du fichier cible
404 / 410UnavailableTout est autorisé
429 / 5xxUnreachableBlocage total tant que l'erreur dure

Syntaxe : quatre directives utiles, deux jokers

Le fichier par défaut de WordPress tient en quatre lignes et illustre presque tout le protocole : User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Sitemap: https://exemple.fr/sitemap_index.xml

Un robot n'applique qu'un seul groupe `User-agent`, celui dont le nom correspond le plus précisément, et le groupe `*` à défaut. Chez Google, `Googlebot-Image` retombe sur le groupe `Googlebot` quand aucun groupe ne porte son nom. Les noms d'agents ne sont pas sensibles à la casse, les chemins le sont : `Disallow: /Photos` laisse passer `/photos`.

En cas de conflit entre `Allow` et `Disallow`, la règle dont le chemin est le plus long l'emporte, et à longueur égale c'est `Allow` qui gagne. Dans l'exemple ci-dessus, `/wp-admin/admin-ajax.php` fait 24 caractères contre 10 pour `/wp-admin/` : le fichier AJAX reste explorable, ce qui évite de casser les blocs dynamiques du thème.

Deux caractères spéciaux sont reconnus par la RFC 9309 comme par les grands moteurs. `*` remplace n'importe quelle suite de caractères, `$` marque la fin de l'URL. `Disallow: /*.pdf$` bloque les PDF. `Disallow: /*?` bloque toute URL contenant un point d'interrogation, donc les filtres à facettes, mais aussi la pagination et le suivi de campagne si vos URL utilisent des paramètres.

DirectiveRôleStatut chez Google
User-agentOuvre un groupe de règlesSupportée
DisallowInterdit un préfixe de cheminSupportée
AllowRouvre un chemin dans une zone interditeSupportée
SitemapDéclare un sitemap en URL absolue, hors groupeSupportée
Crawl-delayDélai imposé entre deux requêtesIgnorée (Bing la respecte)
NoindexDésindexation depuis robots.txtAbandonnée le 1er septembre 2019
HostDéclaration du domaine canoniqueJamais supportée

Les erreurs qui coûtent du trafic

L'accident le plus fréquent tient en une ligne : `Disallow: /` copié de la préproduction vers la production. Le trafic ne s'effondre pas le jour même, il glisse sur deux à trois semaines, le temps que les pages déjà indexées se périment. Le rapport « Indexation des pages » de Search Console montre alors la catégorie « Bloquée par le fichier robots.txt » qui gonfle pendant que les pages valides diminuent.

Testez le fichier côté serveur plutôt que de faire confiance à ce que vous avez écrit : curl -sI https://exemple.fr/robots.txt | head -n 1 curl -sA "Googlebot" https://exemple.fr/robots.txt La première commande donne le code de réponse et attrape les 301 silencieuses vers la page d'accueil. La seconde sert le fichier tel qu'un robot le reçoit, ce qui révèle les configurations qui varient selon l'agent utilisateur. Le testeur robots.txt historique de Search Console a été retiré fin 2023 ; le rapport `robots.txt` des Paramètres le remplace et affiche la dernière version lue par Google, avec sa date de récupération.

  • Bloquer `/wp-content/` ou `/assets/` : Googlebot ne charge plus le CSS ni le JavaScript, rend la page nue et la juge illisible sur mobile.
  • Compter sur robots.txt pour masquer un répertoire privé, alors que le fichier est public et sert de plan de vos zones sensibles à quiconque l'ouvre.
  • Servir une page 404 personnalisée avec un code 200 : le parseur reçoit du HTML, n'y trouve aucune directive et considère le site entièrement ouvert.
  • Utiliser `Disallow` pour supprimer une URL de l'index, ce qui produit l'effet inverse en empêchant la lecture du `noindex`.
  • Laisser une erreur 503 sur `/robots.txt` pendant une maintenance : l'exploration de tout le site s'arrête, pas seulement celle des pages en travaux.

Les robots d’IA et les jetons de contrôle

Depuis 2023, la liste des agents à gérer s'est allongée et ils ne font pas tous la même chose. Bloquer au hasard coûte de la visibilité dans les réponses génératives, sans rien récupérer en échange.

Aucun de ces blocages n'est contraignant. Un robot malveillant se déclare sous le nom qu'il veut et ignore le fichier. Le seul filtrage réel se fait au niveau du serveur ou du pare-feu applicatif, sur l'adresse IP. Pour vérifier qu'une visite se réclamant de Googlebot en est bien une, la méthode officielle reste la double résolution DNS : `host 66.249.66.1` doit renvoyer un nom en `.googlebot.com`, et ce nom doit se résoudre vers la même adresse. Google publie également ses plages d'adresses dans un fichier JSON téléchargeable, ce qui évite une requête DNS par visite sur les gros volumes.

  • `GPTBot` : collecte d'OpenAI destinée à l'entraînement des modèles.
  • `OAI-SearchBot` : indexation pour la recherche de ChatGPT, distincte de l'entraînement.
  • `ChatGPT-User` : récupération d'une page à la demande explicite d'un utilisateur.
  • `ClaudeBot` : collecte d'Anthropic.
  • `PerplexityBot` : index de Perplexity.
  • `CCBot` : Common Crawl, dont les archives alimentent de nombreux jeux d'entraînement tiers.
  • `Google-Extended` et `Applebot-Extended` : ce ne sont pas des robots, aucune requête n'est jamais faite sous ces noms. Interdits, ils excluent votre contenu de l'entraînement et du grounding de Gemini ou d'Apple Intelligence, sans toucher au crawl ni au classement dans la recherche.

Questions fréquentes

Bloquer une page dans robots.txt la supprime-t-elle de Google ?

Non, et c'est souvent le contraire qui se produit. L'URL peut rester indexée sans description si d'autres pages y renvoient. Pour désindexer, autorisez l'exploration et servez un `noindex` en balise meta ou en en-tête `X-Robots-Tag`. Si l'urgence est réelle, l'outil de suppression de Search Console masque une URL pendant environ six mois, le temps de mettre en place la solution durable.

Ai-je vraiment besoin d’un fichier robots.txt ?

Il n'est pas obligatoire. Un 404 sur `/robots.txt` est interprété comme une autorisation complète, ce qui convient à un petit site sans zone à protéger. Deux raisons justifient quand même d'en poser un : y déclarer votre sitemap, et éviter qu'une erreur serveur transforme un fichier manquant en 5xx, réponse qui stoppe le crawl au lieu de l'ouvrir.

Un seul robots.txt suffit-il pour tous mes sous-domaines ?

Non. Chaque couple hôte + protocole a besoin de son propre fichier. `boutique.exemple.fr` et `exemple.fr` sont deux hôtes distincts pour le protocole, et `http://` reste séparé de `https://`. C'est la cause classique d'un environnement de recette qui se retrouve indexé alors que le site principal est correctement configuré.

Comment empêcher les IA d’utiliser mon contenu ?

Déclarez un groupe par agent : `User-agent: GPTBot` puis `Disallow: /`, et répétez pour `ClaudeBot`, `CCBot`, `PerplexityBot`, `Google-Extended`. La portée est déclarative et non rétroactive : ce qui a déjà été collecté et intégré à un modèle ne peut pas être retiré par ce moyen. Séparez aussi la collecte d'entraînement de l'indexation pour la recherche, sinon vous disparaissez des réponses citant des sources.

Peut-on protéger un répertoire d’administration avec robots.txt ?

Non, et l'écrire aggrave le problème. N'importe qui peut lire votre fichier, un `Disallow: /admin-prive/` publie donc l'existence et l'adresse exacte de ce répertoire. La protection passe par une authentification HTTP, un filtrage par IP ou une réponse 403, pas par une ligne de texte que le visiteur choisit de respecter ou non.

À lire aussi

agent utilisateur · codes statut http · bot · cache

Testez vos connaissances

Quiz rapide Question 1 sur 3

Une URL bloquée par `Disallow` peut-elle apparaître dans les résultats de Google ?

Newsletter

Recevez nos guides IP & réseau

Nouveaux outils, définitions et astuces sécurité, directement par email. Pas de spam, désinscription en un clic.