Ir para o conteúdo
OneKitly

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

Daniel OkonkwoProgramador front-end e redator de Tecnologia na OneKitly

Desempenho web · Formatos de ficheiro

Verificado a partir de 2 fontes

Ver perfil
Em resumo

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.

As linhas que pode pôr num robots.txt e as duas que as pessoas escrevem mesmo assim
LinhaO que fazEstadoA armadilha
User-agent: *Abre um grupo e nomeia os rastreadores visados; * visa qualquer rastreador sem grupo próprioHonradaUm 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: /pathPede aos rastreadores deste grupo que não descarreguem URL cujo caminho comece por esse prefixoHonradaBloqueia 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/fileRecorta uma exceção dentro de um Disallow mais amplo do mesmo grupoHonradaSó 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.xmlAponta os rastreadores para um mapa do site; pode aparecer em qualquer parte do ficheiro e não pertence a nenhum grupoHonradaO valor tem de ser um URL absoluto completo, esquema incluído; um caminho relativo é descartado em silêncio
Crawl-delay: 10Pede a um rastreador que espere entre pedidos; extensão de fabricante, nunca parte do protocoloIgnorada pelo GoogleAlguns rastreadores respeitam-na e outros não, pelo que não serve para controlar a carga; limite o ritmo no servidor
Noindex: /pathNada. Parece que deveria retirar uma página do índice e não o fazNão suportadaUse 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
Gerador de robots.txtCria um robots.txt correto a partir de campos estruturados: o rastreador alvo, os caminhos a permitir e bloquear, uma ou mais sitemaps (os caminhos relativos tornam-se absolutos), e linhas opcionais crawl-delay e host. Gere como os motores rastreiam o teu site — lembra que é uma diretiva de rastreio, não uma barreira de segurança.Experimentar a ferramenta

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
GuiaCódigos de estado HTTP explicados: os que realmente se confundem301 contra 308, 302 contra 307, 401 contra 403, 404 contra 410 — e o que promete realmente o Retry-After num 429 ou num 503. Os pares em que escolher o código errado muda o comportamento, não apenas a redação.TutorialComo escrever uma expressão cron: cinco campos e a regra OU que ninguém mencionaMinuto, hora, dia do mês, mês, dia da semana. As armadilhas: um passo é um avanço dentro de um intervalo e não um período, e os dois campos de dia combinam-se com OU — pelo que 0 0 1 * 1 dispara no dia 1 e em todas as segundas-feiras.ExplicaçãoComo funcionam as permissões de ficheiro em Unix: ler 755 sem adivinharLeitura 4, escrita 2, execução 1, e cada um dos três dígitos descreve uma parte diferente. O que quase todas as explicações erram é o que o bit de execução faz num diretório: concede a passagem, não o direito de executar seja o que for.GuiaO que faz um bom slug de URL: estabilidade, legibilidade e o conflito entre as duasUm slug tem duas funções que puxam em sentidos opostos: é um identificador permanente e é um texto legível. Comprimento, hífenes, palavras vazias, datas, caracteres não ASCII e o padrão identificador + slug que consegue ambas as propriedades — com os números reais de um site que localiza 1736 slugs de ferramentas em seis línguas.GuiaEtiquetas title, meta descrições, e o que os motores fazem com elasO que a própria documentação da Google diz sobre reescrever títulos e sobre a meta descrição, em vez do que diz o folclore de SEO. Depois a parte mensurável: os títulos são truncados por largura em píxeis, pelo que dois títulos de exatamente sessenta caracteres podem ser desenhados com 204,55 píxeis de diferença e só um sobrevive.ExplicaçãoA densidade de palavras-chave é uma métrica morta, e eis o que a substituiuA densidade contava ocorrências porque a recuperação contava ocorrências. TF-IDF, depois BM25 com a sua curva de saturação, depois os embeddings substituíram-na. Eis a mesma página de 800 palavras pontuada de três formas, e porque é que as três divergem.

Ferramentas relacionadas

Fontes

Detetaste um erro neste artigo?