SEO, BASH, PHP et plus si affinités

Robots.txt, ce qu’il faut eviter

On ne vous l’a surement pas assez dit, mais en bon SEO que vous êtes, le fichier robots.txt DOIT figurer à la racine de votre/vos site(s) internet.
Certains d’entre vous me diront : « Oui on le sait, mais de toutes façon ça marche très bien sans ». Et je vais vour répondre : « Oui certes, mais il y a également ce que vous ne voyez pas ».
Je vais vous montrer rapidement dans cet article pourquoi il vous faut un fichier robots.txt et également vous expliquer pourquoi il ne faut pas trop l’enrichir.

Pourquoi avoir absolument un robots.txt ?

Comme je l’ai stipulé dans l’introduction de ce billet, il n’y a aucune obligation à avoir ce fichier à la racine de votre site.
En effet, comme l’indique la RFC (voir à la fin de l’article), si votre serveur renvoi un code 404 en effectuant un GET sur le robots.txt (en clair pas de fichier robots.txt), il [le robot] assume qu’il n’y a aucune restriction sur votre site, il va donc tout manger.
Imaginez un instant que le robot qui va venir crawler votre site s’attend à entrer dans un grand restaurant pour déguster son plat préféré, mais qu’à l’entrée vous lui dites : « Désolé Monsieur le Bot, nous n’avons plus votre plat, il nous reste cependant du steak haché avec des frites » => déception.

Si vous ne souhaitez pas restreindre l’accès à votre site aux robots, placez ces deux lignes à l’intérieur du fichier robots.txt à la racine de votre site :

User-agent: *
Allow: /

Préférez cette méthode, qui contrairement à la méthode qui consiste à ne pas mettre de robots.txt, retournera un code 200 (OK).

Pour les plus sceptiques d’entre vous, je vous paste un extrait de log pour les 3 plus gros bots :

66.249.65.122 - - [20/Sep/2010:08:31:21 +0200] "GET /robots.txt HTTP/1.1" 200 1188 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "www.*****.com"
67.195.111.41 - - [20/Sep/2010:08:45:42 +0200] "GET /robots.txt HTTP/1.0" 200 1188 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)" "www.*****.com"
207.46.199.184 - - [21/Sep/2010:06:06:57 +0200] "GET /robots.txt HTTP/1.1" 200 2831 "-" "msnbot/2.0b (+http://search.msn.com/msnbot.htm)" "www.*****.com"

Petit hors sujet au passage, sachez que les bots cherchent également un facivon.ico, donc ne les frustrez pas, proposez leur donc un joli favicon (vous pouvez vous aider de ce site : générer un favicon gratuitement).

Pourquoi ne pas mettre tout ce que je souhaite bloquer à l’intérieur

C’est vrai que la directive Disallow de ce fichier permet de spécifier aux robots que vous ne souhaitez pas qu’ils indexent les pages ou répertoires en question.
Cependant, n’importe qui peut avoir accès en lecture à ce fichier, et si vous spécifiez dans ce fichier quelques informations « sensibles », vous facilitez le travail de certains scripts.

2 raisons principales de ne pas bloquer via robots.txt :

  • Certain robots se foutent éperdument de la directive Disallow (et vont donc aspirer votre site comme si de rien était).
  • En voulant bloquer votre admin, votre espace d’affilition ou autres, vous pouvez communiquer des informations précieuses à des gens plutôt …. vous voyez quoi !!!

Ok, c’est bien gentil ce que tu viens de dire, mais alors comment je fais moi pour interdire l’accès aux robots ?

Et bien sachez qu’il existe une alternative qui va vous permettre de bloquer l’accès aux pages/répertoires « sensibles », sans donner trop d’informations aux « hackers en herbe ».

Pour cela, nous allons utiliser le fichier .htaccess et grâce au mod_rewrite, on va balancer un joli code 403 (Forbidden) aux robots pour les pages que l’on souhaite garder pour nous.

Un exemple parlant beaucoup mieux qu’un long discours, nous allons interdire à slurp, msnbot et googlebot de venir fouiner dans un répertoire bien connu d’un certain wordpress :

# On bloque le repertoire wp-admin de wordpress pour les 3 spiders suivants
RewriteCond %{HTTP_USER_AGENT} googlebot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} msnbot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} slurp [NC]
RewriteRule ^wp-admin/*$ - [F]
 
# Et on va carrement interdire l'acces au site pour les robots "fouineurs"
# Je ne les ai pas tous mis volontairement puisqu'ils sont la
# uniquement a titre d'exemple
RewriteCond %{HTTP_USER_AGENT} Speedy\ Spider [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ConveraCrawler [NC,OR]
# Le suivant est connu pour aspirer vos sites web !!
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} Net\ Vampire [NC]
# Si vous voulez, vous pouvez en bloquer beaucoup plus
RewriteRule ^(.*)$ - [F]
 
# Si vous utilisez worpdress, placez ces lignes entre
# RewriteRule ^index\.php$ - [L]
# et
# RewriteCond %{REQUEST_FILENAME} !-f

N’oubliez JAMAIS de tester les modifications que vous venez d’apporter à votre fichier .htaccess grâce à l’extension Firefox User Agent Switcher qui vous permettra comme son nom l’indique de changer votre User-Agent et donc de vous faire passer pour un robot.

Attention, je ne viens pas de vous dire de ne pas utiliser la directive disallow (que vous pouvez employer pour vos css, images, …) mais bien de l’utiliser avec parcimonie.
L’avantage avec le htaccess, c’est que même si les robots dits « aspirateur » (car ils ne tiennent pas compte du robots.txt) passent sur votre site, vous êtes sur et certain qu’ils ne prendront rien.

Avant de terminer, petit conseil pour ceux qui le peuvent, analysez vos logs et ajoutez à votre .htaccess les robots qui n’ont rien à faire sur votre site. Croyez moi, cette technique est radicale et elle vous évite de consommer de la bande passante pour des spiders de #$%@.

Voila, j’espère que cet article vous aura démontré que de petits fichiers qui paraissent anodins peuvent parfois en dire beaucoup, trop.

Pour les plus courageux d’entre vous :
A Method for Web Robots Control
Liste de tous les robots également exportable au format raw.
Liste des User-Agent connus également disponible au format xml.
– Scrutez le passage des bots sur votre site avec RDD Bot-Tracker.

13 Réponses to “Robots.txt, ce qu’il faut eviter”

  1. Thomas SOUDAZ dit :

    Il y a tout de même une méthode simple pour disallow discrètement un répertoire qui contient des informations sensibles.

    Il suffit d’utiliser un disallow tronqué du style :

    User-agent: *
    Disallow: wp-adm

    Cela bloquera le répertoire wp-admin/, bon biensur sous wordpress tout le monde connait le nom de votre répertoire « admin » mais en utilisant un nom de répertoire original tronqué, cette méthode est tout à fait viable :).

  2. Excellent cet article du Goupil !
    Une petite piqure de rappel fait toujours du bien et permet de recadrer beaucoup de chose.
    Je recommande à tous une lecture en détail et une mise en application immédiate sur tous vos sites.

  3. Et je crois aussi que les bots aiment bien les liens ! En voici un bien frais. Félicitations pour votre article très clair.

  4. Keeg dit :

    @Thomas SOUDAZ : Excellent ça, faut que je teste.

  5. Aurélien dit :

    Exact, l’astuce de Thomas est excellente, j’utilisais celle du Renard, étant un peu parano sur les bords.

  6. RDD dit :

    @Thomas : exact, je ne savais pas que l’on pouvait l’utiliser de cette manière (personnellement j’utilisai le wildcard *), donc merci pour l’info.

    Mon coté contradictoire dira juste :
    Si ton espace d’admin est /admin et que ton site contient un répertoire /administration avec la liste des enseignants par exemple (une page par enseignant), cette règle n’est pas valable (tu interdiras aux robots tout ce qui se trouvera a l’intérieur du répertoire administration).

    Je sais, ça représente 0.09% des cas, mais comme je l’ai dis avant, c’est mon coté contradictoire ^^

    @Aurelien : Plus on est de paranos, plus on flippe !! La menace n’est pas fantôme, mais bien réelle car personne n’est a l’abri de l’attaque des clones.

  7. Crunch dit :

    Sympa cet article et merci à Thomas pour l’astuce ! 🙂

  8. Maxime dit :

    Pas mal User Agent Switcher, je ne conaissais pas. Bien pratique !

  9. le Juge SEO dit :

    Tres bon article,

    Je vais me pencher sur le WP-admin de mon blog … perso je suis peut ete pas assz parano..

  10. Kilroy dit :

    Bien vu le coup du .htaccess basé sur les user-agent pour bloquer les robots.
    Personnellement je bloquerais plutôt l’admin pour TOUS les robots et totalement certains robots « indélicats ».

    A ce propos, avoir une liste de ces derniers serait utile.
    Un de mes clients, probablement inspiré par le robots.txt de Wikipedia (un modèle du genre) bloque Xenu Link Sleuth qui est pourtant diablement utile pour repérer les 404 !

  11. Ray dit :

    Super articles, jusqu’à présent je trouvais que certains robots ne tenais pas compte de mon Robots.txt
    Par contre le cout du Htaccess c’est tip top.

  12. xnxx dit :

    Quand on pense que GOOGLE indexe tout les site uniquement avec des robot

  13. Mario dit :

    Bon du coup j’utilise pas de robot.txt mais le HTAccess que tu as donné dans ton article plus récent et des raccourcisseurs d’url! J’espère que ça va freiner un peu la concurrence 😛

Trackbacks/Pingbacks

  1. Pagerank sculpting Google : quoi de neuf ? - [...] Jetez un oeil à vos logs et vous verrez. Mieux vaut par exemple assurer ses arrières avec un header…
  2. SEO | Pearltrees - [...] De l'usage du robots.txt | Renardudezert On ne vous l’a surement pas assez dit, mais en bon SEO que…
  3. BlOg'X Office 73 : petit medley du Web | Autour du Web - [...] Robots.txt, ce qu’il faut eviter [...]

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Je suis un gros footer de merde !! - Powered by le Presse mot