Autoriser ou bloquer les robots d'IA sur WordPress - robots.txt virtuel, fichier physique et filtre PHP
Où modifier robots.txt sur WordPress pour refuser GPTBot ou ClaudeBot sans quitter ChatGPT Search, Claude et Perplexity, fichier, filtre PHP ou extension SEO.
Sur un site WordPress installé par vos soins, le fichier robots.txt peut venir de trois endroits : WordPress lui-même, qui le génère à la volée, un fichier réel déposé à la racine du site, ou une extension SEO qui réécrit la version générée. Savoir lequel est réellement servi est la première étape, car une modification faite au mauvais endroit n'a aucun effet. Ce guide explique chaque méthode, donne un fichier prêt à copier qui refuse l'entraînement tout en laissant passer les robots de recherche de ChatGPT, Claude et Perplexity, et liste les pièges propres à WordPress. Il ne couvre pas les sites hébergés sur WordPress.com, qui disposent de leurs propres réglages.
Comment WordPress produit son robots.txt
Tant qu'aucun fichier robots.txt n'existe à la racine, WordPress répond lui-même à l'adresse /robots.txt avec la fonction do_robots(). Le contenu par défaut est minimal :
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://www.example.com/wp-sitemap.xml
La ligne Sitemap est ajoutée depuis WordPress 5.5, uniquement si le site est public. Une extension SEO qui gère son propre plan du site peut la remplacer.
Avant d'être envoyé, ce texte passe par le filtre robots_txt (disponible depuis WordPress 3.0), qui reçoit deux paramètres : le contenu généré et un booléen indiquant si le site est public. C'est ce filtre qu'utilisent les extensions SEO, et vous pouvez l'utiliser aussi.
Dès qu'un fichier robots.txt réel est présent à la racine, le serveur web le sert directement : WordPress n'est pas appelé, le filtre ne s'exécute pas et les éditeurs des extensions SEO n'ont plus d'effet. La documentation de WordPress rappelle aussi que la version virtuelle ne fonctionne que si WordPress est installé à la racine du domaine.
Le réglage « Visibilité pour les moteurs de recherche »
Dans Réglages > Lecture, la case « Demander aux moteurs de recherche de ne pas indexer ce site » ne sert pas à trier les robots d'IA. Depuis WordPress 5.3, elle ajoute une balise <meta name="robots" content="noindex,nofollow"> dans l'en-tête des pages et ne modifie plus robots.txt ; jusqu'à la version 5.2, elle servait un Disallow: / pour tous les robots. C'est une demande globale adressée à tous les moteurs. Si vous voulez être visible dans les réponses des assistants, laissez cette case décochée et réglez les robots d'IA dans robots.txt.
Choisir une seule méthode
Trois méthodes coexistent, et les mélanger est la première source d'erreurs :
- Un fichier physique déposé par FTP ou par le gestionnaire de fichiers de l'hébergeur. Simple et lisible, mais il prend le pas sur tout le reste.
- Un filtre PHP dans une extension « must-use » ou dans
functions.php. Il conserve la version générée par WordPress, y compris la ligneSitemap. - L'éditeur d'une extension SEO comme Yoast SEO ou Rank Math, pratique si l'extension est déjà installée.
Choisissez-en une et tenez-vous-y. Un filtre personnalisé et une extension SEO modifient le même texte, et le résultat dépend alors de l'ordre d'exécution.
Le robots.txt prêt à copier
Ce fichier refuse l'entraînement, autorise la recherche et reprend les règles par défaut de WordPress. Retirez du premier groupe les robots que vous acceptez.
# 1. Entraînement de modèles : refusé
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: meta-externalagent
User-agent: MistralAI-Training
User-agent: Applebot-Extended
User-agent: Google-Extended
Disallow: /
# 2. Recherche et récupération à la demande : autorisé
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
# 3. Tous les autres robots
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://www.example.com/wp-sitemap.xml
Le groupe 2 recopie les règles du groupe * parce qu'un robot qui trouve un groupe à son nom n'applique que celui-ci. Adaptez l'adresse du plan du site : reprenez celle qui figure aujourd'hui dans votre robots.txt, car elle dépend de l'extension qui génère le plan. Enfin, Google-Extended couvre aussi l'ancrage des réponses dans les applications Gemini : retirez cette ligne si vous voulez y rester visible.
La méthode par filtre PHP
Pour garder la version générée par WordPress et y ajouter vos groupes, créez le fichier wp-content/mu-plugins/robots-ia.php. Les extensions placées dans ce dossier sont activées automatiquement ; WordPress ne lit que les fichiers PHP situés directement dans mu-plugins, pas dans un sous-dossier.
<?php
/**
* Plugin Name: Robots IA
* Description: Ajoute des groupes pour les robots d'IA au robots.txt généré par WordPress.
*/
add_filter( 'robots_txt', function ( $output, $public ) {
// Site masqué aux moteurs : on ne modifie rien.
if ( ! $public ) {
return $output;
}
$admin = wp_parse_url( admin_url(), PHP_URL_PATH );
$ajax = wp_parse_url( admin_url( 'admin-ajax.php' ), PHP_URL_PATH );
$entrainement = array( 'GPTBot', 'ClaudeBot', 'CCBot', 'meta-externalagent',
'MistralAI-Training', 'Applebot-Extended', 'Google-Extended' );
$recherche = array( 'OAI-SearchBot', 'ChatGPT-User', 'Claude-SearchBot',
'Claude-User', 'PerplexityBot', 'Perplexity-User' );
$ia = '';
foreach ( $entrainement as $robot ) {
$ia .= "User-agent: {$robot}\n";
}
$ia .= "Disallow: /\n\n";
foreach ( $recherche as $robot ) {
$ia .= "User-agent: {$robot}\n";
}
$ia .= "Disallow: {$admin}\nAllow: {$ajax}\n\n";
return $ia . $output;
}, 20, 2 );
Le code place vos groupes avant le contenu existant, sans toucher au groupe * ni à la ligne Sitemap, et recalcule le chemin d'administration au lieu de le coder en dur. Vous pouvez aussi coller la fonction dans le fichier functions.php d'un thème enfant ; évitez le thème parent, dont le fichier peut être remplacé lors d'une mise à jour, et gardez en tête que la règle disparaît si vous changez de thème.
Avec Yoast SEO ou Rank Math
Les menus de ces extensions sont cités en anglais, comme dans leur documentation ; la traduction française de l'interface peut différer.
Yoast SEO. L'éditeur se trouve dans Yoast SEO > Tools > File editor, puis « Create robots.txt file » si aucun fichier n'existe encore. Yoast précise que ce menu n'apparaît pas lorsque l'édition de fichiers est désactivée dans WordPress (par exemple avec la constante DISALLOW_FILE_EDIT). L'extension propose aussi une fonction de blocage, présentée sous le nom de « Bot Blocker », dans Yoast SEO > Settings > Advanced > Crawl optimization, rubrique « Block unwanted bots ». Selon Yoast, la version gratuite ne permet de bloquer que Google AdsBot ; la version Premium ajoute notamment GPTBot, CCBot et les robots de Google pour Gemini et Vertex AI. Ces interrupteurs servent uniquement à bloquer : ils ne créent pas le groupe d'autorisation des robots de recherche, et la fonction n'est pas disponible en multisite d'après la page de Yoast.
Rank Math. L'éditeur se trouve dans Rank Math SEO > General Settings > Edit robots.txt. Il n'apparaît qu'en mode avancé (« Advanced Mode »), activable depuis le tableau de bord de l'extension. Rank Math génère un fichier virtuel : si un fichier physique existe, les modifications ne s'appliquent pas et il faut supprimer ce fichier. En multisite, seul le site principal peut modifier le fichier, et les autres en héritent.
Pièges propres à WordPress
- Un ancien fichier physique oublié. Une extension désinstallée ou l'hébergeur peut avoir laissé un
robots.txtà la racine. Tant qu'il existe, votre filtre et l'éditeur de l'extension SEO tournent dans le vide. - Le cache. Une extension de cache ou un CDN peut continuer à servir l'ancienne version. Videz-les après chaque modification.
- Une installation dans un sous-dossier. Si WordPress vit dans
/blog/, sonrobots.txtvirtuel n'est pas à la racine du domaine, le seul emplacement que les robots consultent. Il faut alors un fichier à la racine. - Les règles d'administration oubliées. Copier seulement
Allow: /dans le groupe des robots de recherche leur ouvre/wp-admin/. Sans danger réel (la zone est protégée par connexion), mais inutile. - Le pare-feu. Une extension de sécurité ou un pare-feu applicatif qui bloque les robots d'IA rend votre
robots.txtsans effet pour eux. Vérifiez aussi que/robots.txtne renvoie pas d'erreur 5xx, que la norme assimile à une interdiction complète.
Vérifier le résultat
Ouvrez https://www.example.com/robots.txt dans une fenêtre de navigation privée : vous devez voir vos groupes, et une seule fois. En ligne de commande, curl -I https://www.example.com/robots.txt doit renvoyer un code 200 et un type text/plain. Contrôlez ensuite, robot par robot, quelles URL sont permises avec le testeur de robots.txt IABIG. Les robots ne relisent pas le fichier en continu : comptez jusqu'à 24 heures avant que les changements soient pris en compte.
Sources officielles
- WordPress,
do_robots(): https://developer.wordpress.org/reference/functions/do_robots/ - WordPress, filtre
robots_txt: https://developer.wordpress.org/reference/hooks/robots_txt/ - WordPress,
WP_Sitemaps::add_robots(): https://developer.wordpress.org/reference/classes/wp_sitemaps/add_robots/ - WordPress, Settings Reading screen : https://wordpress.org/documentation/article/settings-reading-screen/
- WordPress, Must Use Plugins : https://developer.wordpress.org/advanced-administration/plugins/mu-plugins/
- Yoast, How to edit robots.txt through Yoast SEO : https://yoast.com/help/how-to-edit-robots-txt-through-yoast-seo/
- Yoast, How to block unwanted bots from your site with Yoast SEO : https://yoast.com/help/block-unwanted-bots-with-yoast-seo/
- Rank Math, Common robots.txt issues : https://rankmath.com/kb/fix-common-robots-txt-issues/
- Rank Math, I can't edit my website's robots.txt : https://rankmath.com/kb/cant-edit-robots-txt/
- RFC 9309, Robots Exclusion Protocol : https://www.rfc-editor.org/rfc/rfc9309
Outils gratuits
Scanner de visibilité IA gratuit
Analysez gratuitement si ChatGPT, Claude, Perplexity et Gemini peuvent lire et citer votre site - robots.txt, llms.txt, JavaScript, texte caché.
Générateur de robots.txt pour les robots d'IA (GPTBot, ClaudeBot, PerplexityBot…)
Créez en un clic un robots.txt qui bloque l'entraînement des IA tout en restant visible dans ChatGPT Search, Claude et Perplexity. Gratuit.
Testeur de robots.txt pour les robots d'IA
Collez votre robots.txt et voyez instantanément, robot par robot, si GPTBot, ClaudeBot, PerplexityBot ou Google-Extended peuvent lire une page.
À lire aussi
- Robots d'IA sur Netlify - robots.txt, fichier _headers et Edge Function de filtragePublier un robots.txt sur Netlify, ajouter X-Robots-Tag avec _headers et filtrer les robots d'IA par User-Agent avec une Edge Function ou l'extension dédiée.
- Robots d'IA sur IIS - robots.txt, URL Rewrite, Request Filtering et restrictions IPSur IIS, publier robots.txt, refuser les robots d'entraînement avec une règle URL Rewrite dans web.config et voir les limites des filtres et restrictions IP.
- Robots d'IA avec nginx - robots.txt, blocage par User-Agent, plages IP officielles et débitConfiguration nginx testée pour refuser les robots d'entraînement, laisser passer les vrais robots de recherche IA, limiter leur débit et les journaliser.
- Robots d'IA avec Next.js et Vercel - robots.ts, X-Robots-Tag et pare-feu VercelConfigurer robots.txt avec app/robots.ts dans Next.js, poser un en-tête X-Robots-Tag et régler le pare-feu Vercel sans bloquer ChatGPT Search ni Perplexity.