A correspondência em robots.txt não segue a regra “a última linha vence”. Quando Allow e Disallow se aplicam à mesma URL, a correspondência mais específica é o principal critério. O RFC 9309 considera mais específica a regra com o caminho correspondente mais longo e recomenda Allow em um empate equivalente.
O Google documenta o mesmo conceito prático e suporta dois caracteres especiais úteis: * e $.
O que * e $ significam
*corresponde a zero ou mais caracteres;$marca o fim da URL.
User-agent: *
Disallow: /*.pdf$
O padrão acima mira caminhos terminados em .pdf. Sem $, o alcance é mais amplo.
Um * no final muitas vezes é desnecessário
Disallow: /private
e:
Disallow: /private*
têm comportamento prático muito parecido no Google. Se a intenção é um diretório, /private/ deixa a regra mais clara.
Correspondência mais longa vence a ordem visual
User-agent: *
Disallow: /products/
Allow: /products/public/
Para /products/public/widget, as duas regras combinam, mas /products/public/ é mais específica e o acesso é permitido. Inverter as linhas não transforma robots.txt em uma cascata “última regra vence”.
Empate entre Allow e Disallow
Quando regras equivalentes entram em conflito, o RFC 9309 recomenda Allow. Ainda assim, é melhor escrever políticas que não dependam de empates difíceis de auditar.
Caminhos diferenciam maiúsculas e minúsculas
Disallow: /Admin/
não precisa ter o mesmo efeito que:
Disallow: /admin/
Teste as variantes reais servidas pela aplicação.
Parâmetros e e-commerce
Regras como:
User-agent: *
Disallow: /*?sort=
podem falhar quando parâmetros aparecem em ordem diferente. Em navegação facetada, combine robots.txt com arquitetura de URL, links internos e canonicalização.
Prefira regras simples
Disallow: /busca-interna/
é mais fácil de manter que padrões complexos. Use curingas apenas quando houver um padrão real que não possa ser expresso por um prefixo estável.
Teste URLs reais
Com:
User-agent: *
Disallow: /reports/
Allow: /reports/public/
Disallow: /*.csv$
avalie pelo menos:
/reports/private/quarterly/reports/public/overview/downloads/data.csv/downloads/data.csv?preview=1/REPORTS/private/quarterly
Isso revela erros de prefixo, maiúsculas, âncora final e sobreposição.
Fluxo recomendado
- Escreva a política em linguagem normal.
- Escolha o prefixo mais simples possível.
- Adicione
*ou$somente se necessário. - Liste URLs que devem ser permitidas e bloqueadas.
- Valide a sintaxe.
- Teste cada URL para o User-agent correto.
- Confira o
/robots.txtpublicado. - Revise logs após a alteração.
A ideia principal é que especificidade importa mais que posição da linha. Use curingas com moderação e teste URLs sempre que várias regras puderem combinar.