Como o Google interpreta a especificação de robots.txt

Os rastreadores automatizados do Google são compatíveis com o protocolo de exclusão de robôs (REP, na sigla em inglês). Isso significa que, antes de rastrear um site, os rastreadores do Google fazem o download e analisam o arquivo robots.txt do site para extrair informações sobre quais partes podem ser rastreadas. O REP não é aplicável a rastreadores do Google controlados por usuários (por exemplo, assinaturas de feed) ou rastreadores usados para aumentar a segurança do usuário (por exemplo, análise de malware).

O que é um arquivo robots.txt

Se você não quiser que os rastreadores acessem determinadas seções do seu site, crie um arquivo robots.txt com regras apropriadas. Robots.txt é um arquivo de texto simples que contém regras sobre quais rastreadores podem acessar determinadas partes de um site.

Localização do arquivo e período de validade

Você precisa colocar o arquivo robots.txt no diretório de nível superior do site, em um protocolo compatível. No caso da Pesquisa Google, os protocolos compatíveis são o HTTP, HTTPS e FTP. Para HTTP e HTTPS, os rastreadores buscam o arquivo robots.txt com uma solicitação GET não condicional HTTP. Para FTP, os rastreadores usam um comando RETR (RETRIEVE) padrão com um login anônimo.

As regras listadas no arquivo robots.txt se aplicam somente ao host, ao protocolo e ao número da porta em que o arquivo robots.txt está hospedado.

Exemplos de URLs robots.txt válidos

Exemplos de URLs robots.txt
http://example.com/robots.txt Válido para:
  • http://example.com/
  • http://example.com/folder/file
Inválido para:
  • http://other.example.com/
  • https://example.com/
  • http://example.com:8181/
http://www.example.com/robots.txt

Válido para: http://www.example.com/

Inválido para:

  • http://example.com/
  • http://shop.www.example.com/
  • http://www.shop.example.com/
http://example.com/folder/robots.txt Não é um arquivo robots.txt válido. Os rastreadores não verificam arquivos robots.txt em subdiretórios.
http://www.exämple.com/robots.txt Válido para:
  • http://www.exämple.com/
  • http://xn--exmple-cua.com/

Inválido para: http://www.example.com/

ftp://example.com/robots.txt

Válido para: ftp://example.com/

Inválido para: http://example.com/

http://212.96.82.21/robots.txt

Válido para: http://212.96.82.21/

Inválido para: http://example.com/ (mesmo se hospedado em 212.96.82.21)

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

Válido para:

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

Inválido para: http://example.com:81/

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

Válido para: http://example.com:8181/

Inválido para: http://example.com/

Como lidar com erros e Códigos de status HTTP

Ao solicitar um arquivo robots.txt, o Código de status HTTP da resposta do servidor afeta como o arquivo robots.txt será usado pelos rastreadores do Google.

Como lidar com erros e Códigos de status HTTP
2xx (bem-sucedido) Os Códigos de status HTTP que sinalizam sucesso solicitam aos rastreadores do Google o processamento do arquivo robots.txt fornecido pelo servidor.
3xx (redirecionamento)

O Google acompanha pelo menos cinco saltos de redirecionamento, conforme definido pela RFC 1945 (em inglês). Depois interrompe essa ação e o trata como um erro 404 no robots.txt. Isso também ocorre com qualquer URL não permitido na cadeia de redirecionamento, já que o rastreador não pode buscar regras devido aos redirecionamentos.

O Google não segue redirecionamentos lógicos em arquivos robots.txt (frames, JavaScript ou redirecionamentos de tipo meta-atualização).

4xx (erros de cliente)

Os rastreadores do Google tratam todos os erros 4xx como se não houvesse um arquivo robots.txt válido, ou seja, sem restrições de rastreamento.

5xx (erro do servidor)

Como o servidor não conseguiu responder de forma definitiva à solicitação de robots.txt do Google, os erros de servidor são interpretados temporariamente como se o site inteiro não fosse permitido. O Google tentará rastrear o arquivo robots.txt até atingir um Código de status HTTP sem erro do servidor. Um erro 503 (service unavailable) resultará em novas tentativas frequentes. Se o robots.txt ficar inacessível por mais de 30 dias, o Google usará a última cópia em cache do robots.txt. Se ela não estiver disponível, o Google presumirá que não há restrições de rastreamento.

Se for possível determinar que um site foi configurado incorretamente de modo a retornar o Código de status 5xx em vez do 404 para páginas ausentes, o erro 5xx desse site será tratado como um Código de status 404 Por exemplo, se a mensagem de erro em uma página que retorna o Código de status 5xx for "Página não encontrada", interpretaremos o Código de status como 404 (not found).

Outros erros Um arquivo robots.txt que não pode ser encontrado devido a problemas de DNS ou de rede, como tempos de espera, respostas inválidas, conexões redefinidas/interrompidas e erros de agrupamento de HTTP, é tratado como um erro de servidor.

Armazenamento em cache

O Google geralmente armazena em cache o conteúdo do arquivo robots.txt por até 24 horas ou por mais tempo em situações em que não é possível fazer a atualização da versão em cache (por exemplo, devido a tempos limite ou erros 5xx). A resposta em cache pode ser compartilhada por diferentes rastreadores. O Google pode aumentar ou diminuir a duração do cache baseado em cabeçalhos HTTP Cache-Control max-age (em inglês).

Formato do arquivo

O arquivo robots.txt precisa ser um arquivo de texto simples codificado em UTF-8. Além disso, as linhas precisam ser separadas por CR, CR/LF ou LF.

O Google ignora linhas inválidas em arquivos robots.txt, incluindo a marca de ordem de byte (BOM, na sigla em inglês) Unicode no início do arquivo robots.txt, e usa apenas linhas válidas. Por exemplo, se o conteúdo transferido for HTML em vez de regras do robots.txt, o Google tentará analisar o conteúdo e extrair as regras, ignorando todo o restante.

Da mesma forma, se a codificação de caracteres do arquivo robots.txt não for UTF-8, o Google poderá ignorar caracteres que não fazem parte do intervalo UTF-8, o que pode tornar as regras do robots.txt inválidas.

Atualmente o Google impõe um limite de tamanho de arquivo robots.txt de 500 kibibytes (KiB). Os conteúdos que ultrapassarem o tamanho máximo do arquivo serão ignorados. Você pode reduzir o tamanho do arquivo robots.txt consolidando as diretivas que resultariam em um arquivo robots.txt muito grande. Por exemplo, coloque o material excluído em um diretório específico.

Sintaxe

As linhas válidas do robots.txt consistem em um campo, dois pontos e um valor. Os espaços são opcionais, mas são recomendados para melhorar a legibilidade. O espaço em branco no início e no final da linha é ignorado. Para incluir comentários, coloque o caractere # no início do seu comentário. Lembre-se de que tudo o que estiver depois do caractere # será ignorado. O formato geral é <field>:<value><#optional-comment>.

O Google é compatível com os seguintes campos:

  • user-agent: identifica a que rastreador as regras se aplicam.
  • allow: é um caminho de URL que pode ser rastreado.
  • disallow: é um caminho de URL que não pode ser rastreado.
  • sitemap: é o URL completo de um sitemap.

Os campos allow e disallow também são chamados de diretivas. Essas diretivas estão sempre especificadas em directive: [path], em que [path] é opcional. Por padrão, não há restrições para os rastreadores designados. Os rastreadores ignoram diretivas sem um [path].

O valor [path], se especificado, é relacionado à raiz do site em que o arquivo robots.txt foi buscado (usando o mesmo protocolo, número de porta, nomes de host e domínio). O valor do caminho precisa começar com / para designar a raiz e diferencia maiúsculas de minúsculas. Saiba mais sobre a correspondência de URLs com base em valores de caminho.

user-agent

A linha user-agent identifica a que rastreador as regras se aplicam. Consulte os rastreadores e strings de user agent do Google para ver uma lista completa de strings de user agent que podem ser usadas no arquivo robots.txt.

O valor da linha user-agent não diferencia maiúsculas e minúsculas.

disallow

A diretiva disallow especifica os caminhos que não podem ser acessados pelos rastreadores identificados na linha de user agent agrupada com a diretiva disallow. Os rastreadores ignoram a diretiva sem caminho.

O valor da diretiva disallow diferencia maiúsculas de minúsculas.

Uso:

disallow: [path]

allow

A diretiva allow especifica os caminhos que podem ser acessados pelos rastreadores designados. Quando nenhum caminho é especificado, a diretiva é ignorada.

O valor da diretiva allow diferencia maiúsculas de minúsculas.

Uso:

allow: [path]

sitemap

O Google, o Bing e outros mecanismos de pesquisa importantes são compatíveis com o campo sitemap no robots.txt, conforme definido pelo sitemaps.org (em inglês).

O valor do campo sitemap diferencia maiúsculas de minúsculas.

Uso:

sitemap: [absoluteURL]

A linha [absoluteURL] aponta para a localização de um sitemap ou arquivo de índice de sitemaps. Ele precisa ser um URL totalmente qualificado, incluindo o protocolo e o host, e não precisa ser codificado para URL. O URL não precisa estar no mesmo host do arquivo robots.txt. É possível especificar vários campos sitemap. O campo do sitemap não está vinculado a user agents específicos e pode ser seguido por todos os rastreadores, contanto que não esteja proibido.

Exemplo:

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

Agrupamento de linhas e regras

É possível agrupar regras que se aplicam a vários user agents ao repetir as linhas user-agent para cada rastreador.

Exemplo:

user-agent: a
disallow: /c

user-agent: b
disallow: /d

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

user-agent: h

Neste exemplo, há quatro grupos de regras distintos:

  • Um grupo para o user agent "a"
  • Um grupo para o user agent "b"
  • Um grupo para os user agents "e" e "f"
  • Um grupo para o user agent "h"

Para ver a descrição técnica de um grupo, consulte a seção 2.1 do protocolo de exclusão de robôs (em inglês).

Ordem de precedência para user agents

Somente um grupo é válido para um determinado rastreador. Os rastreadores do Google determinam o grupo de regras correto, localizando no arquivo robots.txt o grupo com o user agent mais específico que corresponde ao user agent do rastreador. Os outros grupos são ignorados. Todo texto não correspondente é ignorado (por exemplo, googlebot/1.2 e googlebot* são equivalentes a googlebot). A ordem dos grupos no arquivo robots.txt é irrelevante.

Se houver mais de um grupo declarado para um user agent específico, todas as regras dos grupos aplicáveis a ele serão combinadas internamente em um único grupo.

Exemplos

Correspondência de campos user-agent

user-agent: googlebot-news
(group 1)

user-agent: *
(group 2)

user-agent: googlebot
(group 3)

Esta é a forma como os rastreadores escolheriam o grupo relevante:

Grupo seguido por rastreador
Googlebot News O googlebot-news segue o grupo 1, porque ele é o mais específico.
Googlebot (Web) O googlebot segue o grupo 3.
Googlebot Images O googlebot-images segue o grupo 2, porque não há um grupo googlebot-images específico.
Googlebot News (ao rastrear imagens) Ao rastrear imagens, o googlebot-news segue o grupo 1. O googlebot-news não as rastreia para as Imagens do Google, apenas segue o grupo 1.
Otherbot (Web) Os outros rastreadores do Google seguem o grupo 2.
Otherbot (Notícias) Os outros rastreadores do Google que rastreiam conteúdo de notícias, mas não são identificados como googlebot-news, seguem o grupo 2. Mesmo que haja uma entrada para um rastreador relacionado, ela só será válida se for especificamente correspondente.

Agrupamento de regras

Se houver vários grupos em um arquivo robots.txt que sejam relevantes para um user agent específico, os rastreadores do Google combinarão os grupos internamente. Exemplo:

user-agent: googlebot-news
disallow: /fish

user-agent: *
disallow: /carrots

user-agent: googlebot-news
disallow: /shrimp

Os rastreadores agrupam as regras internamente com base no user agent, por exemplo:

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

user-agent: *
disallow: /carrots

Correspondência de URLs com base em valores de caminho

O Google usa o valor do caminho nas diretivas allow e disallow como base para determinar se uma regra se aplica a um URL específico em um site. A regra é comparada ao componente do caminho do URL que o rastreador está tentando buscar. Caracteres ASCII que não contêm sete bits em um caminho podem ser incluídos como caracteres UTF-8 ou como caracteres codificados UTF-8 com porcentagem de escape, de acordo com o RFC 3986 (em inglês).

O Google, o Bing e outros mecanismos de pesquisa importantes são compatíveis com uma forma limitada de caracteres curinga para valores de caminho. Eles são os seguintes:

  • * designa 0 ou mais instâncias de qualquer caractere válido.
  • $ designa o final do URL.
Exemplo de correspondências de caminho
/ Corresponde à raiz e a qualquer URL de nível mais baixo.
/* É equivalente a /. O caractere curinga delimitador é ignorado.
/$ Corresponde somente à raiz. Qualquer URL de nível inferior é permitido para o rastreamento.
/fish

Corresponde a qualquer caminho que comece com /fish.

Correspondências:

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

Sem correspondência:

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

É equivalente a /fish. O caractere curinga delimitador é ignorado.

Correspondências:

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

Sem correspondência:

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

Corresponde a qualquer item na pasta /fish/.

Correspondências:

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

Sem correspondência:

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

Corresponde a qualquer caminho que contenha .php.

Correspondências:

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

Sem correspondência:

  • / (mesmo se mapear para /index.php)
  • /windows.PHP
/*.php$

Corresponde a qualquer caminho que termine com .php.

Correspondências:

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

Sem correspondência:

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

Corresponde a qualquer caminho que contenha /fish e .php, nessa ordem.

Correspondências:

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

Sem correspondência: /Fish.PHP

Ordem de precedência para regras

Ao fazer a correspondência entre as regras do robots.txt e os URLs, os rastreadores usam a regra mais específica baseada no tamanho do caminho. No caso de regras conflitantes, incluindo as com caracteres curingas, o Google usa a regra menos restritiva.

Os exemplos a seguir demonstram qual regra os rastreadores do Google aplicarão a um determinado URL.

Situações de exemplo
http://example.com/page

allow: /p
disallow: /

Regra aplicável: allow: /p, porque ela é mais específica.

http://example.com/folder/page

allow: /folder
disallow: /folder

Regra aplicável: allow: /folder, porque, no caso de regras correspondentes, o Google usa a regra menos restritiva.

http://example.com/page.htm

allow: /page
disallow: /*.htm

Regra aplicável: disallow: /*.htm, porque corresponde a mais caracteres no URL, de modo que é mais específica.

http://example.com/page.php5

allow: /page
disallow: /*.ph

Regra aplicável: allow: /page, porque no caso de regras correspondentes, o Google usa a regra menos restritiva.

http://example.com/

allow: /$
disallow: /

Regra aplicável: allow: /$, porque ela é mais específica.

http://example.com/page.htm

allow: /$
disallow: /

Regra aplicável: disallow: /, porque a regra allow só se aplica ao URL raiz.