Aujourd'hui, je vous propose de découvrir le fichier robots.txt, un fichier spécifique que l'on peut placer sur son site Internet pour communiquer certaines instructions aux moteurs de recherche. A quoi peut-il servir exactement ? Comment rédige-t-on ce fichier ? Quelles règles faut-il connaître sur son fonctionnement ?
Dans ce guide, je vais tenter de répondre aux questions que vous vous posez peut-être sur le sujet ! S'il vous reste des interrogations, n'hésitez pas à les poser dans les commentaires.
Qu'est-ce qu'un "robot" sur le web ?
Avant toute chose, commençons par définir ce qu'est un robot... car si vous ne le savez pas, vous risquez d'avoir du mal à comprendre l'intérêt des les contrôler via un fichier dédié !
Sur le web, un robot est tout simplement un programme informatique chargé d'une mission... et qui accomplit sa mission en explorant les sites qu'il rencontre, chargeant les informations fournies par ces sites. Quel genre de mission peut avoir un robot ?
- Explorer le web pour répertorier les contenus disponibles, comme le fait un moteur de recherche ;
- Collecter des adresses e-mail ;
- Vérifier si un contenu est disponible, si un lien fonctionne ou si un site Internet est bien accessible ;
- Détecter des modifications sur des pages web ;
- Surveiller certaines données sur une page, à des fins positives ou négatives (par exemple, repérer les sites qui utilisent des technologies périmées pour ensuite les pirater) ;
- Copier des contenus ;
- Analyser des pages pour que le fruit de cette analyse soit ensuite mis à disposition via un outil.
Ce ne sont que quelques exemples pour vous montrer que ces programmes peuvent remplir toutes sortes d'objectifs, aussi bien positifs que négatifs. On les appelle aussi des "spiders" ou des "crawlers".
A quoi sert le fichier robots.txt ?
Le fichier robots.txt est un simple fichier texte, écrit d'une manière codifiée, qui va permettre de transmettre certaines instructions aux moteurs de recherche et, plus largement, aux robots susceptibles d'explorer votre site.
Mieux contrôler l'accès des moteurs de recherche à vos pages
Le fichier robots permet d'abord de contrôler plus finement à quelles pages vous laissez les robots accéder. Vous pouvez leur interdire une URL précise ou un répertoire entier par exemple, si vous estimez que ce n'est pas stratégique qu'ils y aient accès. Vous pouvez aussi les empêcher d'accéder à certains paramètres d'URL.
Par exemple, sur le site de Leroy-Merlin, vous pouvez trier chaque sélection de produits dans chaque rubrique selon différents critères, comme le prix. Cela modifie à chaque fois l'URL en ajoutant un paramètre "sort" (mot anglais qui signifie "trier").
Dans le fichier robots, on s'aperçoit que Leroy-Merlin bloque l'accès à toutes les URL qui contiennent "sort".
A quoi ça sert ? A optimiser l'activité des moteurs sur le site : l'idée est d'éviter qu'ils perdent du temps à explorer des pages qui leur sont inutiles... et qu'ils consacrent plutôt leur énergie aux contenus les plus stratégiques.
On considère en effet que les moteurs de recherche comme Google ne peuvent allouer à chaque site qu'une quantité de ressources limitée (qu'on appelle le "crawl budget"). L'objectif est d'optimiser ce budget pour qu'il soit utilisé à bon escient !
Dans les faits, un petit site ne risque pas de se heurter aux limites d'exploration de Google, le contrôle des robots reste donc avant tout une question de bon sens. Mais sur un gros site comme Leroy-Merlin, ayant plusieurs millions de pages indexées sur les moteurs de recherche, c'est une réflexion indispensable à mener dans le cadre d'un travail SEO.
Brider le crawl de robots secondaires
Le fichier robots.txt peut aussi servir à limiter l'activité de certains robots afin de ne pas affecter les performances du site. En effet, le web grouille de robots : de "mauvais robots", des crawlers appartenant aux moteurs de recherche mais aussi des robots issus d'outils ayant besoin d'explorer le web pour y puiser des données. A chaque fois qu'ils viennent sur votre site, ils vont ouvrir des pages web, charger des images et autres fichiers... donc consommer des ressources !
Dans le fichier robots, vous pouvez leur imposer un délai entre deux requêtes pour les ralentir. Ici par exemple, Castorama le fait avec le paramètre "crawl-delay" en ralentissant l'activité de Baidu (moteur de recherche chinois) ou Yandex (moteur de recherche russe), considérant probablement que ces deux régions du monde ne sont pas très stratégiques pour leur site français !
Bloquer des robots indésirables
Il y a des robots qu'on refuse tout simplement de voir sur son site. Par exemple :
- Ceux qui permettent d'en aspirer le contenu automatiquement (web scrapers) ;
- Ceux qui capturent automatiquement des adresses e-mail ;
- Ceux qui sont connus pour essayer de détecter des failles de sécurité afin de pirater votre site, etc.
Le fichier dédié vous permet de tenter de les bloquer ou, du moins, de leur compliquer la tâche !
Un usage détourné : le recrutement !
Certaines marques profitent du fichier robots.txt pour publier des annonces de recrutement ! Partant du principe qu'un passionné de SEO ou un développeur curieux risque tôt ou tard de s'intéresser à ce fichier, ils en profitent pour y glisser un message, comme ci-dessous avec le site international de Glassdoor, qui indique :
Salutations, êtres humains !
Si vous êtes en train de fureter dans ce fichier, et que vous n'êtes pas un robot, nous cherchons à rencontrer des gens curieux comme vous.
Vous pensez que vous avez ce qu'il faut pour rejoindre les meilleurs growth hackers SEO white-hat de la planète et contribuer à améliorer la manière dont les gens, partout dans le monde, trouvent des emplois ?
Alors courez - n'optez pas pour le crawl - pour postuler et rejoindre l'équipe SEO de Glassdoor ici
Il s'agit bien entendu d'un usage détourné de ce fichier, dont ce n'est pas le rôle premier :)
Que contient exactement le robots.txt ?
Le principe général de fonctionnement est assez simple : pour chaque instruction, on commence par spécifier à qui l'on s'adresse (le "user-agent", qui est ici l'identifiant du robot), puis on donne son "ordre", ou ses ordres s'il y en a plusieurs.
Dans sa forme la plus simple, une instruction peut donc ressembler à ça :
User-agent: Googlebot
Disallow: /
Ici, je m'adresse à Googlebot, le robot de Google, et je lui interdis d'accéder à tout le site (à ne pas reproduire chez vous, évidemment !).
Pensez à faire un retour à la ligne avant chaque nouvelle instruction. Pensez aussi à regrouper les instructions qui concernent un même user-agent.
Par exemple, si vous vous adressez à Googlebot, que vous voulez lui interdire l'accès toutes les URL commençant par /lambda/ mais lui autoriser l'accès aux fichiers CSS se trouvant dans le répertoire /lambda/, au lieu d'écrire :
User-agent: Googlebot
Disallow: /lambda/*
User-agent: Googlebot
Allow: /lambda/*.css
Vous allez regrouper les instructions comme ceci :
User-agent: Googlebot
Disallow: /lambda/*
Allow: /lambda/*.css
Quelles informations pouvez-vous inclure dans le fichier robots.txt ?
Le user-agent
Le user-agent est le "nom officiel" que porte le robot. Gardez en tête que souvent, les plus gros outils possèdent plusieurs types de robots : chez Google par exemple, on aura Googlebot (qui explore les pages web) mais vous allez aussi avoir Googlebot-Image, Googlebot-News, Googlebot-Video, Mediapartners-Google (pour la publicité AdSense), AdsBot-Google-Mobile (analyse de la qualité des annonces sur les pages web) ou encore APIs-Google...
On peut utiliser la formulation User-agent: *
pour s'adresser à TOUS les robots du web.
Si vous souhaitez transmettre des directives à un crawler précis, le plus simple est souvent de taper son nom + le terme "user-agent" sur un moteur de recherche pour trouver sa dénomination officielle. Vous pouvez aussi aller consulter le fichier robots.txt de sites très connus, ils comportent souvent des instructions relatives aux crawlers les plus connus du marché, dont vous pouvez vous inspirer.
La réalisation d'une analyse de logs peut aussi vous aider à identifier les robots qui passent beaucoup de temps sur votre site pour décider si vous souhaitez les brider ou les bloquer.
Vous pouvez vous adresser à plusieurs user-agents dans un même fichier, mais chacun doit apparaître sur sa propre ligne.
Allow/Disallow
Le principe est simple :
- Allow autorise le robot à faire quelque chose ;
- Disallow le lui interdit ;
Un crawler prendra en compte l'instruction la plus précise.
Si je reprends mon exemple du répertoire lambda, je dis à la fois au robot "tu ne peux accéder à RIEN"... et la ligne d'après lui dit "tu peux quand même accéder aux fichiers CSS". Le robot va bien interpréter ça. Si je lui propose une URL /lambda/hello, il va être bloqué comme prévu :
Mais avec /lambda/hello.css, il va être autorisé :
Crawl-delay
L'instruction Crawl-delay impose un délai précis, exprimé en secondes, entre deux requêtes. Cette instruction n'est pas toujours prise en compte. Il s'agit de ralentir l'activité des robots pour préserver les ressources de votre site.
Sauf exception, il est conseillé de ne pas le faire avec les moteurs de recherche "essentiels" mais seulement avec des crawlers qui sont secondaires pour vous.
Google ignore ces directives quoi qu'il arrive lors de l'exploration.
Lien vers le sitemap
Le fichier robots.txt peut aussi inclure un lien vers le sitemap.
Si vous avez conçu un plan de site destiné aux moteurs de recherche, le sitemap.xml, il est conseillé de faire figurer un lien vers ce sitemap dans le fichier robots.txt, comme le fait ici le site Sarenza.
Autres informations utiles
La manière d'écrire les URL est importante, car ce fichier est sensible à la casse.
Un chemin écrit avec des majuscules à l'intérieur ne sera pas interprété de la même manière qu'un chemin écrit en minuscules, veillez donc bien à la manière d'écrire vos instructions.
Vous pouvez également utiliser certains symboles utiles pour concevoir vos instructions :
- L'astérisque * permet de remplacer n'importe quel caractère ou chaîne de caractères.
- Le dièse # permet de commenter le code car les lignes commençant par un dièse ne seront pas interprétées.
- Le dollar $ permet d'indiquer que l'on souhaite qu'une URL se termine exactement comme spécifié.
Pour vous montrer un exemple d'utilisation de l'astérisque dans une instruction, si vous écrivez ceci :
User-agent: *
Disallow: *jsessionid*
Vous vous adressez à TOUS les robots, et vous leur interdisez d'accéder à toutes les URL contenant "jsessionid", que ce soit écrit /bonjour-jsessionid-aurevoir, coucoujsessionid ou /jsessionidbyebye.
Et si vous voulez inclure toutes les adresses se terminant spécifiquement par -prive, vous pourriez écrire :
Disallow: *-prive$
Vous pouvez ainsi construire des instructions relativement précises. Encore une fois, si vous manquez d'inspiration, je vous conseille de visiter de gros sites Internet réputés et de taper /robots.txt à la fin de leur nom de domaine afin de regarder comment ils optimisent ce fichier.
Ici par exemple, on voit que le code a été bien commenté (avec des dièses, donc !) pour que l'on s'y retrouve :
Avec quoi créer et tester le robots.txt ?
Vous pouvez soit créer ce fichier à la main avec un simple éditeur de texte (type Bloc-Notes, Notepad++, etc), soit le créer via un outil permettant de le faire (que ce soit un plugin SEO WordPress ou autre solution). A titre d'exemple, sur WordPress, un plugin comme Yoast SEO permet de créer un robots.txt via le menu Yoast SEO > Outils > Éditeur de fichiers.
Si vous créez le fichier avec un éditeur de texte, pensez à l'enregistrer avec l'encodage UTF-8 et n'utilisez jamais un logiciel type Word pour créer ce fichier, Word a tendance à ajouter plein de code superflu lors de l'enregistrement, qui peut perturber le bon fonctionnement du fichier.
Il existe des générateurs de robots.txt comme celui de Ryte mais ne les utilisez que si vous comprenez vraiment ce que vous faites. En effet, si vous bloquez l'accès à votre site Internet à des robots importants, cela peut affecter votre référencement naturel donc votre trafic.
Avant de le mettre en ligne, il est important de tester le robots.txt. Mon outil en ligne préféré pour le faire est actuellement celui proposé par Merkle. Vous pouvez y entrer vos instructions et les tester sur des URL réelles ou fictives pour vérifier qu'il n'y a pas de réaction "suspecte", avec le user-agent de votre choix.
Les outils SEO professionnels permettent souvent de mettre en place un robots.txt virtuel puis d'explorer votre site en prenant appui sur ce fichier afin d'avoir une vision précise de son impact, ce qui est encore plus efficace.
Cette phase de test est vraiment essentielle pour vous assurer que vous ne bloquez pas des pages stratégiques à votre insu, cela arrive malheureusement. J'ai un client qui, en voulant bidouiller le fichier robots sans réelle connaissance technique, a par étourderie laissé traîner dedans un "Disallow: /" bloquant tous les robots... Heureusement, grâce au monitoring mis en place, nous avons vite détecté le problème et réagi mais si vous mettez du temps à vous en apercevoir, cela peut avoir des conséquences dramatiques pour le site.
Où faut-il placer le fichier robots.txt ?
Ce fichier doit toujours figurer à la racine du site. En d'autres termes, il ne doit pas être caché dans un sous-dossier du site. On doit pouvoir y accéder en tapant l'adresse de votre site suivie de /robots.txt, par exemple google.fr/robots.txt
.
En revanche, si votre site comporte des sous-domaines, par exemple blog.monsite.com, boutique.monsite.com, il faudra prévoir un robots.txt propre à chaque sous-domaine car le sous-domaine est généralement traité comme un site à part entière.
Vous devez donc mettre en ligne le fichier sur le serveur où les autres fichiers de votre site sont stockés, en utilisant un client FTP comme FileZilla ou les outils mis à disposition par l'hébergeur de votre site. Sur WordPress par exemple, le robots.txt doit se trouver à la racine dans le même dossier que les répertoires wp-admin, wp-content et wp-includes.
Quelques règles importantes à connaître sur ce fichier
Terminons cet article par quelques conseils complémentaires.
Le fichier robots reste une indication
N'utilisez pas le fichier robots.txt pour "cacher" des pages que vous ne souhaitez pas voir indexées par un moteur de recherche. Il envoie simplement aux robots le message "Idéalement, je souhaite que vous n'accédiez pas à ce contenu"... mais les crawlers restent maîtres de leurs décisions.
A titre d'exemple, si vous utilisez Google Search Console, vous pouvez aller dans le menu Indexation > Pages. Vous allez parfois voir la mention "Indexée malgré le blocage par le fichier robots.txt". Google peut estimer que malgré les instructions que vous donnez, une page mérite d'être proposée aux utilisateurs dans les résultats de recherche.
Autrement dit, s'il y a un contenu que vous ne souhaitez vraiment pas voir apparaître sur les moteurs de recherche, le mieux est de le mettre en accès privé, en exigeant une connexion ou un mot de passe. Si vous n'êtes pas aussi catégorique, vous pouvez aussi mettre la page de ce contenu en "noindex" (pour demander aux moteurs de ne pas la répertorier) en plus d'une instruction "Disallow" dans le robots.txt.
Quelle différence entre les deux ? "Disallow" vise à bloquer le crawl d'une page, c'est-à-dire son exploration/sa visite par un robot. "Noindex" indique à ce même robot qu'il ne doit pas répertorier la page dans sa base de données.
Le robots.txt n'est pas un outil pour désindexer des pages
N'utilisez pas le robots.txt pour pousser Google à retirer une page qu'il a déjà répertoriée... ou pour lister des pages que vous avez supprimées du site afin que les robots n'y aillent plus.
Pourquoi ?
- Si vous mettez une instruction "Disallow" sur une page que le moteur a déjà répertoriée dans ses résultats... en théorie, il ne va plus pouvoir y accéder. Si vous placez sur cette page une instruction "noindex", le crawler ne pourra donc pas la détecter lors de l'exploration de votre site. La bonne méthode consiste à placer d'abord une instruction noindex sur la page, veiller à ce qu'elle soit prise en compte et, une fois que la page est désindexée, compléter éventuellement par un "Disallow" sur cette page dans le robots.txt. Plus radical, vous pouvez demander la suppression du contenu à Google et, une fois que c'est fait, combiner noindex/disallow.
- Si vous mettez en "Disallow" des pages supprimées, même problème : le robot ne pourra plus y accéder et ne pourra donc pas suivre correctement les éventuelles redirections que vous aurez créées.
Retenez aussi qu'il y a quelques années, on pouvait désindexer une page via le fichier robots.txt. En septembre 2019, Google a arrêté de prendre en charge cette fonctionnalité (lire l'annonce ici). Vous pouvez donc encore trouver sur le web de vieux articles qui vous disent le contraire de mon post ;)
Aujourd'hui, pour désindexer un contenu des résultats, mieux vaut utiliser une directive "noindex" soit en HTML avec cette balise, à placer dans le "head" du site :
<meta name="robots" content="noindex">
Soit dans l'en-tête HTTP d'une page, comme ceci :
X-Robots-Tag: noindex
Ce n'est pas non plus un outil pour gérer le duplicate content
N'utilisez pas le fichier robots.txt pour interdire aux robots d'accéder aux pages qui font doublon dans la structure de votre site Internet. Si vous avez des situations où plusieurs URL permettent d'accéder à un même contenu (URL à paramètres par exemple), privilégiez d'autres solutions comme les URL canoniques pour indiquer quelle URL le moteur doit indexer.
J'espère que les conseils de ce guide vous seront utiles pour mieux comprendre l'utilité de ce fichier et vous initier à sa personnalisation !