Comment Google interprète la spécification robots.txt

Les robots d'exploration automatiques de Google sont compatibles avec le protocole d'exclusion des robots. Cela signifie qu'avant l'exploration d'un site, les robots d'exploration de Google téléchargent et analysent son fichier robots.txt afin de déterminer les sections qui peuvent être explorées. Ce protocole ne s'applique pas aux robots d'exploration Google contrôlés par les utilisateurs (abonnements à des flux, par exemple) ni aux robots d'exploration conçus pour renforcer la sécurité des internautes (analyse des logiciels malveillants, par exemple).

Qu'est-ce qu'un fichier robots.txt ?

Si vous ne souhaitez pas que les robots d'exploration accèdent à certaines sections de votre site, vous pouvez créer un fichier robots.txt avec des règles spécifiques. Un fichier robots.txt est un fichier texte simple qui contient des règles indiquant quels robots peuvent accéder à quelles sections d'un site.

Emplacement du fichier et plage de validité

Vous devez placer le fichier robots.txt dans le répertoire racine d'un site, en utilisant un protocole compatible. Dans le cas de la recherche Google, les protocoles acceptés sont HTTP, HTTPS et FTP. Avec HTTP et HTTPS, les robots d'exploration récupèrent le fichier robots.txt avec une requête GET non conditionnelle HTTP. Avec le protocole FTP, les robots d'exploration utilisent une commande RETR (RETRIEVE) standard avec une connexion anonyme.

Les règles répertoriées dans le fichier robots.txt s'appliquent seulement à l'hôte, au protocole et au numéro de port sur lesquels le fichier robots.txt est hébergé.

Exemples d'URL de fichiers robots.txt valides

Exemples d'URL de fichiers robots.txt
http://example.com/robots.txt Valides :
  • http://example.com/
  • http://example.com/folder/file
Non valides :
  • http://other.example.com/
  • https://example.com/
  • http://example.com:8181/
http://www.example.com/robots.txt

Valides : http://www.example.com/

Non valides :

  • http://example.com/
  • http://shop.www.example.com/
  • http://www.shop.example.com/
http://example.com/folder/robots.txt Ce n'est pas un fichier robots.txt valide. Les robots d'exploration ne vérifient pas la présence de fichiers robots.txt dans les sous-répertoires.
http://www.exämple.com/robots.txt Valides :
  • http://www.exämple.com/
  • http://xn--exmple-cua.com/

Non valides : http://www.example.com/

ftp://example.com/robots.txt

Valides : ftp://example.com/

Non valides : http://example.com/

http://212.96.82.21/robots.txt

Valides : http://212.96.82.21/

Non valides : http://example.com/ (même si le fichier est hébergé sur 212.96.82.21)

http://example.com:80/robots.txt

Valides :

  • http://example.com:80/
  • http://example.com/

Non valides : http://example.com:81/

http://example.com:8181/robots.txt

Valides : http://example.com:8181/

Non valides : http://example.com/

Gérer les erreurs et les codes d'état HTTP

Lorsque vous demandez un fichier robots.txt, le code d'état HTTP de la réponse du serveur influe sur la façon dont ce fichier robots.txt sera utilisé par les robots d'exploration Google.

Gérer les erreurs et les codes d'état HTTP
2xx (réussite) Les codes d'état HTTP qui signalent une opération réussie invitent les robots d'exploration Google à traiter le fichier robots.txt fourni par le serveur.
3xx (redirection)

Google suit au moins cinq sauts de redirection tels que définis par la RFC 1945, puis arrête et le traite comme un code d'état 404 pour le fichier robots.txt. Ce comportement s'applique également à toutes les URL non autorisées de la chaîne de redirection, car le robot d'exploration n'a pas pu récupérer les règles en raison des redirections.

Google ne suit pas les redirections logiques dans les fichiers robots.txt (frames, JavaScript ou redirections Meta Refresh).

4xx (erreurs client)

Les robots d'exploration Google traitent toutes les erreurs 4xx comme s'il n'existait pas de fichier robots.txt valide. L'exploration a donc lieu sans restriction.

5xx (erreur du serveur)

Étant donné que le serveur n'a pas pu donner de réponse précise à la requête robots.txt de Google, les erreurs de serveur sont interprétées temporairement comme si le site était entièrement inaccessible. Google essaiera d'explorer le fichier robots.txt jusqu'à ce qu'il obtienne un code d'état HTTP sans erreur de serveur. Une erreur 503 (service unavailable) entraîne de nouvelles tentatives assez fréquentes. Si le fichier robots.txt est inaccessible pendant plus de 30 jours, la dernière copie en cache du fichier robots.txt est utilisée. Si aucune copie en cache n'est disponible, Google considère qu'aucune restriction d'exploration ne s'applique.

Si nous parvenons à déterminer qu'un site est configuré à tort pour afficher 5xx au lieu du code d'état 404 pour les pages manquantes, nous traitons l'erreur 5xx de ce site comme une erreur 404 Par exemple, si le message d'erreur sur une page qui renvoie un code d'état 5xx indique "Page introuvable", nous interprétons le code d'état comme 404 (not found).

Autres erreurs Un fichier robots.txt impossible à explorer en raison d'erreurs DNS ou d'erreurs de réseau, telles que des délais d'inactivité, des réponses non valides, des connexions réinitialisées ou suspendues, des erreurs de segmentation HTTP ou autres, est considéré comme une erreur de serveur.

Mise en cache

Google met généralement en cache le contenu du fichier robots.txt pendant 24 heures, mais peut rallonger cette durée si l'actualisation de la version mise en cache n'est pas possible (en raison d'un délai d'inactivité ou de l'erreur 5xx, par exemple). La réponse mise en cache peut être partagée par différents robots d'exploration. Nous pouvons augmenter ou diminuer la durée de vie du cache avec des en-têtes HTTP max-age Cache-Control.

Format de fichier

Le fichier robots.txt doit être un fichier de texte brut encodé en UTF-8. Ses lignes doivent être séparées par CR, CR/LF ou LF.

Google ignore les lignes non valides des fichiers robots.txt, y compris l'indicateur d'ordre des octets (BOM) Unicode au début du fichier, et n'utilise que les lignes valides. Par exemple, si le contenu téléchargé est au format HTML au lieu de règles de fichier robots.txt, Google essaie d'analyser le contenu et d'extraire les règles, puis ignore tout le reste.

De même, si l'encodage des caractères du fichier robots.txt n'est pas UTF-8, Google peut ignorer les caractères qui ne font pas partie de la plage de caractères UTF-8, ce qui pourrait invalider les règles du fichier robots.txt.

Google applique actuellement une limite de taille de fichier robots.txt de 500 kibioctets (Kio). Tout contenu qui dépasse cette taille est ignoré. Pour réduire la taille du fichier robots.txt, consolidez les directives susceptibles d'entraîner la création d'un fichier robots.txt surdimensionné. Par exemple, placez le contenu exclu dans un répertoire distinct.

Syntaxe

Les lignes robots.txt valides se composent d'un champ, du deux-points et d'une valeur. Les espaces sont facultatifs, mais recommandés pour améliorer la lisibilité. Les espaces au début et à la fin de la ligne sont ignorés. Pour inclure un commentaire, ajoutez le caractère # au début de la ligne. Gardez à l'esprit que tout ce qui suit le caractère # sera ignoré. Le format général est <field>:<value><#optional-comment>.

Google accepte les champs suivants :

  • user-agent : identifie le robot d'exploration auquel les règles s'appliquent.
  • allow : chemin d'URL à explorer.
  • disallow : chemin d'URL à ne pas explorer.
  • sitemap : URL complète d'un sitemap.

Les champs allow et disallow sont également appelés directives. Ces directives sont toujours spécifiées sous la forme directive: [path][path] est facultatif. Par défaut, il n'existe pas de restrictions d'exploration pour les robots d'exploration désignés. Les robots d'exploration ignorent les directives sans [path].

Si elle est spécifiée, la valeur [path] est relative à la racine du site Web à partir duquel le fichier robots.txt a été exploré (en utilisant les mêmes protocole, numéro de port, hôte et noms de domaine). La valeur du chemin doit commencer par / pour désigner la racine. Elle est sensible à la casse. En savoir plus sur la correspondance des URL en fonction des valeurs des chemins

user-agent

La ligne user-agent identifie les robots d'exploration auxquelles les règles s'appliquent. Pour obtenir la liste complète des chaînes de user-agent que vous pouvez utiliser dans votre fichier robots.txt, consultez la page consacrée à nos robots d'exploration et à nos chaînes de user-agent.

La valeur de la ligne user-agent n'est pas sensible à la casse.

disallow

La directive disallow spécifie les chemins auxquels les robots d'exploration identifiés par la ligne user-agent avec laquelle la directive disallow est regroupée ne doivent pas avoir accès. Si aucun chemin n'est spécifié, les robots d'exploration ignorent la directive.

La valeur de la directive disallow est sensible à la casse.

Utilisation :

disallow: [path]

allow

La directive allow spécifie les chemins auxquels les robots d'exploration désignés peuvent accéder. Si aucun chemin n'est spécifié, les robots d'exploration ignorent la directive.

La valeur de la directive allow est sensible à la casse.

Utilisation :

allow: [path]

sitemap

Google, Bing et d'autres moteurs de recherche connus acceptent le champ sitemap dans le fichier robots.txt, tel que défini par sitemaps.org.

La valeur du champ sitemap est sensible à la casse.

Utilisation :

sitemap: [absoluteURL]

La ligne [absoluteURL] pointe vers l'emplacement d'un sitemap ou d'un fichier d'index de sitemaps. Il doit s'agir d'une URL complète, comprenant le protocole et l'hôte. Elle ne doit pas nécessairement être encodée au format URL. L'URL n'a pas besoin non plus d'être hébergée au même endroit que le fichier robots.txt. Vous pouvez spécifier plusieurs champs sitemap. Le champ "sitemap" n'est associé à aucun user-agent spécifique et peut être suivi par tous les robots d'exploration, à condition que l'exploration soit autorisée.

Exemple :

user-agent: otherbot
disallow: /kale

sitemap: https://example.com/sitemap.xml
sitemap: https://cdn.example.org/other-sitemap.xml
sitemap: https://ja.example.org/テスト-サイトマップ.xml

Regroupement de lignes et de règles

Vous pouvez regrouper les règles qui s'appliquent à plusieurs user-agents en répétant les lignes user-agent pour chaque robot.

Exemple :

user-agent: a
disallow: /c

user-agent: b
disallow: /d

user-agent: e
user-agent: f
disallow: /g

user-agent: h

Cet exemple comprend quatre groupes de règles distincts :

  • Un groupe pour le user-agent "a"
  • Un groupe pour le user-agent "b"
  • Un groupe pour les user-agents "e" et "f"
  • Un groupe pour le user-agent "h"

Pour obtenir la description technique d'un groupe, consultez le paragraphe 2.1 du protocole d'exclusion des robots.

Ordre de priorité des user-agents

Un seul groupe est valide pour un robot d'exploration particulier. Pour déterminer le groupe de règles approprié, les robots d'exploration Google recherchent dans le fichier robots.txt celui dont le user-agent correspond le plus spécifiquement possible au user-agent du robot d'exploration. Les autres groupes sont ignorés. Tout texte qui ne correspond pas est ignoré (par exemple, googlebot/1.2 et googlebot* sont équivalents à googlebot). L'ordre des groupes dans le fichier robots.txt n'est pas pertinent.

S'il existe plusieurs groupes pour un user-agent spécifique, toutes les règles des groupes qui lui sont applicables sont combinées dans un seul et même groupe.

Exemples

Correspondance des champs user-agent

user-agent: googlebot-news
(group 1)

user-agent: *
(group 2)

user-agent: googlebot
(group 3)

Voici la façon dont les robots d'exploration sélectionneraient le groupe approprié :

Groupe suivi par robot d'exploration
Googlebot-News googlebot-news suit le groupe 1, car le groupe 1 est le groupe le plus spécifique.
Googlebot (Web) googlebot suit le groupe 3.
Googlebot Google Images googlebot-images suit le groupe 2, car il n'existe aucun groupe googlebot-images spécifique.
Googlebot-News (lors de l'exploration d'images) Lors de l'exploration des images, googlebot-news suit le groupe 1. googlebot-news n'explore pas les images pour Google Images. Il suit donc uniquement le groupe 1.
Autre robot (Web) Les autres robots d'exploration Google suivent le groupe 2.
Autre robot (Actualités) Les autres robots Google qui explorent le contenu d'actualités, mais qui ne s'identifient pas comme googlebot-news suivent le groupe 2. Même s'il existe une entrée pour un robot d'exploration lié, elle n'est valide qu'en cas de correspondance exacte.

Regroupement de règles

Si un fichier robots.txt contient plusieurs groupes pertinents pour un user-agent spécifique, les robots d'exploration Google fusionnent ces groupes en interne. Exemple :

user-agent: googlebot-news
disallow: /fish

user-agent: *
disallow: /carrots

user-agent: googlebot-news
disallow: /shrimp

Les robots d'exploration regroupent les règles en fonction du user-agent. Exemple :

user-agent: googlebot-news
disallow: /fish
disallow: /shrimp

user-agent: *
disallow: /carrots

Correspondance d'URL en fonction des valeurs des chemins

Google utilise la valeur du chemin dans les directives allow et disallow pour déterminer si une règle s'applique à une URL spécifique d'un site. Pour ce faire, la règle est comparée au composant du chemin d'URL que le robot d'exploration tente de suivre. Les caractères ASCII non encodés en 7 bits dans un chemin d'accès peuvent être inclus sous forme de caractères UTF-8 ou de caractères d'échappement encodés en UTF-8 sous forme de pourcentage conformément à la RFC 3986.

Seuls certains caractères génériques pour les valeurs de chemin sont compatibles avec Google, Bing et les autres moteurs de recherche connus. Les voici :

  • * désigne 0 ou plusieurs instances d'un caractère valide.
  • $ désigne la fin de l'URL.
Exemples de correspondances de chemins
/ Correspond à l'URL racine et à toute URL de niveau inférieur.
/* Équivaut à /. Le caractère générique de fin est ignoré.
/$ Ne correspond qu'à la racine. Toute URL de niveau inférieur peut être explorée.
/fish

Correspond à tout chemin commençant par /fish.

Correspondances :

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

Pas de correspondance :

  • /Fish.asp
  • /catfish
  • /?id=fish
  • /desert/fish
/fish*

Équivaut à /fish. Le caractère générique de fin est ignoré.

Correspondances :

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

Pas de correspondance :

  • /Fish.asp
  • /catfish
  • /?id=fish
/fish/

Correspond à tous les éléments du dossier /fish/.

Correspondances :

  • /fish/
  • /animals/fish/
  • /fish/?id=anything
  • /fish/salmon.htm

Pas de correspondance :

  • /fish
  • /fish.html
  • /Fish/Salmon.asp
/*.php

Correspond à tout chemin contenant .php.

Correspondances :

  • /index.php
  • /filename.php
  • /folder/filename.php
  • /folder/filename.php?parameters
  • /folder/any.php.file.html
  • /filename.php/

Pas de correspondance :

  • / (même si cela correspond à /index.php)
  • /windows.PHP
/*.php$

Correspond à tout chemin se terminant par .php.

Correspondances :

  • /filename.php
  • /folder/filename.php

Pas de correspondance :

  • /filename.php?parameters
  • /filename.php/
  • /filename.php5
  • /windows.PHP
/fish*.php

Correspond à tout chemin contenant /fish et .php, dans cet ordre.

Correspondances :

  • /fish.php
  • /fishheads/catfish.php?parameters

Pas de correspondance : /Fish.PHP

Ordre de priorité des règles

Lors de la mise en correspondance des règles robots.txt avec les URL, les robots d'exploration utilisent la règle la plus spécifique en fonction de la longueur de son chemin. Dans le cas de règles contradictoires, y compris celles comportant des caractères génériques, Google utilise la règle la moins restrictive.

Les exemples suivants illustrent la règle appliquée par les robots d'exploration Google pour une URL donnée.

Exemples de situations
http://example.com/page

allow: /p
disallow: /

Règle applicable : allow: /p, car elle est plus spécifique.

http://example.com/folder/page

allow: /folder
disallow: /folder

Règle applicable : allow: /folder, car dans le cas des règles de correspondance, Google utilise la règle la moins restrictive.

http://example.com/page.htm

allow: /page
disallow: /*.htm

Règle applicable : disallow: /*.htm, car elle correspond à plus de caractères dans l'URL. Elle est donc plus spécifique.

http://example.com/page.php5

allow: /page
disallow: /*.ph

Règle applicable : allow: /page, car dans le cas des règles de correspondance, Google utilise la règle la moins restrictive.

http://example.com/

allow: /$
disallow: /

Règle applicable : allow: /$, car elle est plus spécifique.

http://example.com/page.htm

allow: /$
disallow: /

Règle applicable : disallow: /, car la règle allow ne s'applique qu'à l'URL racine.