L’article ultime sur le robots.txt !
 vendredi 11 janvier 2013   Sylvain  237 vues

RobotUn article tout bête sur le robots.txt aujourd'hui ? Oui ! Enfin pas tout à fait, ce n'est pas un article tout bête puisque j'ai pu remarquer à plusieurs reprises que ce fichier était souvent mal compris et donc mal utilisé. C'est d'ailleurs un billet traitant du robots.txt qui a ouvert la catégorie astuces référencement de ce blog, et j'ai également pointé du doigt la mauvaise utilisation du fichier dans l'audit du site de l'Élysée.

C'est donc un retour aux sources qui va être effectué dans cet article, avec les bonnes pratiques à mettre en place en fonction de vos besoins. À la fin de celui-ci, vous serez apte à optimiser le crawl de votre site par les différents bots. Avant de commencer, je tiens à préciser que le robots.txt est bien plus efficace avec une architecture du tonnerre et des URL écrites pour fonctionner avec lui.

 

Le contenu du robots.txt

Avant d'aller un peu plus loin dans l'article, voici d'abord un rappel concernant le contenu de ce fichier. Le robots.txt fonctionne de cette manière :

  1. Nous nous adressons à un ou plusieurs robots
  2. Nous leur indiquons des directives

Concernant ces dernières, ce sont globalement deux directives que nous serons amenés à utiliser le plus souvent, bien que je sois partagé sur l'utilisation de la directive Sitemap. Tout dépend des besoins. Voici donc ces deux directives :

  • Disallow:
  • Sitemap:

Il faut savoir qu'il existe d'autres directives, bien qu'elles ne soient pas interprétées par tous les robots : Allow: et Crawl-delay:.

Enfin, je peux également utiliser un caractère joker si je ne souhaite pas recopier 800 URL construites sur le même modèle : l'étoile (*).

Concrètement, ça donne quelque chose comme ça :

User-agent: *
Disallow: /mon-dossier-prive/
Disallow: /public/page-sans-crawl.html
Disallow: /*.php
Disallow: /public/donotcrawl*.html

User-agent: googlebot
Disallow: /mobile/

Sitemap: /sitemap-accueil.xml

Voici comment interpréter ce fichier, ligne par ligne :

  • j'indique à quels robots (user-agent) je m'adresse : l'étoile signifie que je leur parle à tous
  • j'indique de ne pas crawler le dossier situé à l'adresse nom-de-domaine.fr/mon-dossier-prive/
  • j'indique de ne pas crawler la page située à l'adresse nom-de-domaine.fr/public/page-sans-crawl.html
  • j'indique de ne crawler aucune page se terminant par .php (l'étoile remplaçant tous les caractères situés entre nom-de-domaine.fr/ et .php)
  • j'indique de ne crawler aucune page commençant par nom-de-domaine.fr/public/donotcrawl et se terminant par .html (ce qui signifie que les robots ne parcoureront pas les pages donotcrawl-1.html, donotcrawl-2.html, donotcrawl-3.html, etc.)
  • je m'adresse uniquement au robot de google
  • je lui indique de ne pas crawler le répertoire /mobile/
  • j'indique l'emplacement de mon fichier sitemap

Maintenant que tous le monde a en tête les bases du robots.txt, on va pouvoir aller plus loin dans la réflexion.

Ce fichier est-il consulté à chaque fois ?

J'ai souvent lu et entendu cette phrase : le robots.txt est consulté lors de chaque crawl de Google. Ce n'est malheureusement pas le cas. Il est certes consulté régulièrement, mais pas à chaque visite. Ce que ça change pour nous ? Admettons que je lance une newsletter et que je classe chacun de mes fichiers dans un dossier /newsletter/ et bien sûr je ne souhaite pas que le contenu de ce dossier soit crawlé. Ça signifie que, par sécurité, je ferais mieux de mettre en place la directive indiquant aux bots de ne pas crawler ce dossier avant même qu'il soit créé, voire même longtemps à l'avance.

Interdire l'indexation avec le robots.txt : stop !

Décidément les croyances populaires sont tenaces, il est là encore de notoriété publique que ce fichier a pour utilité d'interdire l'indexation d'un contenu. C'est faux, faux et archi-faux ! Ce fichier interdit le crawl d'une page mais certainement pas son indexation. Une page peut ne pas être crawlée (c'est-à-dire parcourue par les robots) mais peut très bien être indexée par Google. L'image suivante en est la preuve. Pour savoir comment interdire l'indexation, ça se passe par ici.

Page indexée

Une mauvaise construction du fichier : les risques

Reprenons l'exemple du robots.txt que j'ai donné en première partie d'article : j'ai indiqué plusieurs directives à tous les robots, parce que je veux qu'ils les prennent tous en compte, et j'en ai indiqué une plus précise à Googlebot. Sauf que dans cet exemple, Googlebot ne prendra pas en compte les directives données à tous les robots puisqu'il a bien compris qu'à un instant je m'adressais particulièrement à lui.

Faisons une analogie àlacon : on est au rugby, c'est le dernier match du tournoi des 6 nations, la France a gagné tous ses matchs et ne dois plus gagner que celui-ci pour réaliser le Grand Chelem. L'Angleterre mène 21 à 20 contre la France et il reste 30 secondes de temps de jeu. Philippe Saint-André fait passer l'info "les gars, vous vous débrouillez pour passer le ballon à François Trinh-Duc, et toi François tu tentes le drop !" (avouez, vous vous y voyez !) Petite analyse : Saint-André a donné une directive à tout le monde -passer le ballon à Trinh-Duc- et une particulière à Trinh-Duc : tenter le drop. Du coup, Trinh-Duc a bien compris qu'il ne devait pas se passer le ballon à lui-même (ce qui serait tout à fait stupide et causerait un en-avant, enfin bref). C'est pareil pour Googlebot dans notre exemple.

Maintenant qu'on a gagné le Grand Chelem, revenons au robots.txt, parce que c'est ça le sujet. Si je veux que Googlebot suive les mêmes directives que les autres, il faudra que je les lui indique à nouveau. Ce qui donnera quelque chose comme ça :

User-agent: *
Disallow: /mon-dossier-prive/
Disallow: /public/page-sans-crawl.html
Disallow: /*.php
Disallow: /public/donotcrawl*.html

User-agent: googlebot
Disallow: /mon-dossier-prive/
Disallow: /public/page-sans-crawl.html
Disallow: /*.php
Disallow: /public/donotcrawl*.html
Disallow: /mobile/

Sitemap: /sitemap-accueil.xml

Quelques erreurs classiques

Une erreur très fréquente est de ne pas se soucier de la casse dans le fichier robots.txt. Je souhaite bloquer une URL qui contient des majuscules et par fainéantise j'écris cette URL en minuscules dans le fichier : cette URL ne sera pas bloquée étant donnée que les robots sont sensibles à la casse.

Une autre erreur, bien que j'avoue avoir un doute concernant le fait qu'il s'agisse bien d'une erreur, concerne les retours chariots. Comme vous l'avez vu dans les exemples, le robots.txt fonctionne par "blocs" : on sélectionne le robot à qui on s'adresse, on fait un retour chariot, on lui donne des directives puis on fait deux retours chariots pour s'adresser à un autre robot. Il y a donc une ligne vide entre les directives pour le premier robot et celles pour le second. J'ai tendance à penser que si on fait un retour chariot de trop entre le choix du robot à les directives, ces dernières ne seront pas prises en compte. Un exemple sera sûrement plus parlant :

User-agent: bingbot

Disallow: /

La ligne blanche entre le choix de l'user-agent et le disallow peut éventuellement amener le robot à ne pas prendre en compte la directive. Je n'ai aucune certitude à ce sujet, n'ayant pas fait de test, mais autant ne pas prendre de risque inutile ;-)

Conclusion

Vous en savez maintenant un peu plus à propos de votre robots.txt et la manière de le gérer. Je ne veux donc plus voir de robots.txt mal utilisé ! Une dernière chose : j'ai envie d'être joueur aujourd'hui : prouvez-moi que vous avez bien lu l'article (ou au moins la conclusion) et insérez le mot "rugby" dans votre commentaire, s'il n'y est pas, le lien ne sera pas accepté :) C'est fourbe n'est-ce pas ?




Vous souhaitez poster un commentaire :
Cette adresse ne sera ni publiée, ni revendue...
Cette URL aura pour ancre votre nom
Facultatif
Facultatif
Facultatif