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) nem a rastreadores usados para aumentar a segurança do usuário (por exemplo, análise de malware).

Esta página descreve como o Google interpreta o REP. Para acessar o protocolo original, consulte a RFC 9309 (em inglês).

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. O robots.txt é um arquivo de texto simples que contém regras sobre quais rastreadores podem acessar determinadas partes de um site. Por exemplo, confira o arquivo robots.txt de example.com:

# This robots.txt file controls crawling of URLs under https://example.com.
# All crawlers are disallowed to crawl files in the "includes" directory, such
# as .css, .js, but Google needs them for rendering, so Googlebot is allowed
# to crawl them.
User-agent: *
Disallow: /includes/

User-agent: Googlebot
Allow: /includes/

Sitemap: https://example.com/sitemap.xml

Caso você não saiba muito sobre robots.txt, leia nossa introdução ao robots.txt. Confira também dicas para criar um arquivo robots.txt.

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. O URL do arquivo robots.txt diferencia maiúsculas e minúsculas, assim como outros URLs. 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, eles 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

A tabela a seguir mostra exemplos de URLs de robots.txt e indica para quais caminhos de URL eles são válidos. A primeira coluna tem o URL de um arquivo robots.txt, e a segunda, os domínios aos quais esse arquivo se aplica ou não.

Exemplos de URLs robots.txt
https://example.com/robots.txt

Este é o caso geral. Não é válido para outros subdomínios, protocolos nem números de porta. É válido para todos os arquivos em todos os subdiretórios no mesmo host, protocolo e número de porta.

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

Um robots.txt em um subdomínio é válido somente para esse subdomínio.

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

Inválido para:

  • https://example.com/
  • https://shop.www.example.com/
  • https://www.shop.example.com/
https://example.com/folder/robots.txt Não é um arquivo robots.txt válido. Os rastreadores não conferem arquivos robots.txt em subdiretórios.
https://www.exämple.com/robots.txt

Os IDNs equivalem às próprias versões punycode. Confira também RFC 3492 (em inglês).

Válido para:
  • https://www.exämple.com/
  • https://xn--exmple-cua.com/

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

ftp://example.com/robots.txt

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

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

https://212.96.82.21/robots.txt

Os arquivos robots.txt com um endereço IP como o nome de host são válido apenas para o rastreamento desse endereço. Isso significa que ele automaticamente não é válido para todos os sites hospedados nesse endereço IP, embora seja possível compartilhar o arquivo robots.txt. Nesse caso, ele também estaria disponível no nome de host compartilhado.

Válido para: https://212.96.82.21/

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

https://example.com:443/robots.txt

Os números de porta padrão (80 para HTTP, 443 para HTTPS e 21 para FTP) são equivalentes aos nomes de host padrão deles.

Válido para:

  • https://example.com:443/
  • https://example.com/

Inválido para: https://example.com:444/

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

Arquivos robots.txt em números de porta não padrão são válidos somente para conteúdo disponibilizado usando esses números de porta.

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

Inválido para: https://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 esse arquivo vai ser usado pelos rastreadores do Google. A tabela a seguir resume como o Googlebot trata arquivos robots.txt com diferentes códigos de status HTTP.

Como lidar com erros e códigos de status HTTP
2xx (success) Os códigos de status HTTP que sinalizam sucesso solicitam aos rastreadores do Google o processamento do arquivo robots.txt disponibilizado pelo servidor.
3xx (redirection)

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 (client errors)

Os rastreadores do Google tratam todos os erros 4xx, exceto 429, como se não houvesse um arquivo robots.txt válido. Isso significa que o Google presume que não há restrições de rastreamento.

5xx (server errors)

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

Caso precise suspender temporariamente o rastreamento, recomendamos exibir um código de status HTTP 503 para cada URL do site.

Se conseguirmos determinar que um site foi configurado incorretamente para retornar o código de status 5xx em vez do 404 no caso de páginas ausentes, o erro 5xx desse site vai 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", vamos interpretar esse código 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 vai 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 vai 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 vão ser ignorados. Você pode reduzir o tamanho do arquivo robots.txt consolidando as regras 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 # vai ser ignorado. O formato geral é <field>:<value><#optional-comment>.

O Google é compatível com os seguintes campos (outros campos, como crawl-delay, não são compatíveis):

  • 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 regras (conhecidas como diretivas). Essas regras estão sempre especificadas em rule: [path], em que [path] é opcional. Por padrão, não há restrições para os rastreadores designados. Os rastreadores ignoram regras 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 conferir 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 regra disallow especifica os caminhos que não podem ser acessados pelos rastreadores identificados na linha de user-agent agrupada com a regra disallow. Os rastreadores ignoram a regra sem caminho.

O Google não pode indexar o conteúdo das páginas que ele não tem permissão para rastrear, mas ainda é possível indexar o URL e exibir nos resultados da pesquisa sem um snippet. Saiba como bloquear a indexação.

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

Uso:

disallow: [path]

allow

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

O valor da regra 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 vai poder 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 conferir 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 específico declarado para um user agent, todas as regras dos grupos aplicáveis a ele vão ser combinadas internamente em um único grupo. Os grupos específicos de user agents e os grupos globais (*) não são combinados.

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 StoreBot O Storebot-Google segue o grupo 2, porque não há um grupo Storebot-Google 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ó vai ser válida se corresponder de modo específico.

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 vão combinar 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

Regras diferentes de allow, disallow e user-agent são ignoradas pelo analisador robots.txt. Isso significa que o snippet do robots.txt a seguir é tratado como um grupo. Portanto, user-agent a e b são afetados pela regra disallow: /:

user-agent: a
sitemap: https://example.com/sitemap.xml

user-agent: b
disallow: /

Quando os rastreadores processam as regras do robots.txt, eles ignoram a linha sitemap. Por exemplo, os rastreadores entendem o snippet anterior do robots.txt da seguinte forma:

user-agent: a
user-agent: b
disallow: /

Correspondência de URLs com base em valores de caminho

O Google usa o valor do caminho nas regras 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 a 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:

  • * designa 0 ou mais instâncias de qualquer caractere válido.
  • $ designa o final do URL.

A tabela a seguir mostra como os diferentes caracteres curinga afetam a análise:

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. Essa correspondência diferencia maiúsculas de minúsculas.

Com correspondência:

  • /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.

Com correspondência:

  • /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/

Corresponde a qualquer item na pasta /fish/.

Com correspondência:

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

Sem correspondência:

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

Corresponde a qualquer caminho que contenha .php.

Com correspondência:

  • /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.

Com correspondência:

  • /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.

Com correspondência:

  • /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 vão aplicar a um determinado URL.

Situações de exemplo
https://example.com/page
allow: /p
disallow: /

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

https://example.com/folder/page
allow: /folder
disallow: /folder

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

https://example.com/page.htm
allow: /page
disallow: /*.htm

Regra aplicável: disallow: /*.htm, porque o caminho da regra é mais longo e corresponde a mais caracteres no URL, por isso é mais específico.

https://example.com/page.php5
allow: /page
disallow: /*.ph

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

https://example.com/
allow: /$
disallow: /

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

https://example.com/page.htm
allow: /$
disallow: /

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