Robots.txt: guia completo de configuração para SEO

Como o robots.txt afeta o rastreamento, onde ele não consegue controlar a indexação e como testar diretivas sem bloquear páginas que precisam ser encontradas.

O robots.txt é um arquivo de texto simples na raiz do seu site que indica aos rastreadores de busca quais seções podem visitar e quais devem ignorar. É a primeira coisa que um rastreador lê ao chegar ao seu site. O arquivo existe desde 1994 e continua sendo o padrão de fato para controlar o rastreamento.

O robots.txt é uma recomendação, não um mecanismo de imposição. Bots confiáveis (Googlebot, Yandex) respeitam as diretivas. Rastreadores maliciosos e scrapers ignoram o arquivo por completo. Para proteger dados sensíveis, use controles de acesso no servidor e autenticação — e não o robots.txt.

A principal limitação: uma página bloqueada com Disallow não desaparece do índice automaticamente. Se outros sites apontarem links para ela, o Google pode indexar a URL sem visitá-la — e pode exibir um snippet vazio nos resultados de pesquisa. Para remover uma página do índice por completo, são necessárias outras ferramentas.

Árvore de decisão do Googlebot: o robots.txt controla o rastreamento, e a meta noindex controla a indexação. Combinados, eles produzem quatro resultados distintos.

O que é o robots.txt e suas limitações

O arquivo robots.txt deve ficar na raiz do domínio: https://example.com/robots.txt. Subdomínios têm arquivos próprios: o robots.txt de blog.example.com fica em https://blog.example.com/robots.txt. O Robots Exclusion Standard (REP) define as diretivas principais; o Google e o Yandex ampliaram o padrão com recursos adicionais.

Controle de rastreamento

Impede que os bots visitem determinadas seções — reduz carga desnecessária no servidor e preserva o orçamento de rastreamento para páginas valiosas.

Aponta para o sitemap

A diretiva Sitemap ajuda os buscadores a encontrar o seu sitemap XML de imediato, sem nenhuma configuração adicional.

Não protege conteúdo

O robots.txt é publicamente visível. Ele não criptografa nem oculta o conteúdo das páginas — apenas pede aos bots que não as visitem.

Formato e sintaxe

O arquivo é formado por blocos chamados registros. Cada registro começa com uma ou mais diretivas User-agent e pode conter quantas linhas de Disallow, Allow, Crawl-delay e Sitemap forem necessárias. Os registros são separados por uma linha em branco. Comentários começam com #.

DiretivaSuporteDescrição
User-agentTodosIdentificador do bot. * significa “todos os rastreadores”. Um único bloco pode ter várias linhas User-agent.
DisallowTodosCaminho proibido para rastreamento. Um valor vazio significa “nada é bloqueado” (permitir tudo).
AllowGoogle, YandexPermite explicitamente um caminho dentro de uma seção bloqueada. Tem prioridade sobre o Disallow.
Crawl-delayYandex, BingIntervalo mínimo, em segundos, entre as requisições do bot. Ignorado pelo Google.
SitemapGoogle, Yandex, BingURL absoluta do sitemap XML. Várias linhas Sitemap são permitidas.

Curingas: * e $

Google e Yandex aceitam dois caracteres curinga nos caminhos de Disallow e Allow. O asterisco * corresponde a qualquer sequência de caracteres (inclusive uma string vazia). O cifrão $ marca o fim da URL — uma correspondência exata até o último caractere.

text
# Block all URLs with the ?sort= parameter
Disallow: /*?sort=

# Block only /page (exact match, not /page/child)
Disallow: /page$

# Block all PDFs across the entire site
Disallow: /*.pdf$
Quando Disallow e Allow entram em conflito, vence a regra mais específica (com mais caracteres). Se os tamanhos forem iguais, vence o Allow. Esse comportamento é específico do Google; outros bots podem implementá-lo de outra forma.

A diretiva Sitemap pode ficar em qualquer lugar do arquivo — ela não precisa estar dentro de um bloco User-agent específico. Use sempre uma URL absoluta completa:

text
Sitemap: https://example.com/sitemap.xml
Se você usa um Sitemap Index, uma linha Sitemap apontando para o arquivo de índice basta — não é preciso listar cada sitemap filho. O buscador descobre todos por meio do índice.

Exemplos prontos para diferentes cenários

Cenário 1: site público simples

Para um site pequeno, sem seções privadas, um arquivo mínimo é suficiente: permitir tudo, bloquear o painel administrativo e os caminhos técnicos e declarar o sitemap.

text
# robots.txt for example.com — simple public site
User-agent: *
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/

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

Cenário 2: e-commerce grande, com páginas de catálogo e de parâmetros

Uma loja online gera centenas de milhares de URLs por meio de filtros, ordenação e paginação. A maioria é duplicada ou tem pouco valor próprio. Bloqueie as URLs com parâmetros usando Disallow com curingas e mantenha acessíveis as páginas limpas de categoria e de produto.

text
# robots.txt for e-commerce example.com
User-agent: *

# Technical and admin sections
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart
Disallow: /account/
Disallow: /api/

# Parametric catalogue duplicates
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?page=
Disallow: /*?ref=
Disallow: /search

# Explicitly allow a useful parameter in one section
Allow: /catalog/shoes?size=

Crawl-delay: 1

Sitemap: https://example.com/sitemap.xml
Para páginas com parâmetros e conteúdo exclusivo (por exemplo, um produto com um tamanho ou cor específicos), prefira uma tag canonical a um Disallow — ela preserva o orçamento de rastreamento sem bloquear totalmente a página.

Cenário 3: site com páginas de staging e temporárias

Páginas de landing de webinar, rascunhos, páginas de modelo e seções de staging devem ser bloqueadas para rastreamento. Use Disallow por prefixo de caminho e, se necessário, um bloco separado para bots específicos.

text
# robots.txt for example.com — main site with staging sections
User-agent: *
Disallow: /webinar-drafts/
Disallow: /templates/
Disallow: /staging/
Disallow: /_preview/
Disallow: /thank-you-test

# Block the entire site for a specific bot (e.g. an aggressive crawler)
User-agent: AhrefsBot
Disallow: /

User-agent: SemrushBot
Disallow: /

Sitemap: https://example.com/sitemap.xml
Bloquear uma seção pelo robots.txt não significa que o conteúdo é confidencial. As URLs de páginas de staging ainda podem ser indexadas se sites externos apontarem links para elas. Para um isolamento real, use HTTP Basic Auth ou uma lista de IPs permitidos no nível do servidor.

Disallow, meta robots noindex e X-Robots-Tag

São três ferramentas diferentes, com funções diferentes. Misturá-las leva a um erro clássico: a página está bloqueada no robots.txt e também tem uma meta tag noindex. O Google não consegue ler a meta tag porque a página está bloqueada para rastreamento, então a diretiva noindex nunca é executada.

FerramentaOnde ficaO que fazQuando usar
Disallow no robots.txtrobots.txtImpede que o bot visite a URL. Não remove a URL do índice se ela já estiver lá.Bloquear seções de serviço e reduzir o consumo desnecessário do orçamento de rastreamento.
meta robots noindexHTML <head>Permite que o bot visite a página, mas proíbe sua inclusão no índice. O bot lê a tag e segue a diretiva.Remover uma página específica do índice (páginas de agradecimento, paginação, páginas de filtro).
X-Robots-TagCabeçalho de resposta HTTPEquivalente à meta robots, mas funciona para qualquer tipo de arquivo: PDFs, imagens, documentos.Controlar a indexação de recursos que não são HTML (PDF, DOCX, imagens).
Nunca combine Disallow e noindex na mesma página. Se a página estiver bloqueada no robots.txt, o Google não consegue ler o noindex dela — e pode manter a URL no índice com um snippet vazio. Use o noindex apenas em páginas que o rastreador tem permissão para visitar.

Exemplo de X-Robots-Tag em um cabeçalho de resposta HTTP (configurado no Nginx ou no código da aplicação):

text
# Nginx: prevent indexation of all PDFs
location ~* \.pdf$ {
    add_header X-Robots-Tag "noindex, nofollow";
}

Como testar o robots.txt

Sempre valide as alterações antes de publicar. Um único erro de digitação pode bloquear o site inteiro para os rastreadores.

  • Google Search Console → Testador de robots.txt: integrado ao GSC. Informe uma URL para verificar se o Googlebot e os demais bots do Google têm permissão ou estão bloqueados.
  • Yandex Webmaster → Análise do robots.txt: a ferramenta equivalente para o Yandex. Mostra como o bot do Yandex interpreta o seu arquivo.
  • Screaming Frog SEO Spider → Configuration → Robots.txt: rastreia o site respeitando o robots.txt e lista as URLs bloqueadas no relatório.
  • curl: verificação rápida pela linha de comando para ler o arquivo e conferir o status HTTP.
Exemplo de robots.txt aplicando as recomendações acima:
bash
# Fetch robots.txt and inspect its contents
curl -s https://example.com/robots.txt

# Check HTTP status (must be 200)
curl -I https://example.com/robots.txt

Erros comuns e como corrigi-los

ErroSintomaCorreção
Disallow: / para o site inteiroO Googlebot para de rastrear tudo. O GSC mostra as páginas como “bloqueadas pelo robots.txt”.Remova a linha ou substitua por um caminho específico. Isso costuma entrar sem querer durante as publicações.
Espaço acidental no caminhoDisallow: /admin / (com espaço) — o bot lê o caminho literalmente e nada fica bloqueado.Remova os espaços. Os caminhos diferenciam maiúsculas de minúsculas e são sensíveis a espaços.
noindex + Disallow na mesma páginaA página continua no índice; a diretiva noindex nunca é executada.Remova o Disallow e mantenha só o noindex. O bot precisa conseguir visitar a página para ler a tag.
User-agent ausente antes das regrasErro de sintaxe: as regras não se aplicam a nenhum bot.Adicione User-agent: * antes do bloco de Disallow/Allow.
robots.txt retorna 404 ou 500O 404 é tratado como “sem restrições”; o 500 interrompe o rastreamento temporariamente.Garanta o HTTP 200. Um arquivo vazio equivale a “permitir tudo”.

Recomendações de segurança

O robots.txt é público e indexado pelos buscadores — qualquer pessoa pode lê-lo. Publicar no robots.txt caminhos para painéis administrativos, backups, APIs internas ou arquivos de configuração equivale a entregar a um atacante um mapa do seu site.

Não confie no robots.txt como única proteção de seções sensíveis. Um caminho como Disallow: /internal-api/v2/keys/ indica ao atacante exatamente onde procurar.
  • Não exponha caminhos sensíveis — backups (.zip, .sql), arquivos de configuração (.env, config.php), APIs internas.
  • Proteja seções confidenciais no nível do servidor — HTTP Basic Auth, lista de IPs permitidos, OAuth — e não pelo robots.txt.
  • Mantenha a lista de Disallow mínima — apenas caminhos que realmente precisam ficar fora do rastreamento por motivos de SEO.
  • Revise o robots.txt no GSC regularmente — confira se as publicações não introduziram um Disallow: / por engano.

Checklist e exemplo final

  • O arquivo está acessível em https://example.com/robots.txt e retorna HTTP 200
  • Codificação UTF-8, sem BOM (Byte Order Mark)
  • Cada bloco começa com User-agent
  • Uma linha em branco separa os blocos de User-agent diferentes
  • Nenhuma combinação de Disallow + noindex na mesma página
  • Nenhum caminho sensível exposto publicamente
  • Crawl-delay configurado para o Yandex se a carga no servidor for alta
  • A diretiva Sitemap aponta para o arquivo de índice raiz
  • Arquivo validado no GSC e no Yandex Webmaster
  • O Screaming Frog mostra o número esperado de URLs bloqueadas

Exemplo final de robots.txt para example.com, com comentários — um modelo universal que cobre a maioria dos cenários:

text
# robots.txt for example.com
# Updated: 2026-05-15

# Rules for all crawlers
User-agent: *

# Admin and auth sections
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Disallow: /account/

# Technical paths
Disallow: /api/
Disallow: /_next/
Disallow: /cdn-cgi/

# Parametric duplicates (e-commerce)
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?ref=
Disallow: /search

# Staging and temporary pages
Disallow: /staging/
Disallow: /webinar-drafts/
Disallow: /templates/

# Explicit allow for a useful API path
Allow: /api/og-image/

# Crawl rate for Yandex
User-agent: Yandex
Crawl-delay: 1

# Aggressive SEO bots (optional)
User-agent: AhrefsBot
Disallow: /

User-agent: SemrushBot
Disallow: /

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

FAQ

O robots.txt afeta o ranqueamento?
Indiretamente. O arquivo em si não é um sinal de ranqueamento, mas bloquear páginas com Disallow reduz o rastreamento dessas páginas. Se você bloquear páginas importantes, elas perderão visibilidade. Se bloquear URLs duplicadas com parâmetros, libera orçamento de rastreamento para páginas valiosas.
O que acontece se o robots.txt retornar 404?
O Google trata a ausência do robots.txt (404) como “sem restrições” e rastreia o site inteiro. Um erro 500 ou um timeout é tratado como bloqueio temporário — o Google pausa o rastreamento até que o arquivo seja restaurado.
Posso definir regras diferentes para o Googlebot e o Yandex em um único arquivo?
Sim. Crie dois blocos User-agent separados. O Googlebot lê apenas o próprio bloco, e o Yandex lê apenas o dele. O bloco User-agent: * se aplica a todos os bots que não têm um bloco dedicado.
Disallow: / bloqueia o site inteiro — como corrigir rapidamente?
Substitua ou remova a linha Disallow: / no bloco User-agent: *. Depois da publicação, verifique no GSC, em Inspeção de URL. O rastreamento normal é retomado em alguns dias após a correção.
Como bloquear um único arquivo, mas não o diretório dele?
Use um caminho exato, sem barra no final: Disallow: /private-doc.pdf. Para bloquear uma extensão de arquivo em todo o site, use um curinga: Disallow: /*.pdf$

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it