Como escrever um ficheiro robots.txt que realmente funcione

O robots.txt e um dos ficheiros mais mal compreendidos na web. Aprenda a sintaxe correta, os erros comuns, o que os motores de busca respeitam e o que ignoram.

O que o robots.txt faz (e nao faz)

O robots.txt e um ficheiro de texto colocado na raiz do seu website (https://exemplo.com/robots.txt) que indica aos crawlers dos motores de busca quais as paginas ou diretorias que devem ou nao visitar.

E um protocolo de cortesia, nao uma medida de seguranca. Limitacoes fundamentais:

  • O robots.txt so se aplica aos crawlers que escolhem respeit-lo (todos os principais motores de busca o fazem; os scrapers maliciosos nao)
  • Bloquear um URL no robots.txt nao impede a Google de o indexar se outros sites ligarem a ele, a Google pode indexar um URL que nunca rastreou, com base em sinais de outras paginas
  • Nao protege conteudo privado, use autenticacao para isso
  • Os erros de sintaxe quebram as regras silenciosamente; um unico caracter mal colocado pode bloquear todo o site

A sintaxe basica

Um ficheiro robots.txt consiste em registos, cada um especificando um agente de utilizador e diretivas:

User-agent: *
Disallow: /privado/
Allow: /publico/

User-agent: Googlebot
Disallow: /staging/

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

User-agent:, a qual crawler se aplicam as diretivas seguintes. * significa todos os crawlers.

Disallow:, caminhos que o crawler nao deve visitar. Um Disallow: vazio significa "nao proibir nada" (permitir tudo).

Allow:, permite explicitamente um caminho que de outra forma seria bloqueado por uma regra Disallow: mais abrangente.

Sitemap:, opcional, indica aos crawlers onde encontrar o sitemap XML.

Regras importantes

A correspondencia de caminhos e baseada em prefixo

Disallow: /privado/ bloqueia qualquer URL que comece por /privado/, incluindo /privado/pagina.html, /privado/imagens/, etc.

Disallow: /pagina.html bloqueia apenas esse caminho exato.

Disallow: / bloqueia todo o site (todos os URLs que comecam por /, ou seja, todos). Esta e a sintaxe correta para bloquear todos os crawlers, mas aplica-se a tudo.

Multiplos agentes de utilizador, um bloco

Pode agrupar varios agentes de utilizador antes de um bloco de diretivas:

User-agent: Googlebot
User-agent: Bingbot
Disallow: /staging/

Cada linha aplica-se a todos os agentes de utilizador listados acima ate as linhas Disallow: ou Allow:.

Wildcards

* num caminho Disallow: corresponde a qualquer sequencia de caracteres:

  • Disallow: /*.pdf$, bloqueia todos os PDFs ($ ancora o fim do URL)
  • Disallow: /pesquisa?, bloqueia todos os URLs de resultados de pesquisa
  • Disallow: /*?, bloqueia todos os URLs com uma string de consulta (cuidado)

Os wildcards em User-agent so suportam * para "todos os crawlers", nao e possivel usar correspondencias parciais como Google*.

Erros comuns

Bloquear CSS e JavaScript

Disallow: /assets/

Se os seus ficheiros CSS e JavaScript estiverem em /assets/, bloquea-los impede o Googlebot de renderizar corretamente a sua pagina. A Google renderiza paginas como um browser e precisa de acesso aos seus assets para ver a pagina como os utilizadores a veem.

Confundir Disallow: com noindex

Disallow: para o rastreamento. noindex (num cabecalho HTTP ou meta tag) para a indexacao. Sao diferentes:

  • Uma pagina bloqueada pelo robots.txt ainda pode ser indexada com base em sinais de outras paginas
  • Para evitar tanto o rastreamento como a indexacao: use noindex (nao bloqueie o rastreamento, ou a Google nao consegue ver a diretiva noindex)
  • Para evitar a indexacao de uma pagina rastreavel: adicione <meta name="robots" content="noindex"> a pagina

Disallow vazio = permitir tudo

User-agent: *
Disallow:

Isto significa "nao proibir nada", permite a todos os crawlers aceder a tudo. E valido e frequentemente usado como marcador de posicao para indicar aos crawlers que sao bem-vindos.

Sensibilidade a maiusculas/minusculas

Os URLs no robots.txt sao sensiveis a maiusculas/minusculas. Disallow: /Privado/ nao bloqueia /privado/.

Um robots.txt minimo e correto

Para um website padrao sem paginas a esconder:

User-agent: *
Disallow:

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

Isto permite explicitamente todos os crawlers e aponta-os para o sitemap.

Validar o robots.txt

Use o Testador de robots.txt do Google Search Console (em Definicoes) para validar o ficheiro e testar como os URLs especificos sao tratados. O Gerador de robots.txt deste site cria um robots.txt valido a partir de uma interface de formulario, tratando a sintaxe correta por si.

Resumo

O robots.txt usa as diretivas User-agent:, Disallow: e Allow: para orientar (nao impor) o comportamento dos crawlers. Os erros comuns incluem bloquear assets, confundir disallow com noindex e usar caminhos com wildcards incorretamente. Valide sempre antes de publicar, um unico erro de sintaxe pode bloquear acidentalmente todo o site de ser rastreado.