Como escrever um robots.txt: diretivas, correspondência e o que não consegue esconder
Publicado a 21/05/2026 · 9 min de leitura · Ferramentas para programadores
Daniel Okonkwo — Programador front-end e redator de Tecnologia na OneKitly
Desempenho web · Formatos de ficheiro
Verificado a partir de 2 fontes
Um robots.txt é um ficheiro de texto UTF-8 simples que tem de estar no caminho de topo de um host, em /robots.txt em minúsculas, e aplica-se apenas a esse host, protocolo e porta exatos — https e http, e cada subdomínio, precisam cada um do seu. Contém grupos. Um grupo começa com uma ou mais linhas User-agent que nomeiam os rastreadores visados, com * para todos, e prossegue com linhas Disallow e Allow cujos valores são prefixos de caminho de URL. Uma linha Sitemap dá o URL absoluto de um mapa do site e é independente de qualquer grupo. O Google honra apenas user-agent, disallow, allow e sitemap, e ignora qualquer outro campo. Nos caminhos são aceites dois caracteres especiais: * corresponde a zero ou mais caracteres quaisquer e $ ancora o fim do URL. Quando várias regras correspondem, ganha a mais específica, medida pelo comprimento do caminho da regra em octetos; com igual especificidade ganha a menos restritiva, pelo que um Allow bate um Disallow do mesmo comprimento. O ponto crucial é o que o ficheiro não é. É uma instrução de rastreio, não um controlo de acesso nem um mecanismo de desindexação. Um URL proibido pode continuar a aparecer nos resultados se outros sites lhe apontarem, porque a ligação e o seu texto âncora bastam para indexar o endereço sem descarregar a página. Uma linha noindex no robots.txt não é suportada e não faz nada. E o ficheiro é público por definição: cada caminho que proíbe é um caminho que anunciou.
Quatro diretivas, dois caracteres universais, um ficheiro na raiz do host. É uma instrução de rastreio e nada mais: não retira uma página dos resultados, não restringe o acesso e publica cada caminho que nele enumera.
Uma instrução de rastreio, nem uma fechadura nem uma borracha
O Google di-lo sem rodeios: o robots.txt não é um mecanismo para manter uma página fora do Google, e uma página proibida no robots.txt pode continuar a ser indexada se outros sites lhe apontarem. O mecanismo vê-se com facilidade depois de enunciado. O Disallow pede a um rastreador bem-comportado que não descarregue o URL. Não diz nada sobre se o endereço pode aparecer num índice, e uma ligação de outro site fornece o suficiente — o próprio URL, mais o texto âncora que lhe aponta — para listar a página sem nunca a descarregar. O resultado é o conhecido resultado de pesquisa com um URL nu, sem título retirado da página nem descrição, exatamente onde o dono do site julgava tê-la removido.
As ferramentas certas dependem do que quer de facto. Para manter uma página fora dos resultados, sirva um noindex — ou uma etiqueta meta robots no cabeçalho do documento, ou um cabeçalho de resposta X-Robots-Tag, que funciona também para ficheiros sem cabeçalho HTML, como os PDF. Para subtrair um conteúdo a toda a gente, ponha-o atrás de autenticação; nada de declarativo num ficheiro de texto público alguma vez restringiu o acesso, e a RFC 9309 di-lo às claras ao chamar ao protocolo um não substituto de medidas reais de segurança. E há uma armadilha de ordem para quem combina as duas: se proibir um URL, o rastreador nunca o descarregará, nunca verá o noindex que lhe acrescentou, e a página pode persistir indefinidamente no índice. Deixe-a rastreável até desaparecer e proíba-a depois, se ainda quiser.
Como funciona a correspondência: prefixos, dois caracteres universais e a regra mais longa
Cada valor de Disallow e Allow é comparado como prefixo do caminho do URL, pelo que Disallow: /admin bloqueia por igual /admin, /admin/, /administrator e /admin-tools. Acrescentar uma barra final estreita ao diretório. Dois caracteres especiais afinam isto: * representa zero ou mais caracteres quaisquer e $ ancora o fim do URL, de modo que Disallow: /*.pdf$ bloqueia todo o URL terminado em .pdf e deixa acessível /report.pdf?download=1, porque a cadeia de consulta vem depois da âncora. Um carácter universal no fim não acrescenta nada: /* é a mesma regra que /. Os caminhos distinguem maiúsculas, pelo que /Admin e /admin são duas regras distintas, embora os nomes das diretivas não distingam.
Quando mais do que uma regra corresponde a um URL, ganha a mais específica, e aqui especificidade não significa nada mais sofisticado do que o comprimento do caminho da regra em octetos. Disallow: /reports/ e Allow: /reports/public/ correspondem ambos a /reports/public/q3.html; o Allow é mais longo, logo o ficheiro é rastreável. Inverta os comprimentos e ganha o Disallow. Se duas regras correspondentes tiverem exatamente o mesmo comprimento, o empate vai para a menos restritiva, ou seja o Allow. A ordem no ficheiro é irrelevante — um Disallow escrito depois de um Allow não o anula, e só isto explica boa parte dos robots.txt que não se comportam como o seu autor os lê. Mais dois limites a conhecer: o Google lê no máximo 500 kibibytes e ignora tudo o que vem depois, e um valor Disallow vazio significa que nada é bloqueado, a forma idiomática de escrever um grupo que permite tudo.
Onde vive o ficheiro e porque anuncia o que queria esconder
A regra de localização é absoluta e não se configura. A RFC 9309 exige que as regras sejam acessíveis num ficheiro chamado /robots.txt, tudo em minúsculas, no caminho de topo do serviço, e o Google acrescenta que se aplicam apenas ao host, protocolo e porta onde o ficheiro está alojado. Leia com atenção, porque as consequências fazem tropeçar sem parar. Um ficheiro em https://example.com/robots.txt não governa nada em http://example.com, nada em https://shop.example.com e nada em https://example.com:8443 — cada um desses endereços é uma origem distinta que precisa do seu próprio ficheiro. Um ficheiro colocado num subdiretório não é lido de todo. E um site atrás de um CDN ou de um proxy inverso vale o que valer o seu encaminhamento: se a plataforma servir o seu próprio robots.txt na raiz, o seu, do lado da aplicação, nunca chega a correr.
Agora a parte sem rodeios. O ficheiro é servido a quem o pedir, não tem autenticação e é de longe a primeira coisa que um scanner automatizado lê. Escrever Disallow: /internal/backup-2019/ não esconde esse diretório: publica a sua existência, o seu caminho exato e o facto de o ter considerado digno de esconder, num documento que convidou a internet inteira a ler. Todas as ferramentas de reconhecimento alguma vez escritas começam aí, exatamente por isso. Se um caminho não pode ser alcançado, ponha-o atrás de autenticação ou tire-o do host público; se apenas não deve ser rastreado, proíba um prefixo pai largo em vez de nomear a folha sensível. E trate o ficheiro como código: guarde-o em controlo de versões, reveja as alterações como qualquer outra implantação e verifique-o após cada migração de plataforma, porque um Disallow: / perdido que chega a produção é a forma mais rápida de retirar um site inteiro da pesquisa e uma das mais lentas de recuperar.
| Linha | O que faz | Estado | A armadilha |
|---|---|---|---|
| User-agent: * | Abre um grupo e nomeia os rastreadores visados; * visa qualquer rastreador sem grupo próprio | Honrada | Um rastreador obedece a exatamente um grupo — o mais específico que o nomeia — e ignora por completo o grupo * assim que tem o seu |
| Disallow: /path | Pede aos rastreadores deste grupo que não descarreguem URL cujo caminho comece por esse prefixo | Honrada | Bloqueia a descarga, não a indexação — um URL bloqueado e ligado a partir de fora pode continuar listado nos resultados, sem excerto |
| Allow: /path/file | Recorta uma exceção dentro de um Disallow mais amplo do mesmo grupo | Honrada | Só ganha se o seu caminho for mais longo do que o Disallow que enfrenta; com igual comprimento ganha o Allow, mais curto perde |
| Sitemap: https://…/sitemap.xml | Aponta os rastreadores para um mapa do site; pode aparecer em qualquer parte do ficheiro e não pertence a nenhum grupo | Honrada | O valor tem de ser um URL absoluto completo, esquema incluído; um caminho relativo é descartado em silêncio |
| Crawl-delay: 10 | Pede a um rastreador que espere entre pedidos; extensão de fabricante, nunca parte do protocolo | Ignorada pelo Google | Alguns rastreadores respeitam-na e outros não, pelo que não serve para controlar a carga; limite o ritmo no servidor |
| Noindex: /path | Nada. Parece que deveria retirar uma página do índice e não o faz | Não suportada | Use uma etiqueta meta robots noindex no cabeçalho da página, ou um cabeçalho de resposta X-Robots-Tag, e deixe o URL rastreável para que a regra possa ser lida |
Perguntas frequentes
- Posso usar o robots.txt para manter uma página privada fora do Google?
- Não, em ambos os sentidos. O Google diz às claras que o robots.txt não é um mecanismo para manter uma página fora do Google, e um URL proibido ligado a partir de qualquer outro site pode continuar listado usando apenas a ligação e o seu texto âncora. Nem a página é privada em qualquer sentido real: o robots.txt é só um pedido, respeitado pelos motores de busca e ignorado por tudo o que tenha interesse em ignorá-lo, e o próprio ficheiro difunde o caminho. Para visibilidade na pesquisa use um noindex, servido como etiqueta meta robots ou como cabeçalho X-Robots-Tag. Para privacidade a sério use autenticação. São dois problemas distintos e o robots.txt não resolve nenhum.
- Os subdomínios e http versus https partilham um só robots.txt?
- Não. As regras aplicam-se apenas ao host, protocolo e porta exatos que serviram o ficheiro, pelo que https://example.com, http://example.com, https://www.example.com e https://api.example.com são quatro âmbitos distintos que precisam de quatro ficheiros distintos — mesmo que resolvam para o mesmo servidor e a mesma raiz de documentos. É o segundo erro de configuração mais comum, a seguir a colocar o ficheiro num subdiretório, onde nunca é lido. Consequência prática: se redirecionar http para https, o rastreador segue o redirecionamento para descarregar o ficheiro, pelo que a cópia https governa ambos de facto; se não redirecionar, a origem http não tem regras e é rastreada livremente.
- Proibi uma página mas ela continua nos resultados. E agora?
- É o comportamento esperado, e a correção é inverter a ordem das operações. Retire o Disallow para a página voltar a ser rastreável, acrescente um noindex — etiqueta meta robots ou cabeçalho X-Robots-Tag — e espere que a página seja de novo rastreada e retirada. A abordagem original falhou por circularidade: enquanto o URL está proibido o rastreador nunca o descarrega, logo nunca vê o noindex que lá pôs, e a listagem construída a partir de ligações de entrada persiste indefinidamente. Depois de a página sair do índice, pode repor o Disallow para poupar orçamento de rastreio, embora nessa altura isso costume render muito pouco.
Artigos que podem interessar-lhe
Todos os guias →Ferramentas relacionadas
Fontes
Detetaste um erro neste artigo?