IABIGEN · English

Guides par plateforme · Mis à jour le 2026-10-25 · Version Markdown

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 ligne Sitemap.
  • 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/, son robots.txt virtuel 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.txt sans effet pour eux. Vérifiez aussi que /robots.txt ne 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

Outils gratuits

À lire aussi