Caractéristiques du fichier robots.txt

Extrait

Ce document décrit la façon dont nous gérons le fichier robots.txt qui vous permet de contrôler comment nos robots explorent et indexent les sites Web accessibles au public.

Ce qui a changé

Le 1er juillet 2019, Google a annoncé que le protocole robots.txt était en passe de devenir une norme Internet. Ces modifications sont reflétées dans ce document.

Définitions de base

Définitions
Robot d'exploration Un robot d'exploration est un service ou un agent qui explore des sites Web. De manière générale, un robot d'exploration accède de manière récursive et automatique aux URL connues d'un hôte qui présente un contenu consultable via les navigateurs Web standards. Au fur et à mesure de la découverte de nouvelles URL (par divers moyens, comme à partir de liens sur des pages existantes et explorées ou à partir de fichiers sitemap), ces dernières sont explorées de la même façon.
User-agent Moyen d'identifier un robot d'exploration ou un ensemble de robots d'exploration précis.
Instructions Liste des consignes applicables à un robot d'exploration ou à un groupe de robots d'exploration et énoncées dans le fichier robots.txt.
URL Uniform Resource Locators tels que définis dans la RFC1738.
Propre à Google Ces éléments sont propres à notre mise en œuvre des fichiers robots.txt, et ne sont pas nécessairement pertinents pour des tierces parties.

Applicabilité

Tous nos robots d'exploration automatiques suivent les consignes énoncées dans le présent document. Lorsqu'un agent accède à des URL au nom d'un internaute (par exemple, pour des projets de traduction, pour s'abonner manuellement à des flux ou pour analyser des logiciels malveillants), ces consignes ne s'appliquent pas.

Emplacement du fichier et plage de validité

Vous devez placer le fichier robots.txt dans le répertoire racine de l'hôte, et veiller à ce qu'il soit accessible via le protocole et le numéro de port appropriés. Les protocoles généralement acceptés pour le fichier robots.txt sont basés sur des URI. Pour la recherche Google (par exemple, pour l'exploration des sites Web), les protocoles "HTTP" et "HTTPS" sont de mise. Avec ces protocoles, le fichier robots.txt est exploré à l'aide d'une requête HTTP GET non conditionnelle.

Propre à Google : nous acceptons et nous suivons également les instructions des fichiers robots.txt pour les sites FTP. Nous accédons aux fichiers robots.txt basés sur un FTP via le protocole FTP, à l'aide d'une connexion anonyme.

Les instructions indiquées dans le fichier robots.txt s'appliquent seulement à l'hôte, au protocole et au numéro de port sur lesquels le fichier 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.müller.eu/robots.txt Valides :
  • http://www.müller.eu/
  • http://www.xn--mller-kva.eu/

Non valides : http://www.muller.eu/

ftp://example.com/robots.txt

Valides : ftp://example.com/

Non valides : http://example.com/

Propre à Google : nous utilisons les fichiers robots.txt pour les ressources FTP.

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/

Gestion des codes de résultat HTTP

L'exploration de fichiers robots.txt peut généralement aboutir à trois résultats différents :

  • autorisation totale : tout le contenu peut être exploré ;
  • interdiction totale : aucun contenu ne peut être exploré ;
  • autorisation conditionnelle : les instructions du fichier robots.txt déterminent la possibilité d'explorer certains contenus.
Gestion des codes de résultat HTTP
2xx (réussite) Codes de résultat HTTP qui signalent qu'une demande d'exploration avec "autorisation conditionnelle" a été traitée correctement.
3xx (redirection) Google suit au moins cinq sauts de redirection, tels que définis par la RFC 1945 pour HTTP/1.0, puis arrête et affiche le code d'état 404. Le traitement des redirections du fichier robots.txt vers des URL non autorisées est déconseillé. Comme aucune règle n'a encore été récupérée, les redirections sont suivies pendant au moins cinq sauts et, si aucun fichier robots.txt n'est identifié, Google affiche le code d'état 404 pour le fichier robots.txt. Le traitement des redirections logiques du fichier robots.txt basées sur un contenu HTML renvoyant 2xx (frames, JavaScript ou redirections de type méta-actualisation) est déconseillé. Le contenu de la première page est utilisé pour trouver les règles applicables.
4xx (erreurs de client) Toutes les erreurs 4xx sont traitées de la même manière. Nous supposons qu'aucun fichier robots.txt valide n'existe. Nous estimons donc qu'il n'y a pas de restrictions. Il s'agit d'une "autorisation totale" de l'exploration.
5xx (erreur de serveur)

Les erreurs de serveur sont considérées comme des erreurs temporaires qui résultent en une "interdiction totale" de l'exploration. La demande est renouvelée jusqu'à l'obtention d'un code de résultat HTTP qui n'indique plus d'erreur de serveur. Une erreur 503 (Service non disponible) 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. Pour suspendre temporairement l'exploration, il est recommandé d'afficher un code de résultat HTTP 503.

Propre à Google : si nous parvenons à déterminer qu'un site n'est pas configuré pour afficher une erreur 5xx au lieu d'une erreur 404 en cas de pages manquantes, nous traitons les erreurs 5xx de ce site comme des erreurs 404.

Demandes infructueuses ou données incomplètes Le traitement d'un fichier robots.txt impossible à explorer en raison d'erreurs DNS ou de réseau, telles que des délais avant expiration, 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 Le contenu du fichier robots.txt est généralement mis en cache pendant 24 heures, mais peut être mis en cache plus longtemps si l'actualisation de la version en cache n'est pas possible (en raison de délais avant expiration ou d'erreurs 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 Cache-Control max-age.

Format de fichier

Le format de fichier attendu est du texte brut encodé en UTF-8. Le fichier se compose de lignes séparées par CR, CR/LF ou LF.

Seules les lignes valides sont prises en compte. Tout autre contenu est ignoré. Par exemple, si le document obtenu est une page HTML, nous traitons uniquement les lignes de texte valides. Nous ignorons le reste, sans afficher de message d'erreur ou d'avertissement.

Si vous utilisez un codage des caractères qui n'est pas un sous-ensemble de la norme UTF-8, cela risque de poser des problèmes lors de l'analyse du contenu du fichier.

Toute nomenclature Unicode facultative (indicateur d'ordre des octets) placée au début du fichier robots.txt est ignorée.

Chaque ligne valide est constituée d'un champ, de deux-points et d'une valeur. Les espaces sont facultatifs (mais recommandés pour améliorer la lisibilité). Il est possible d'inclure des commentaires n'importe où dans le fichier en utilisant le caractère "#". Nous estimons que tout le contenu situé entre le début d'un commentaire et la fin de la ligne forme un commentaire, et nous l'ignorons. Le format général est <field>:<value><#optional-comment>. Les espaces au début et à la fin de la ligne sont ignorés.

L'élément <field> n'est pas sensible à la casse. L'élément <value> peut être sensible à la casse, en fonction de l'élément <field>.

Le traitement des éléments <field> avec des erreurs ou des fautes de frappe simples (par exemple, "useragent" au lieu de "user-agent") n'est pas possible.

Chaque robot d'exploration peut avoir une taille maximale de fichier. Tout contenu qui dépasse cette taille est ignoré. Google applique actuellement une limite de taille de 500 kibioctets (Kio). Pour réduire la taille du fichier robots.txt, consolidez les instructions 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 formelle/définition

Voici une description ABNF, telle que spécifiée dans la RFC 5234.

robotstxt = *(group / emptyline)
group = startgroupline                    ; We start with a user-agent
        *(startgroupline / emptyline)     ; ... and possibly more user-agents
        *(rule / emptyline)               ; followed by rules relevant for UAs

startgroupline = *WS "user-agent" *WS ":" *WS product-token EOL

rule = *WS ("allow" / "disallow") *WS ":" *WS (path-pattern / empty-pattern) EOL

; parser implementors: add additional lines you need (for example, Sitemaps), and
; be lenient when reading lines that don’t conform. Apply Postel’s law.

product-token = identifier / "*"
path-pattern = "/" *(UTF8-char-noctl)    ; valid URI path pattern; see 3.2.2
empty-pattern = *WS

identifier = 1*(%x2d / %x41-5a / %x5f / %x61-7a)
comment = "#" *(UTF8-char-noctl / WS / "#")
emptyline = EOL
EOL = *WS [comment] NL         ; end-of-line may have optional trailing comment
NL = %x0D / %x0A / %x0D.0A
WS = %x20 / %x09

; UTF8 derived from RFC3629, but excluding control characters
UTF8-char-noctl = UTF8-1-noctl / UTF8-2 / UTF8-3 / UTF8-4
UTF8-1-noctl    = %x21 / %x22 / %x24-7F  ; excluding control, space, '#'
UTF8-2          = %xC2-DF UTF8-tail
UTF8-3          = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
                  %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4          = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
                  %xF4 %x80-8F 2( UTF8-tail )
UTF8-tail       = %x80-BF

Regroupement de lignes et de règles

Une ou plusieurs lignes user-agent suivies d'une ou plusieurs règles. Le groupe se termine par une ligne user-agent ou une fin de fichier. Le dernier groupe peut ne pas avoir de règles, auquel cas il autorise implicitement tout.

Exemples de groupes :

user-agent: a
disallow: /c

user-agent: b
disallow: /d

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

user-agent: h

Quatre groupes distincts sont spécifiés :

  • Un groupe pour "a"
  • Un groupe pour "b"
  • Un groupe pour "e" et "f"
  • Un groupe pour "h"

À l'exception du dernier groupe (groupe "h"), chacun d'eux possède sa propre ligne de membre de groupe. Le dernier groupe (groupe "h") est vide. Notez l'utilisation facultative des espaces vides et des lignes vides pour améliorer la lisibilité.

Ordre de priorité des user-agents

Un seul groupe est valide pour un robot d'exploration particulier. Le robot d'exploration doit déterminer le groupe de lignes approprié en recherchant le groupe avec le user-agent le plus spécifique, mais où il y a toujours une correspondance. Tous les autres groupes sont ignorés par le robot d'exploration. Le user-agent est sensible à la casse. 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

Exemple 1

En supposant que le fichier robots.txt soit le suivant :

      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 Le groupe suivi est le groupe 1. Le robot d'exploration suit seulement le groupe le plus spécifique. Il ignore tous les autres.
Googlebot (Web) Le groupe suivi est le groupe 3.
Googlebot Google Images Le groupe suivi est le groupe 3. Il n'existe aucun groupe googlebot-images spécifique. C'est pourquoi le robot d'exploration suit le groupe plus générique.
Googlebot-News (lors de l'exploration d'images) Le groupe suivi est le groupe 1. Ces images sont explorées pour et par Googlebot-News. C'est pourquoi le robot d'exploration suit seulement le groupe Googlebot-News.
Autre robot (Web) Le groupe suivi est le groupe 2.
Autre robot (Actualités) Le groupe suivi est 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.

Exemple 2

En supposant que le fichier robots.txt soit le suivant :

      user-agent: googlebot-news
      disallow: /fish

      user-agent: *
      disallow: /carrots

      user-agent: googlebot-news
      disallow: /shrimp
    

Voici comment les robots d'exploration fusionnent les groupes pertinents pour un user-agent spécifique :

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

      user-agent: *
      disallow: /carrots
    

Vous pouvez également consulter la page consacrée à nos robots d'exploration et à nos chaînes de user-agent.

Règles relatives aux membres du groupe

Seules les règles standards relatives aux membres du groupe sont traitées dans cette section. Ces règles sont également appelées "instructions" pour les robots d'exploration. Ces instructions sont 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 instructions sans [path] sont ignorées.

Si elle est spécifiée, la valeur [path] doit être définie à partir de la racine du site Web dont 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 d'accès doit commencer par "/" pour désigner la racine. Le chemin d'accès est sensible à la casse. Plus en savoir plus, consultez la rubrique "Correspondance d’URL en fonction des valeurs des chemins d'accès" ci-dessous.

disallow

La directive disallow spécifie les chemins auxquels les robots d'exploration désignés ne doivent pas avoir accès. Si aucun chemin d'accès n'est spécifié, les robots d'exploration ignorent l'instruction.

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 d'accès n'est spécifié, les robots d'exploration ignorent l'instruction.

Utilisation :

allow: [path]

Correspondance d’URL en fonction des valeurs des chemins d'accès

La valeur du chemin d'accès permet de déterminer si oui ou non une règle s'applique à une URL spécifique d'un site. À l'exception des caractères génériques, le chemin d'accès sert à correspondre au début d'une URL et de toutes les URL valides qui commencent par le même chemin d'accès. 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 d'accès sont compatibles avec Google, Bing et les principaux autres moteurs de recherche. 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 d'accès
/ Correspond à l'URL racine et à toute URL de niveau inférieur.
/* Équivaut à /. Le caractère générique de fin est ignoré.
/fish

Correspondances :

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

Non-correspondances :

  • /Fish.asp
  • /catfish
  • /?id=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

Non-correspondances :

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

La barre oblique finale signifie qu'il y a une correspondance avec tout élément du dossier.

Correspondances :

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

Non-correspondances :

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

Correspondances :

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

Non-correspondances :

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

Correspondances :

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

Non-correspondances :

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

Correspondances :

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

Non-correspondances : /Fish.PHP

Lignes de type "non membre du groupe" acceptées par Google

Google, Bing et les principaux autres moteurs de recherche acceptent sitemap, comme défini par sitemaps.org.

Utilisation :

sitemap: [absoluteURL]

[absoluteURL] redirige vers un sitemap, un fichier d'index de sitemaps ou une URL équivalente. L'URL n'a pas besoin d'être hébergée au même endroit que le fichier robots.txt. Plusieurs entrées sitemap peuvent exister. En tant que lignes de type "non membre du groupe", elles ne sont pas liées à des user-agents précis, et tous les robots d'exploration peuvent les suivre, tant qu'elles n'ont pas été bloquées.

Ordre de priorité des lignes de type "membre du groupe"

Au niveau des lignes de type "membre du groupe", en particulier pour les instructions allow et disallow, la règle la plus spécifique basée sur la longueur de l'entrée [path] l'emporte sur la règle la moins spécifique (la plus courte). En cas de règles qui se contredisent, y compris celles contenant des caractères génériques, la règle la moins restrictive s'applique.

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

allow: /p

disallow: /

Verdict: allow

http://example.com/folder/page

allow: /folder

disallow: /folder

Verdict: allow

http://example.com/page.htm

allow: /page

disallow: /*.htm

Verdict: undefined

http://example.com/

allow: /$

disallow: /

Verdict: allow

http://example.com/page.htm

allow: /$

disallow: /

Verdict : disallow

Tester le balisage du fichier robots.txt

Google propose deux options pour tester le balisage du fichier robots.txt :

  1. L'outil de test du fichier robots.txt dans la Search Console
  2. La bibliothèque robots.txt Open Source de Google, également utilisée dans la recherche Google