Article mis à jour le 08/04/2015

Robots.txt et WordPressParmi les pratiques les plus anciennes en référencement naturel, le fichier robots.txt est toujours utilisé par un grand nombre de référenceur.

Mais est-il encore utile ? Et si oui, comment le paramétrer sur votre site Internet et sur WordPress ?

Si vous avez besoin d’aide pour l’installer ou l’adapter à votre configuration, faites appel à nos services de développement WordPress.

Qu’est-ce que le fichier robots.txt ?

Le robots.txt est un fichier que l’on place à la racine de son serveur et qui indique aux moteurs de recherches et autres robots le comportement qu’ils doivent adopter quand ils parcourent et indexent votre site Internet. Pour ceux qui ne comprennent pas le terme, « indexer » signifie pour un moteur de recherche d’analyser, de parcourir et de garder en mémoire votre contenu, et donc de pouvoir le proposer dès qu’un Internaute faire une recherche.

Grâce à ce fichier, vous pouvez indiquer quels contenus doivent être indexés et lesquels doivent être ignorés. En d’autres termes, c’est une aide pour améliorer votre référencement naturel, notamment pour bloquer l’accès à certains contenus privés, inutiles ou nuisibles.

Le robots.txt ne fait pas tout

Le hic, c’est que ce fichier est insuffisant pour s’assurer que les pages bloquées ne soient pas visibles dans les moteurs de recherche.

La preuve : Google indique dans les résultats que la page n’a pas pu être indexée correctement, mais que celle-ci est quand même présente présent dans l’index… En gros, cela veut dire : « on a bien compris votre fichier robots.txt, mais on s’en tape comme de l’an 40 » (et dieu sait combien c’était fun en l’an 40).

Page bloquée par Robots.txt dans les résultats de Google
Résultats Google avec une page bloquée par Robots.txt – Source Search Engine Land

En fait, cela s’explique par le fait que Google a trouvé des liens pointant vers cette page, sans pour autant en connaître le contenu réel. On peut donc se poser la question de la pertinence de Google sur ce point précis.

Si vous utilisez le fichier robots.txt pour restreindre l’accès à certains éléments de votre site Internet, posez-vous donc d’abord ces quelques questions :

  • Existe t-il une réelle utilité à restreindre l’accès à ces contenus ?
  • Si je restreint l’accès, ai-je limité au maximum les liens qui pointent vers ceux-ci ?

Le fichier robots.txt ne doit jamais être utilisé comme une rustine pour cacher certains contenus. Partez du principe que ce que vous devez indexer doit être accessible facilement par l’utilisateur et le moteur de recherche, ce qui repose sur la mise en place d’une structure de site Internet cohérente.

Pour être concret : si vous avez un contenu bloqué par le fichier robots.txt, c’est un peu comme si vous aviez une superbe porte d’entrée à l’avant de votre maison, mais que vous disiez aux invités de faire le tour…

Cela ne vous dispense donc pas d’ajouter sur toutes vos pages bloquées une ligne pour lui indique de ne pas indexer le contenu de celles-ci :

<meta name="robots" content="noindex, nofollow">

Robots.txt : fonctionnement

Indexer tous vos contenus

Si vous avez dans l’optique de référencer l’intégralité de vos pages, de vos contenus et de vos médias, n’utilisez pas le fichier robots.txt : il ne vous servira à rien.

Par défaut, tous les robots et moteurs de recherche vont indexer tout ce qu’ils trouvent. Donc si vous n’avez rien à bloquer ou à cacher, inutile de lire la suite de cet article et allez plutôt boire un café ou une bière (en fonction de l’heure qu’il est). Attention cependant, je connais peu de sites qui sont dans ce cas de figure…

Bloquer l’accès aux contenus

Le fonctionnement pour bloquer l’accès un contenu grâce au fichier robots.txt est identique sur WordPress que sur n’importe quel autre site Internet. Il faut indiquer le nom du robot concerné suivi des règles que celui-ci devra suivre :

User-agent: Nom du robot
Disallow: répertoire à bloquer

Dans un même fichier robots.txt, on peut avoir :

  • plusieurs user-agent différent.
  • plusieurs lignes « Allow » (autoriser) ou « Disallow » (Interdire) pour chaque user-agent.

On peut par exemple bloquer Google sur certains répertoires, Yahoo sur d’autres et Bing sur aucun.

User-agent: Nom-du-1er-robot
Disallow: /repertoire-a-desindexer
Disallow: /2eme-repertoire-a-desindexer

User-agent: Nom-du-2nd-robot
Disallow: /repertoire-a-desindexer
Disallow: /2eme-repertoire-a-desindexer
Disallow: /3eme-repertoire-a-desindexer

...

Le fichier robots.txt permet heureusement d’utiliser le caractère * qui indique « quel que soit le contenu » ou « quel que soit le robot« . C’est ce qu’on appelle un Wildcard, mais il n’est pas supporté par tous les robots et moteurs de recherche. Heureusement pour nous, les principaux comprennent parfaitement cette commande (Google, Bing, …). Voici quelques exemples concrets de son utilisation :

User-agent: Nom-du-1er-robot
# tout répertoire qui commence par zigo
Disallow: /zigo*
# toute image au format jpg
Disallow: /*.jpg
# toute URL qui contient le caractère ?
Disallow: /*?

# pour tous les robots
User-agent: *
Disallow: /zigossqdqf

Si vous travaillez sur un nouveau site ou que le site est en maintenance, et que vous voulez vous assurer qu’aucun moteur ne puisse rien indexer, il existe une simple commande qui force la non-indexation de tout le contenu par n’importe quel robot :

User-agent: *
Disallow: /

Maintenant que vous avez compris le concept de base, voyons comment créer un fichier robots.txt pertinent pour le CMS WordPress.

WordPress et Robots.txt

Les fichiers inutiles de WordPress

De base, un nombre relativement important de fichiers issus du cœur de WordPress peuvent être indexés, alors que ceux-ci n’ont aucun intérêt pour le moteur de recherche ou le visiteur. De même, les fichiers de vos plugins ou de vos thèmes ne servent à rien pour l’internaute. Autant indiquer directement dans le fichier robots.txt que vous ne voulez en aucun cas qu’ils soient indexer :

User-agent : *
# On désindexe tous les URL ayant des paramètres (duplication de contenu)
Disallow: /*?
# On désindexe la page de connexion (contenu inutile)
Disallow: /wp-login.php

Avec ce simple code, nous avons déjà une base saine. Mais nous pouvons aller plus loin.

Remarque : je conseillais auparavant de désindexer les fichiers des thèmes, de wp-admin et de wp-includes. Désormais Google parvient à exécuter le javascript pour comprendre votre contenu. Il est donc primordial pour le référencement de WordPress de ne plus bloquer l’indexation de ces éléments. Si l’on conserve la fonction Disallow, on va effectivement empêcher l’exécution des scripts de la page, ce qui peut potentiellement nuire à l’indexation de vos contenus. Et sur certains sites, ces scripts sont importants pour pouvoir avoir un réel rendu du contenu.

Référencement et fichiers sensibles

La partie suivante du fichier robots.txt de WordPress permet d’améliorer et de compléter le paramétrage optimale du CMS pour le référencement naturel. Nous allons en effet bloquer l’accès à certains contenus et URL indésirables :

User-agent: *
# On bloque les URL de ping et de trackback
Disallow: */trackback
# On bloque tous les flux RSS sauf celui principal (enlevez /* pour bloquer TOUS les flux)
Disallow: /*/feed
# On bloque toutes les URL de commentaire (flux RSS inclus)
Disallow: /*/comments

Attention, cela ne vous dispense pas de correctement paramétrer votre blog WordPress, sans quoi le code précédent est aussi utile que du pain rassi au beau milieu d’un désert aride. Il vous faut donc :

  • Supprimez dans votre thème les liens qui pointent vers les trackbacks de vos articles : c’est une spécificité de WordPress et ce CMS ajoute déjà ces informations dans le header (une section visible uniquement du moteur de recherche). Inutile donc de les garder dans le thème visible par les visiteurs.
  • Ne divisez pas en sous-pages vos commentaires, car cela créer des pages souvent pauvres en contenus, tout en diluant inutilement la popularité du site sur des pages secondaires. Pour changer cela, rendez-vous dans l’administration dans « Réglages => Discussions« .
  • Supprimez dans votre thème toute référence aux flux RSS (sauf celui de l’accueil). Vous pouvez à la rigueur garder ceux des catégories mais par pitié supprimez ceux des commentaires. Dans le cas contraire, je serais obligé de vous abattre à coup de pelle…

Continuons sur notre lancée : certains fichiers ne devraient jamais être accessibles par une autre personne que le webmaster, et encore moins être mis à disposition dans les résultats de recherche de Google, Yahoo ou Bing. Le fichier robots.txt peut heureusement bloquer l’accès à ceux-ci, avec ces quelques lignes :

User-agent: *
# On élimine ce répertoire sensible présent sur certains serveurs 
Disallow: /cgi-bin
# On désindexe tous les fichiers qui n'ont pas lieu de l'être
Disallow: /*.php$
Disallow: /*.inc$
Disallow: /*.gz$
Disallow: /*.cgi$

Google Image et Adsense

Vous pouvez aussi choisir de ne pas indexer des pages, mais de faire en sorte que les images qu’elles contiennent soient quand même ajoutées dans le moteur  de recherche d’image de Google. Si vous êtes dans ce cas de figure, rajoutez ce code :

User-agent: Googlebot-Image
Disallow:

Si comme un grand nombre de sites vous faites appel à la plateforme Adsense pour afficher des publicités, voici quelques lignes qui permettront à leur script de fonctionner parfaitement sur toutes vos pages, quelles que soient les autres lignes de votre fichier robots.txt :

# Autoriser Google AdSense
User-agent: Mediapartners-Google
Disallow:

Le fichier sitemap ?

Le fichier robots.txt permet aussi d’indiquer l’URL de votre fichier sitemap, qui lui-même recense tous les URL de vos différents contenus, sous la forme suivante :

Sitemap: http://www.monsite.fr/sitemap.xml

Honnêtement, ne le faites pas ! Et la raison en est toute simple : cela ne sert à rien. Il est bien plus efficace d’ajouter votre sitemap directement dans les centres webmaster de chaque moteur de recherche :

Non seulement c’est plus rapide et efficace, mais chaque centre vous donnera des informations intéressantes sur la validité du fichier sitemap:

Sitemap et centre Webmaster de Google
Sitemap et centre Webmaster de Google

Pire encore, si vous indiquez clairement l’URL de votre fichier sitemap, vous facilitez la tâche de tous les personnes qui voudront scanner votre site ou voler vos contenus (il existe des dizaines d’outils gratuits et payants pour cela, croyez-moi…).

Des CSS et JS bloqués par le robots.txt

Depuis quelques temps, il est obligatoire de permettre à Google d’indexer vos contenus correctement, et ceci car le moteur de recherche va en effet visualiser le rendu réel de vos pages. C’est ce que l’on peut notamment voir dans le centre webmaster de Google, dans la section « Exploration > Explorer comme Google ». Le moteur de recherche va aussi tester la compatibilité mobile, et pour cela il ne doit pas être bloqué lors de son indexation. C’est pour cela que Google doit impérativement pouvoir accéder aux fichiers JS et CSS.

Si l’on prend le fichier robots.txt actuel, il nous manque deux lignes à rajouter. Sur WordPress, d’autres CMS ou développements maisons, il est courant d’ajouter à la fin d’un fichier CSS et JS le numéro de version de ce dernier : par exemple style.css?ver=2. L’idée de base est de forcer le téléchargement du fichier lorsqu’on le modifie, par exemple lors d’une refonte d’un thème, de l’ajout d’une fonctionnalité ou de la correction d’un bug. Mais comme nous bloquons les URL avec le paramètre ?, nous bloquerions aussi tous ces fichiers.

Pour éviter cela, on ajoutera donc ces deux dernières lignes dans notre fichier robots.txt pour WordPress :

Allow: /*css?*
Allow: /*js?*

Le code complet

Vous l’aurez donc compris (enfin j’espère) : le fichier robots.txt va vous permettre de bloquer l’accès à certains contenus, sans pour autant être la solution miracle. A vous d’optimiser votre site pour bloquer de manière plus complète et naturelle l’accès aux contenus privés, dupliqués ou inintéressants.

Et voici le code final du fichier robots.txt pour WordPress :

User-agent: *
Disallow: /*?
Disallow: /wp-login.php
Disallow: */trackback
Disallow: /*/feed
Disallow: /*/comments
Disallow: /cgi-bin
Disallow: /*.php$
Disallow: /*.inc$
Disallow: /*.gz
Disallow: /*.cgi
Allow: /*css?*
Allow: /*js?*

User-agent: Googlebot-Image
Disallow:

User-agent: Mediapartners-Google
Disallow:

NoIndex dans le fichier robots.txt

En complément de la directive Disallow, il semblerait que la directive NoIndex fonctionne également pour désindexer des contenus d’un site ou de WordPress (source : Disallow et NoIndex). On pourrait donc, au lieu de bloquer l’accès à certains contenus, permettre la désindexation via cette commande, ce qui donnerait :

User-agent: *
Noindex: /*?
Noindex: /wp-login.php
Noindex: */trackback
Noindex: /*/feed
Noindex: /*/comments
Noindex: /cgi-bin
Noindex: /*.php$
Noindex: /*.inc$
Noindex: /*.gz
Noindex: /*.cgi

Attention cependant, bien que le moteur de recherche Google semble la prendre en compte, rien d’officiel n’a jamais été publié. Je conseille donc d’être prudent. De plus, le moteur de recherche ne prendra en compte que les premières directives. Vous devez donc choisir entre :

  • Noindex : le robot peut suivre les URL mais ne pas indexer le contenu ;
  • Disallow : le robot ne suivra pas les URL.

Par sécurité, préférez toujours la version habituelle en Disallow donnée plus tôt dans cet article.

Si vous avez des remarques, questions ou critiques, n’hésitez pas.