Le guide ultime du fichier robots.txt

Le guide ultime du fichier robots.txt
Le fichier robots.txt ne se limite pas à la simple description des url présentes dans le site à indexer. Il délivre les directives aux moteurs de recherche, en fonction de nos désidératas. Simple à construire et à placer à la racine du site, il indique les démarches à suivre, permet de bloquer l’indexation de pages spécifiques et/ou de répertoires complets, voire de bloquer un ou plusieurs moteurs de recherche, permettant ainsi de libérer de la bande passante et de soulager le serveur et le réseau, le rendant plus disponibles pour les cibles visées. Explications complètes au sujet d’un simple fichier texte pourtant devenu indispensable dans l’optimisation contemporaine.

Comment créer le fichier robots.txt

Le fichier robots.txt est relatif au protocole d’exclusion des robots. On doit le premier fichier robots.txt à Martin Koster. Ce dernier travaillait pour Webcrawler en 1994. Le but de la démarche est de priver les robots des moteurs de recherche de certaines ressources du site web. Des ressources que l’on ne désire pas partager sur la toile. Ce fichier indique donc les pages qui ne doivent pas être indexées dans le moteur de recherche. La convention veut que le premier des fichiers lus par les robots des moteurs de recherche soit justement le fichier appelé robots.txt.

Pourquoi un fichier robots.txt ?

Deux raisons principales conduisent à l’usage d’un fichier robots.txt ;

  • D’abord, il permet d’éviter que certaines ressources, jugées sans intérêts publics, soient mises à la disposition d’internet ;
  • Ensuite, il soulage le réseau en évitant un surplus de trafic et allège par conséquent le travail des indexeurs et du serveur http.

A ce stade, précisons déjà que le fichier robots.txt ne peut en aucun cas faire office d’organe de sécurité. Ce fichier reste accessible à tout le monde. Si les robots bienveillants respectent les consignes édictées dans le fichier, ce n’est pas le cas des robots malveillants, qui cherchent là à obtenir des données personnelles. Ne confondez donc pas robots.txt et sécurité !

Comment le créer et où le placer ?

Pour le créer, c’est tout simple. Créez simplement un fichier robots.txt sur votre bloc-notes. Et indiquez les restrictions d’indexation que vous souhaitez voir respectées. Faites juste attention à trois choses ;

  • Ecrivez-le bien robots.txt, et non ROBOTS.TXT, ou même Robots.txt ;
  • N’oubliez jamais que le fichier ne doit pas dépasser 62ko ;
  • Pensez à le placer à la racine de votre site, afin qu’il soit accessible aux moteurs de recherche. Si votre site se nomme http://www.mangezdesfraises.com, vous placerez votre fichier robots.txt comme ceci : http://www.mangezdesfraises.com/robots.txt.

Quelques exemples d’instructions basiques sur le fichier robots.txt

Chaque instruction se construit sur au moins deux lignes ;

  • Une ligne ‘User-agent :’ définissant le ou les robots visés par les restrictions ;
  • Une ligne ‘Allow :’ ou ‘Disallow :’ permettant ou ne permettant pas l’accès aux ressources visées.

Pour faire au plus simple, voici un exemple forcément particulier :

User-agent : *
Disallow :

L’* remplace tous les robots. L’instruction s’adresse donc ici à tous les robots, quels qu’ils soient. Si l’instruction est particulière, voire incongrue, c’est que l’action ‘Disallow :’ n’interdit rien ici. Cela revient donc à ne pas mettre de fichier robots.txt. À l’inverse, si l’on avait écrit ‘Disallow : /’, on aurait interdit toutes les pages du site à l’indexation sur les moteurs de recherche. Ce qui n’est pas non plus le but recherché. Mais cela vous donne une idée du fonctionnement simple du fichier robots.txt.

Comment bloquer des répertoires complets ou des pages spécifiques ?

Quand vous souhaitez bloquer un répertoire donné ou une page spécifique de votre site, il vous suffit d’allonger et de préciser votre ligne de commande ;

User-agent : *
Disallow : /repertoire-fraisesvertes/

Ou

User-agent : *
Disallow : /page-fraisesvertes.html
Disallow : / page-fraisesbleues.html

Etc…

Et pour bloquer un seul robot, l’instruction se fait en deux parties ;

User-agent : *
Disallow :

Puis

User-agent : Googlebot
Disallow : page-fraisesvertes.html

Et/ou

Disallow : /repertoire-fraisesvertes/

Utiliser des wildcards pour le fichier robots.txt

Qu’est-ce qu’une wildcard ?

Une wildcard, c’est un joker. Exactement comme lors d’un tournoi de tennis. Certains joueurs se voient attribuer le bénéfice d’un joker leur permettant de jouer même sans y être logiquement qualifiés. En informatique, ce joker prend la forme d’un métacaractère, un caractère présent sur le clavier permettant de prendre la place de bien d’autres. L’* est un métacaractère, ou une wildcard si vous préférez. Le $ aussi… Ces caractères spéciaux ont pour vocation de remplacer le début ou la fin d’un mot. Par exemple, si vous devez rechercher tous les mots commençant par ‘Ami’, vous demanderez ami* et tous s’afficheront.

Quelques exemples de wildcards

Dans le cas d’une instruction donnée aux robots indexeurs, vous pourrez  par exemple écrire ceci :

User-agent : *
Disallow : /* ?

Pour refuser l’indexation de toutes les pages contenant un ‘?’ dans leur url.

Agissez de la même façon si vous décidez de couper l’accès à des répertoires spécifiques WordPress :

User-agent : *
Disallow : /wp-*

Le ‘$’ s’emploie plus pour signifier la fin d’une url. En l’occurrence, si vous souhaitez écarter des moteurs de recherche toutes les pages ayant la même terminaison, comme un type de fichier particulier. Pour refuser l’indexation aux fichiers .pdf, vous écrirez :

User-agent : *
Disallow : /*.pdf$

Et rien ne vous interdit d’interdire l’accès de ces fichiers à un seul moteur de recherche :

User-agent : *
Disallow :
User-agent : Googlebot
Disallow : /*.pdf$

Peut-on ajouter des commentaires dans le fichier robots.txt

Bien entendu, il est possible d’ajouter des commentaires au sein d’un fichier robots.txt. Et d’autant plus si le fichier se révèle assez long et complexe en raison du nombre d’instructions délivrées.

Comment ajouter les commentaires ?

De la manière la plus simple qui soit, en nommant clairement ce que vous voulez décrire, en prenant soin de précéder votre phrase du symbole ‘#’.

# Instruction spécifique Google
User-agent : Googlebot
Disallow : /repertoire-fraisevertes/

Pourquoi ajouter des commentaires dans un fichier robots.txt ?

Ainsi, vous pouvez nommer toutes les actions que vous entreprenez. La chose est particulièrement intéressante en cas de fichier long (attention à ne pas déborder des 62 ko toutefois), de façon à repérer les différents paragraphes. L’ajout de commentaires n’a qu’un aspect pratique et organisationnel.

Quel type de commentaire ajouter ?

Vous pouvez préciser à chaque fois à quel robot est destiné l’instruction, ou pour quels répertoires ou pages vous agissez. Mais vous également laisser la dernière date de modification d’une ligne de commande, ou toute information importante facilitant la compréhension d’un collègue de travail ou d’un autre intervenant sur le site par exemple.

Quelle est la différence entre robots.txt et balise noindex ?

Le fichier robots.txt permet de diriger les robots indexeurs naviguant sur la toile, les crawlers. Ceux-ci lisant le fichier robots.txt respectent ses directives et passent donc volontairement sur l’indexation du contenu de certaines pages ou de certains répertoires. Toutefois, ces pages et répertoires ne sont pas invisibles pour autant. Un lien pointant vers une de ces pages n’en interdit pas l’affichage. Il suffit donc que le lien soit pointé une fois pour le crawler repère l’existence de cette page. Il l’indexera automatiquement, mais en affichant uniquement l’url, sans les balises (title et méta) et donc sans description de la page.

La balise noindex quant à elle, interdit directement l’indexation de la page. Disons que la manière est bien plus radicale. Ici, même en cas de lien pointant vers la page visée, aucune indexation sur le moteur choisi (ou les moteurs choisis) ne devient possible. Dans les faits, les deux actions peuvent s’avérer complémentaire, respectant bien l’ordre des intructions. La balise noindex est plus efficace s’il s’agit de désindexer des pages précises, voire un site entier. Mais dans le cas de dossiers ou de répertoires, noindex ne peut s’installer. De plus, le fichier robots.txt bénéficie d’un autre avantage, il peut délivrer l’adresse du plan dus site aux crawlers.

Sitemap et robots.txt

Le sitemap est un protocole, écrit en format xml ou texte, permettant aux robots d’indexation des moteurs de recherche d’explorer le site en question de manière plus intelligente. Il s’agit d’un plan du site, délivrant quelques précisions sur les différentes pages constitutives du site, comme une dernière date de mise à jour, ou l’importance d’une page par rapports aux autres, par exemple.

Pourquoi et comment mettre l’url du sitemap dans le fichier robots.txt ?

Indiquer aux moteurs de recherche que le plan du site est disponible directement dans le fichier robots.txt permet de gagner du temps. Mieux encore, certains moteurs de recherche ne sont pas équipés pour indexer ces listes automatiquement. Le simple fait d’indiquer l’adresse du plan du site sur le fichier robots.txt répare cette erreur. Et les avantages sont intéressants. Comme le fait d’obtenir des statistiques auprès du moteur de recherche sur les différentes landing pages. Pour l’intégrer, il suffit donc simplement d’ajouter l’instruction suivante :

Sitemap : http://www.mangezdesfraises.com/sitemap.xml

Notez que le fichier xml permet plus de possibilités qu’un fichier texte, qui se contentera de lister les pages. Grâce au xml, vous pourrez indiquer les fréquences de mises à jour, la date de la dernière mise à jour et l’importance relative d’une page par rapport aux autres. Cette ligne de commande ne dépend pas du User-agent. Elle peut donc se situer n’importe où dans le fichier robots.txt, au tout début comme à la toute fin.

Quelques exemple de code pour déclarer le sitemap dans le robots.txt

Pour une seule adresse à fournir, reprenez l’exemple fourni plus haut. Mais si vous possédez deux sites (un site et un blog) et qu’ils jouissent de plans différents, rien ne vous interdit de placer les deux dans le même robots.txt :

Sitemap : http://www.mangezdesfraises.com/sitemap-pages.xml

Sitemap : http://www.mangezdesfraises.com/sitemap-blog.xml

De la même façon, un fichier compressé par 7zip donnera la commande suivante :

Sitemap : http://www.mangezdesfraises.com/sitemap.xml.7z

Et vous pouvez aussi donner les deux versions de votre plan de site aux robots. Dans ce cas, vous écrirez une ligne pour le format compressé et une autre pour le format décompressé.

Enfin, si votre plan de site est découpé sur plusieurs fichiers, indiquez seulement aux robots d’indexation la page d’index du plan de site permettant de diriger les crawlers vers toutes les pages du sitemap :

Sitemap : http://www.mangezdesfraises.com/sitemap-index.xml

Les erreurs à éviter dans le fichier robots.txt

Il existe quelques petites erreurs à éviter quand on code le fichier robots.txt ;

  • Mal orthographier l’url du fichier, ceci ayant pour effet de renvoyer à une erreur 404 par exemple ;
  • Changer l’emplacement du fichier, ou mal le positionner. Il doit impérativement se trouver à la racine du site ;
  • Laisser une ligne blanche dans le bloc de directives ;
  • Mal encoder le fichier (UTF-8) ;

La directive User-agent

Mais les erreurs les plus courantes concernent la directive User-agent, et souvent dans le même cas de figure ; celui où vous interdisez l’accès à une page ou un répertoire spécifique à un robot en particulier. Admettons que vous ayez interdit à tous les moteurs de recherche une page appelée ‘fraisesenboite’ et que, dans le même temps, vous ne souhaitez pas que le Googlebot ait accès à une autre page appelée ‘fraisesdhiver’ sur votre site. D’après les exemples mentionnés plus haut, vous allez écrire ;

User-agent : *
Disallow : /page-fraisesenboite.html
User-agent : Googlebot
Disallow : / page-fraisesdhiver.html

A première vue, ça pourrait paraître cohérent. Mais dans les faits, vous autorisez l’accès de la page ‘fraisesenboite’ au robot Googlebot. En effet, à compter du moment où vous avez ciblé un bot précis, il ne respecte que les consignes qui lui sont directement destinées, en oubliant celles valables pour tous les moteurs de recherche, dont lui. Dans notre cas précis, il vous faut donc ajouter une ligne :

Disallow : /page-fraisesenboite.html

Aux instructions sélectionnant spécifiquement le bot Google.

Dons, en cas d’instructions différentes pour un bot par rapport aux autres, il aura besoin des mêmes instructions communes à tous les robots indexeurs, en plus des instructions qui lui sont plus précisément destinées.

Le regroupement des directives

Pour simplifier les choses et éviter des oublis, il est possible de regrouper les directives communes à deux ou plus sieurs crawlers. Par exemple, si vous ne souhaitez pas que les crawlers de Bing et de Google indexent certaines pages, regroupez les User-agent :

User-agent : Googlebot
User-agent : Bingbot
Disallow : /page-fraisesenboite.html
Disallow : /page-fraisesdhiver.html

Le slash (/) en début de règle

Alors qu’il n’était pas forcément obligatoire par le passé, le slash en début de règle est devenu un caractère indispensable à la bonne compréhension des spiders des moteurs de recherche, surtout en cas d’utilisation de wildcards, ou jokers. Depuis plus de 2 ans désormais, Google, entre autres, a décidé de modifier son mode de lecture des différentes commandes des fichiers robots.txt. Ainsi, vous n’écrirez plus :

Disallow : *.html

Mais

Disallow : /*.html

Un petit détail qui n’a l’air de rien mais qui peut avoir une grande incidence sur l’indexation de vos pages. Par exemple, si vous décidiez de camoufler toutes les pages de commentaires sur votre site, et que vous taper :

Disallow : */comments

Vous risquez au contraire d’en donner le libre accès aux crawlers. Il vous faudra donc l’écrire :

Disallow : /*/comments

La fin de chaîne, ou fin de règle

La fin de la règle peut aussi avoir son importance, encore une fois, surtout avec l’usage des jokers. Selon ce que vous souhaitez, le dernier caractère définit la règle à suivre pour le bot. L’* remplace une chaîne de caractère et peut donc se situer en fin de règle. En ce cas, cela signifie que toutes les url commençant par les caractères définis ne devront pas être indexées :

Disallow : /page-fraises*

Si vous terminez votre instruction par un ‘/’, inutile d’ajouter une ‘*’ derrière. Le slash signifie que toutes les sous-pages de la première instruction ne seront pas indexées non plus :

Disallow : /accueil/

Est équivalent à

Disallow : /accueil*

Toutefois, il se peut que vous décidiez que seule la première page soit indexée, et pas les url du répertoire inhérent. Dans ce cas, vous préciserez la chose à l’aide du ‘$’ :

Disallow : /accueil/
Allow : /accueil/$

Si l’ordre n’a pas d’importance, le ‘$’ lui, en a énormément. En cas d’oubli dans ce cas précis, vous donneriez deux ordres contradictoires aux crawlers.

La sensibilité à la casse

La casse a son importance dans deux cas seulement ;

  • Dans le nom du fichier robots.txt (pas de majuscules ! Nulle part !) ;
  • Dans les instructions concernant les chemins d’accès (évitez les url en majuscules, vous vous compliquez grandement la tâche). Dans ce cas, l’url exacte doit être reproduite dans le fichier robots.txt.

En cas de casse non respectée dans l’expression du fichier robots.txt, le robot sera incapable de le trouver. Idem en cas de casse non respectée sur une url, le robot ne pourra pas l’indexer.

Pour le reste, aucun problème en ce qui concerne les directives de type User-agent. Que vous l’écriviez comme ça :

User-agent : Googlebot

Ou comme çà :

User-agent : googlebot

Voire comme ça :

User-agent :googlebot

Cela n’a aucune importance. Les robots sauront lire les commandes.

Optimiser la bande passante avec le fichier robots.txt

Si vous suivez les performances statistiques de votre site, il peut vous arriver d’avoir quelques surprises, comme une fréquentation provenant d’une localisation où ne se trouve aucun client potentiel de votre entreprise. Regardez alors depuis quels moteurs de recherche proviennent ces visiteurs impromptus. Imaginons que votre site soit très bien indexé par Baidu, mais que vous n’avez rien à faire sur le territoire chinois, vous pouvez alors interdire l’indexation de votre site à Baidu. Dans votre fichier robots.txt, vous allez donc reprendre la directive suivante :

User-agent : /Baiduspider
Disallow : /

Vous indiquez ainsi à Baidu que tout le site lui est interdit à l’indexation. N’oubliez pas de reproduire la même commande pour tous les dérivés du moteur de recherche :

User-agent : /Baiduspider-image
User-agent : /Baiduspider-mobile
User-agent : /Baiduspider-news
User-agent : /Baiduspider-favo
User-agent : /Baiduspider-video
Disallow : /

De cette façon, vous conservez la bande passante de votre serveur pour vos clients potentiels, plus à même de répondre favorablement à vos offres.

Protéger ses répertoires secrets

Au risque de nous répéter, le fichier robots.txt ne peut en aucun cas faire œuvre de pare-feu ou d’organe de sécurité de votre site internet. Son seul rôle est de délivrer des directives aux moteurs de recherche pour faciliter la lecture du site et même optimiser un peu sa seo. Bien sûr, ces moteurs de recherche auxquels nous nous adressons sont munis de bots bienveillants. Mais c’est loin d’être le cas de tous les bots traînant sur la toile. D’autres ont des intentions bien plus malignes. Si bien que le simple fait de spécifier que l’on désire cacher un dossier secret aux yeux de la toile devient un véritable phare brillant de mille feux pour un hacker. Rappelons que le fichier robots.txt est facilement visible par tout le monde. Il suffit simplement à l’internaute d’ajouter /robots.txt/ à la fin de l’url du site pour y avoir accès. Tous vos secrets sont donc accessibles facilement, même s’ils ne sont pas indexés par les moteurs de recherche.

L’idéal pour cacher vos fichiers secrets au sein de votre site, sans le crier sur tous les toits avec un beau ;

Disallow : /fichier_secret

C’est d’opter pour un fichier .htaccess dans le répertoire /fichier_secret. En tapant cette commande dans ce fichier .htaccess :

<IfModule mod_headers.c>
Header set X-Robots-Tag "noindex, nofollow"
</IfModule>

Vous déclenchez automatiquement l’inscription d’un Tag dans chacune des pages de votre répertoire. Ce code :

<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

Signifiera aux moteurs de recherche qu’ils n’ont pas le droit d’indexer les pages du répertoire choisi par vos soins, exactement comme avec un ‘Disallow’, mais la différence près que cette fois, tout e monde n’est pas au courant. Et comme vous ne déclarez rien à cacher, vous risquez moins de visites de curieux, qui ne cherchent pas ce que vous n’avez pas à cacher, mais que vous cachez quand même…

Les caractères spéciaux et le fichier robots.txt

Il arrive parfois que les crawlers ne respectent pas vraiment les instructions délivrées par le fichier robots.txt. Non pas que ces petits bots cherchent à jouer avec nos nerfs en ne respectant pas les règles, mais bien qu’il existe une forte chance qu’une erreur se soit glissée dans l’url. Et ça, on le doit souvent aux caractères dits spéciaux. Les caractères spéciaux, ce sont tous les ([ !% ?)], etc, etc. Et ces derniers peuvent être reconnus simplement par les crawlers… Ou pas du tout.

Le traitement des url avec et sans chaine de paramètre

Une url sans chaîne de paramètre accepte volontiers un ou plusieurs caractères spéciaux. L’instruction délivrée dans le fichier robots.txt est bien appliquée. Mais tout change lorsque l’url contient une chaîne de paramètre. Là, il devient nécessaire d’encoder les caractères spéciaux. Encore faut-il connaître les codes en question pour pouvoir transformer un espace ou un crochet en langage compréhensible par les bots.

L’interprétation des caractères spéciaux

Puisque nous en sommes là de nos pérégrinations sur le sujet, autant aller jusqu’au bout et vous livrer les interprétations des caractères spéciaux ;

Vous pouvez noter que certains caractères spéciaux ne nécessitent aucun encodage, peu importe leur localisation, avec ou sans chaîne de paramètre. On les retrouve identiques dans le REQUEST_URI et dans le QUERY_STRING. D’autres, à l’inverse, demandent un encodage permanent. Enfin les crochets ne s’encodent que lorsqu’ils sont présents au sein d’une chaîne de paramètre

CaractèreCodage URLREQUEST_URIQUERY_STRING
Espace%20%20%20
!%21!!
"%22%22%22
%%25%%
&%26&&
(%28((
)%29))
PLUS%2BPLUSPLUS
,%2C
.%2E..
SLASH%2FSLASHSLASH
:%3A::
;%3B;;
%3E%3E%3E
?%3F??
@%40@@
[%5B[%5B
%5C%5C%5C
]%5D]%5D
^%5E%5E%5E
'%60''
{%7B%7B%7B
|%7C%7C%7C
}%7D%7D%7D
~%7E~~

Les caractères accentués

Ici, pas de doute possible. Tous les caractères accentués doivent être encodés dans les url, où qu’ils se trouvent. Sans quoi, la directive ne sera pas acceptée par les bots.

Conclusion

En nous permettant de maîtriser l’intrusion permanente des spiders et des crawlers des moteurs de recherche, le fichier robots.txt rend d’immenses services. La chose est simple, à coder et demande juste quelques automatismes pour permettre de jouer avec Google, Yahoo, Bing et consorts. S’il peut arriver que deux moteurs de recherche ne lisent pas exactement les instructions de la même façon, tous sont calibrés sur le même principe. 9 fois sur 10, ce qui est bon pour Google est bon aussi pour les autres. D’où l’intérêt primordial de bien travailler son fichier robots.txt, et de comprendre la démarche complète permettant cette optimisation de recherche et d’indexation de la part des moteurs. Il ne reste plus qu’à travailler le sitemap pour optimiser plus encore le seo.

Abonnez-vous à notre Newsletter !

No Comments

Ajouter un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.