Robots.txt

O que o robots.txt realmente faz — ele controla o rastreamento, não a indexação — além da sintaxe exata, de como o Google o trata internamente e dos erros que quebram sites.

Publicado pela primeira vez: 23 de jun. de 2026 · Última atualização: 21 de ago. de 2026 · Avançado
Idiomas
1 sinal de evidência nesta página

Robots.txt é um arquivo de texto simples na raiz de cada host que informa aos rastreadores quais URLs eles podem ou não solicitar. O ponto essencial: ele controla o rastreamento, não a indexação. Uma URL proibida ainda pode ser indexada sem snippet se estiver vinculada de outro lugar — para manter uma página fora do índice, usar noindex, e a página NÃO pode ser bloqueada no robots.txt ou o Google nunca verá o noindex. O Google aceita apenas user-agent, allow, disallow e sitemap (noindex, nofollow e rastrear-delay foram removidos em 1º de setembro de 2019). O arquivo fica em /robots.txt, é limitado a um host+protocolo+porta, tem limite de 500 KiB, fica em cache por cerca de 24 horas, e um 4xx significa que não há restrições, enquanto um 5xx pode interromper o rastreamento em todo o site. Não bloqueie CSS/JS essenciais para a renderização e não usar o arquivo para esconder nada — ele é público.

TL;DR — Robots.txt é a arquivo de texto simples em o raiz de cada host (/robots.txt, lowercase) isso implements o Robots Exclusion Protocol (RFC 9309). isso controla rastreamento, não indexação — a proibido URL pode ainda ser indexado sem a snippet se linked elsewhere; para deindex usar noindex em a página isso é não bloqueado. Google oferece suporte a apenas user-agent, allow, disallow, e sitemap; noindex/nofollow/crawl-delay foram dropped Sept 1, 2019. escopo é um host+protocolo+port. Matching usa o mais-específico (longest) regra, menos-restrictive em ties; * e $ são o wildcards; paths são caso-sensitive. Google caps o arquivo em 500 KiB, caches ~24h, trata 4xx (except 429) como não-restrictions, e em a 5xx stalls rastreamento para ~12h então falls de volta para o último bom copy para ~30 dias. Não bloquear renderizar-critical CSS/JS, e não treat isso como access controlar — o arquivo é público.

O que isso é e onde isso fica

Robots.txt implements o Robots Exclusion Protocol, created por Martijn Koster em 1994 e finally standardized em 2022 como RFC 9309 — co-authored por Google’s Gary Illyes, Henner Zeller, Lizzi Sassman, e Koster himself. o standard’s own wording: “This document specifies and extends the ‘Robots Exclusion Protocol’ method originally defined by Martijn Koster in 1994 for service owners to control how content served by their services may be accessed, if at all, by automatic clients known as crawlers.” (tradução) “isto document specifies e extends o ‘Robots Exclusion Protocol’ método originally defined por Martijn Koster em 1994 para service owners para controlar como conteúdo served por seu services may ser accessed, se em todos, por automático clients conhecido como rastreadores.”

A poucos fatos isso catch pessoas fora:

  • isso deve ser em o raiz, lowercase. RFC 9309 é explicit: “The rules MUST be accessible in a file named ‘/robots.txt’ (all lowercase) in the top-level path of the service.” (tradução) “o regras MUST ser accessible em um arquivo named ‘/robôs.txt’ (todo lowercase) em o top-nível path de o service.” Google adiciona isso a URL itself é caso-sensitive, like qualquer URL.
  • escopo é um host + protocolo + port. Google: “The rules listed in the robots.txt file apply only to the host, protocol, and port number where the robots.txt file is hosted.” (tradução) “o regras listed em o robôs.txt arquivo apply apenas para o host, protocolo, e port número onde o robôs.txt arquivo é hosted.” portanto https://example.com, https://www.example.com, https://blog.example.com, e http://example.com cada precisar seu own arquivo. subdomínios e protocolos não share um.
  • Supported protocolos para Google são HTTP, HTTPS, e FTP.

o misconception isso defines isto topic: rastreamento vs indexação

se você levar uma coisa de isto página, levar isto: robôs.txt controla rastreamento, não indexação. Blocking a URL é não o mesmo como removing isso de Google. Evidence for this claim A robots.txt rule controls crawling rather than guaranteeing removal from Google Search; a URL can still appear when Google cannot crawl it. Scope: Google Search crawler behavior. Other crawlers can interpret robots.txt differently. Confidence: high · Verified: Google: Introduction to robots.txt

Google’s own intro doc diz isso plainly: robôs.txt “is not a mechanism for keeping a web page out of Google. To keep a web page out of Google, block indexing with noindex or password-protect the page.” (tradução) “é não a mechanism para keeping a web página fora do Google. para manter a web página fora do Google, bloquear indexação com noindex ou password-protect a página.” e em o que na prática happens para a bloqueado URL: “While Google won’t crawl or index the content blocked by a robots.txt file, we might still find and index a disallowed URL if it is linked from other places on the web.” (tradução) “enquanto Google won’t rastrear ou índice o conteúdo bloqueado por a robôs.txt arquivo, nós might ainda encontrar e índice a proibido URL se isso é linked de outro places em o web.” o resultado é o familiar snippet-menos listing: “its URL can still appear in search results, but the search result won’t have a description.” (tradução) “seu URL pode ainda appear em busca resultados, mas o busca resultado won’t ter a description.”

Evidence for this claim Robots.txt controls crawler access, not index eligibility; Google may still index a disallowed URL discovered through links, typically without a content snippet. Scope: web crawling Confidence: high · Verified: Robots.txt Introduction and Guide

o spec restates o mesmo nuance para o disallow regra itself: “Google can’t index the content of pages which are disallowed for crawling, but it may still index the URL and show it in search results without a snippet.” (tradução) “Google pode’t índice o conteúdo de páginas que são proibido para rastreamento, mas isso may ainda índice a URL e mostrar isso em busca resultados sem a snippet.”

Por que você deve não bloquear uma página você quer para noindex

isto é o trap isso quietly quebra deindexing efforts. A noindex apenas funciona se Google pode rastrear a página para ler isso. Google’s bloquear-indexação doc spells fora o dependency: “For the noindex rule to be effective, the page or resource must not be blocked by a robots.txt file, and it has to be otherwise accessible to the crawler. If the page is blocked by a robots.txt file or the crawler can’t access the page, the crawler will never see the noindex rule, and the page can still appear in search results, for example if other pages link to it.” (tradução) “Para que a regra noindex funcione, a página ou o recurso não pode estar bloqueado por um arquivo robots.txt e precisa continuar acessível ao rastreador. Se o rastreador não puder acessar a página, jamais verá o noindex, e a página ainda poderá aparecer nos resultados caso receba links de outros lugares.” Evidence for this claim Google must be able to crawl a URL to see a noindex rule; blocking the URL in robots.txt can prevent the rule from being observed. Scope: Google Search indexing controls for HTML meta robots and X-Robots-Tag rules. Confidence: high · Verified: Google: Block indexing with noindex

portanto se seu goal é para obter uma página fora de o índice, John Mueller’s orientação é o cleanest way para lembrar isso: quando você quer para unindex páginas, você deve não bloquear Google com robôs.txt, mas em vez de usar noindex.

o lived proof: eu bloqueado dois de nosso own alto-ranqueamento páginas

eu não ter para argue isto de theory. em my experiment bloqueio dois alto-ranqueamento Ahrefs páginas, eu deliberately bloqueado eles em robôs.txt e tracked o que happened. o páginas stayed indexado e kept ranqueamento — eles didn’t vanish. O que nós lost foi o freshness Google obtém de re-rastreamento: “We lost a position here or there and all of the featured snippets for the pages.” (tradução) “nós lost a position aqui ou ali e todos de o featured snippets para o páginas.” Traffic dropped, mas menos de eu expected: “Both pages lost some traffic. But it didn’t result in much change to our traffic estimate like I was expecting.” (tradução) “As duas páginas perderam algum tráfego, mas a queda na estimativa foi bem menor do que eu esperava.”

My takeaway de o dados: “Accidentally blocking pages (that Google already ranks) from being crawled using robots.txt probably isn’t going to have much impact on your rankings, and they will likely still show in the search results.” (tradução) “Accidentally bloqueio páginas (isso Google já ranqueia) de sendo rastreado usando robôs.txt probably não é going para ter muito impacto em seu rankings, e eles vai provável ainda mostrar em o busca resultados.” e o blunt versão: “Don’t block pages you want indexed. It hurts. Not as bad as you might think it does—but it still hurts.” (tradução) “Não bloqueie páginas que você quer indexar. Isso prejudica o desempenho — menos do que se imagina, mas ainda prejudica.”

o flip side é reassurance: quando Search Console flags “Indexed, though blocked by robots.txt” (tradução) “Indexed, though bloqueado por robôs.txt” para a utility URL — cart, filter, parameter junk — é normalmente a non-problema. como Mueller put isso sobre adicionar-para-cart URLs, bloqueio eles é fine, e emé se eles obter “indexado,” é improvável eles’ll ser shown em busca unless someone execuções a muito específico query para aqueles URLs, que usuários reais não do. Distinguish o scary-sounding aviso de um actual problema: isso apenas importa se o bloqueado URL é uma página você na prática wanted rastreado e indexado.

o sintaxe (o referência)

A robôs.txt é a definir de groups. cada group começa com um ou mais User-agent lines naming que rastreador(s) isso applies para, followed por o regras para eles.

User-agent: *
Disallow: /cart/
Disallow: /search
Allow: /search/help

User-agent: Googlebot
Disallow: /no-google/

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

User-agent e groups. A rastreador obeys exatamente um group — o um com o a maioria dos específico agente de usuário isso matches isso — e ignores o rest. Google: “Google’s crawlers determine the correct group of rules by finding in the robots.txt file the group with the most specific user agent that matches the crawler’s user agent. Other groups are ignored.” (tradução) “Google’s rastreadores determine o correct group de regras por finding em o robôs.txt arquivo o group com o a maioria dos específico usuário agent isso matches o rastreador’s usuário agent. Other groups são ignored.” e: “Only one group is valid for a particular crawler.” (tradução) “apenas um group é válido para a particular rastreador.” (Bing behaves o mesmo way — mais em isso abaixo.)

isso também significa a específico group não obter topped up com o wildcard group’s regras — é usado em seu own, não merged com User-agent: *. Google’s spec é explicit isso “user agent specific groups and global groups (*) are not combined.” (tradução) “usuário agent específico groups e global groups (*) são não combined.” portanto se você escrever a User-agent: googlebot-news group, isso tem para ser self-contained: anything você ainda querer isso para obey de o * group tem para ser repeated dentro isso, ou Googlebot-News simply won’t ver aqueles regras em todos.

Evidence for this claim For Google's crawlers, the most specific matching user-agent group applies; rules from that specific group are not combined with the global asterisk group, although multiple matching specific groups are merged internally. Scope: robots.txt parsing and fetching Confidence: high · Verified: How Google Interprets the robots.txt Specification

Disallow e Allow. Disallow listas paths a rastreador deve não solicitação; Allow carves exceptions de volta fora. o disallow regra “specifies paths that must not be accessed by the crawlers identified by the user-agent line the disallow rule is grouped with.” (tradução) “specifies paths isso deve não ser accessed por o rastreadores identified por o agente de usuário line o proibir regra é grouped com.” o allow regra “specifies paths that may be accessed by the designated crawlers. When no path is specified, the rule is ignored.” (tradução) “specifies paths isso may ser accessed por o designated rastreadores. Quando não path é specified, o regra é ignored.”

o matching regra (a maioria dos guias obter isto errado). Quando dois regras conflict, o a maioria dos específico um wins, e “a maioria dos específico” significa longest path: “When matching robots.txt rules to URLs, crawlers use the most specific rule based on the length of the rule path. In case of conflicting rules, including those with wildcards, Google uses the least restrictive rule.” (tradução) “Ao comparar regras do robots.txt com URLs, os rastreadores usam a regra mais específica, medida pelo comprimento do caminho. Em caso de conflito, inclusive com curingas, o Google aplica a regra menos restritiva.” portanto em a genuine tie, o menos restrictive regra wins — Allow beats Disallow. RFC 9309 frames isso como o “Longest Match”: “The following example shows that in the case of two rules, the longest one is used for matching.” (tradução) “o following exemplo mostra isso em o caso de dois regras, o longest um é usado para matching.” Evidence for this claim Google resolves matching robots.txt rules by path specificity and uses the least restrictive rule when equally specific rules conflict. Scope: Google crawler interpretation of robots.txt rules; other crawlers may implement different extensions. Confidence: high · Verified: Google: Robots.txt interpretation

Worked exemplo:

User-agent: *
Allow: /folder/page
Disallow: /folder/

o URL /folder/page matches ambos regras. Allow: /folder/page (12 chars) é longer que Disallow: /folder/ (8 chars), portanto o longer, mais específico Allow wins e a página é crawlable.

Wildcards * e $. Google: * designates 0 or more instances of any valid character. $ designates the end of the URL.” (tradução)* representa zero ou mais ocorrências de qualquer caractere válido; $ marca o fim do URL.” portanto Disallow: /*.pdf$ blocks cada URL ending em .pdf, e Disallow: /*? blocks cada URL containing a query string. Matching é prefix-baseado: Disallow: /fish matches /fish, /fish.html, e /fish/salmon.html, mas não /Fish (caso-sensitive) ou /catfish (é a prefix, não a substring).

Case sensitivity (o subtle um). Field e agente de usuário nomes são caso-insensitive; path valores são caso-sensitive. Google: “Both the user-agent field name and its value are case-insensitive,” (tradução) “ambos o user-agent campo nome e seu valor são caso-insensitive,” mas “The field name (disallow) is case-insensitive, but its value is case-sensitive,” (tradução) “o campo nome (disallow) é caso-insensitive, mas seu valor é caso-sensitive,” e “The path value must start with / to designate the root and the value is case-sensitive.” (tradução) “o path valor deve começar com / para designate o raiz e o valor é caso-sensitive.” portanto Disallow: /Folder/ does não bloquear /folder/.

Sitemap. o Sitemap: directive leva a completo absolute URL e é independent de groups — isso pode sit anywhere em o arquivo.

Comments. Anything depois # é ignored: “To include comments, precede your comment with the # character.” (tradução) “para incluir comments, precede seu comment com o # character.”

noindex, nofollow, e rastrear-delay são não robôs.txt directives

isto é a persistent myth. como de September 1, 2019, Google retired oferecer suporte a para unsupported, undocumented regras — incluindo noindex, nofollow, e crawl-delay. Google’s announcement focused em regras unsupported por o internet draft, such como rastrear-delay, nofollow, e noindex, noting eles foram nunca documented por Google, e disse Google foi retiring todo code isso trata unsupported e unpublished regras (such como noindex) em isso date. o supported campo lista é curto, e o spec chamadas fora o exclusion diretamente: Google oferece suporte a user-agent, allow, disallow, e sitemap, e “other fields such as crawl-delay aren’t supported.” (tradução) “outro campos such como crawl-delay não são supported.”

se você relied em noindex em robôs.txt, o alternatives são a noindex meta tag ou X-Robots-Tag cabeçalho, 404/410 códigos de status, password protection, a Disallow, ou o Search Console removal ferramenta.

Como Google trata robôs.txt por baixo do capô

  • Size limit: 500 KiB. “Google enforces a robots.txt file size limit of 500 kibibytes (KiB). Content which is after the maximum file size is ignored.” (tradução) “Google enforces a robôs.txt arquivo size limit de 500 kibibytes (KiB). conteúdo que é depois de o máximo arquivo size é ignored.” RFC 9309 aligns: “The parsing limit MUST be at least 500 kibibytes [KiB].” (tradução) “o parsing limit MUST ser pelo menos 500 kibibytes [KiB].”
  • Caching: ~24 horas. “Google generally caches the contents of robots.txt file for up to 24 hours, but may cache it longer in situations where refreshing the cached version isn’t possible.” (tradução) “Google generally caches o conteúdos de robôs.txt arquivo para up para 24 horas, mas may cache isso longer em situations onde refreshing o cached versão não é possível.” portanto a mudança não é necessarily picked up instantly. Evidence for this claim Google generally caches robots.txt for up to 24 hours and changes crawling behavior according to the HTTP status returned for the file. Scope: Google crawler handling of robots.txt fetches, including documented 4xx, 5xx, and redirect behavior. Confidence: high · Verified: Google: Robots.txt file handling
  • códigos de status importar em todo o site. isto é o part a maioria dos guias skip:
    • 4xx (except 429) → não restrictions. “Google’s crawlers treat all 4xx errors, except 429, as if a valid robots.txt file didn’t exist. This means that Google assumes that there are no crawl restrictions.” (tradução) “Google’s rastreadores treat todo 4xx erros, except 429, como se a válido robôs.txt arquivo didn’t exist. isto significa isso Google assumes isso ali são não rastrear restrictions.” A 404 em /robots.txt significa “rastrear tudo.” (Não usar 401/403 para throttle rastreamento.)
    • 5xx / unreachable → dangerous. “For the first 12 hours, Google stops crawling the site but keeps trying to fetch the robots.txt file. If Google can’t fetch a new version, for the next 30 days Google will use the last good version, while still trying to fetch a new version.” (tradução) “para o primeiro 12 horas, Google para rastreamento o site mas mantém trying para buscar o robôs.txt arquivo. se Google pode’t buscar a novo versão, para o próximo 30 dias Google vai usar o último bom versão, enquanto ainda trying para buscar a novo versão.” portanto um servidor erro em /robots.txt pode effectively proibir seu site inteiro para o primeiro ~12 horas, então execução em o último cached copy para ~30 dias. A persistently erroring robôs.txt é a em todo o site rastrear risk. e se é ainda quebrado depois de aqueles 30 dias: “If the errors are still not fixed after 30 days: If the site is generally available to Google, Google will behave as if there is no robots.txt file (but still keep checking for a new version).” (tradução) “se o erros são ainda não fixed depois de 30 dias: se o site é generally disponível para Google, Google vai behave como se ali é não robôs.txt arquivo (mas ainda manter checking para a novo versão).” em outro words, a robôs.txt isso nunca recovers não stay proibido forever — Google eventually falls de volta para rastreamento com não restrictions, o mesmo como a 404.
    • 3xx → Google follows pelo menos cinco redirect hops, então trata isso como a 404.

robôs.txt em Bing, Yandex, e beyond

o grouping e sintaxe são essentially shared, mas dois divergences importar:

  • rastrear-delay. Google ignores isso, Bing ainda honors isso, e Yandex dropped isso em 2018 — Yandex’s own documentação afirma isso “From February 22, 2018, Yandex doesn’t take into account the Crawl-delay directive,” (tradução) “de February 22, 2018, Yandex não levar em account o rastrear-delay directive,” pointing você para o site rastrear rate setting em Yandex Webmaster em vez disso. Bing é explicit isso “The robots.txt file is the only valid place to set a crawl-delay directive for MSNBot,” (tradução) “o robôs.txt arquivo é o apenas válido place para definir a rastrear-delay directive para MSNBot,” e isso o directive “accepts only positive, inteiro numbers as values… the higher the value, the more throttled down the crawl rate will be.” (tradução) “accepts apenas positive, inteiro números como valores… o higher o valor, o mais throttled down o rastrear rate vai ser.” Note Bing trata o valor como a relative throttle, não literally N seconds.
  • A particularidade da seção do bingbot. Assim como na regra do Google “only one group per crawler” (tradução) “apenas um grupo por rastreador”, regra, se você criar a User-agent: bingbot seção, Bing applies apenas isso seção e ignores o User-agent: * padrões (rastrear-delay excepted). portanto a bingbot-específico group deve repeat cada directive você ainda querer enforced.
  • Amazon’s cache e falha behavior. Amazon diz seu rastreadores may usar a robôs.txt copy cached dentro de o previous 30 dias. se eles não pode buscar o arquivo, eles behave como though isso does não exist. A checker pode relatório o copy isso fetched, mas isso não pode prove que cached versão Amazon usado—ou isso Amazon observed o mesmo falha como o checker. Evidence for this claim Amazon says its crawlers may use a robots.txt copy cached within the previous 30 days and behave as though the file does not exist when they cannot fetch it. Scope: Amazon crawler behavior only; a checker result cannot establish which cached copy Amazon used or whether Amazon observed the same fetch failure. Confidence: high · Verified: Amazon: Amazonbot

Managing AI rastreadores com robôs.txt

Robots.txt é currently o main lever para managing AI rastreadores, e eles obey o mesmo group/agente de usuário sintaxe. o catch: estes são separado tokens, portanto bloqueio um não bloquear o others.

  • OpenAI execuções vários distinct bots, e o controla para cada são independent — allowing um não permitir o others, e bloqueio um não bloquear o others. GPTBot crawls conteúdo para training OpenAI’s models; OAI-SearchBot surfaces sites em ChatGPT’s busca features; OAI-AdsBot verificações o safety de páginas submitted como ads (seu dados não é usado para training). Block training com User-agent: GPTBot / Disallow: / — isso alone won’t parar o busca ou ads bots. ChatGPT-User é diferente novamente: isso fires para actions a person triggers dentro ChatGPT ou a Custom GPT, não automático rastreamento, e OpenAI diz “robots.txt rules may not apply” (tradução) “robôs.txt regras may não apply” para isso — portanto não count em a Disallow para manter isso fora. se você do mudança o que OAI-SearchBot pode rastrear, OpenAI notas isso pode levar sobre 24 horas para o update para reach seu busca systems.
  • Google-Extended controla Gemini/Vertex training e é separado de Googlebot.
  • Others worth naming: CCBot (Common rastrear), ClaudeBot (Anthropic), PerplexityBot, e Bytespider.

o hard caveat: compliance é voluntary. Robots.txt solicitações; isso não enforce. Well-behaved rastreadores obey isso; scrapers pode e do ignore isso. se você truly precisar para manter algo away de a bot, isso é um authentication/bloqueio problema, não a robôs.txt um.

Common erros (e o corrige)

o arquivo é 200, mas isso é não na prática a usable robôs arquivo. Status alone é não suficiente. Capture o resposta Content-Type e primeiro bytes: a CDN/custom-erro template pode return HTML em /robots.txt com 200, que deve ser a aviso em vez de que um “permitir todos” aprovar. Google documents robôs.txt como UTF-8 texto simples e may ignore inválido characters. A único UTF-8 BOM em o beginning é tolerated, mas a segundo BOM, a BOM em o middle, UTF-16 bytes, NULs, ou invisible/controlar characters pode alter o primeiro token ou invalidate a line. Show o byte offset e affected line; do não silently normalize o arquivo antes de telling o usuário o que o rastreador received. Apply Google’s effective 500 KiB parsing limit antes de calculating permitir/proibir resultados, enquanto ainda reporting o discarded tail.

  • Blocking uma página você também querer deindexed. Block + noindex significa Google nunca crawls isso para ver o noindex. usar noindex sem o bloquear.
  • usando robôs.txt para deindex. Wrong ferramenta entirely — isso é noindex’s job.
  • Blocking renderizar-critical CSS/JS. Google precisa aqueles assets para ver a página como a usuário does; Google’s own sample robôs.txt explicitly re-permite .css/.js portanto Googlebot pode rastrear eles.
  • Trying para hide sensitive dados. RFC 9309 é blunt: “The Robots Exclusion Protocol is not a substitute for valid content security measures. Listing paths in the robots.txt file exposes them publicly and thus makes the paths discoverable.” (tradução) “o Robots Exclusion Protocol é não a substitute para válido conteúdo segurança measures. Listing paths em o robôs.txt arquivo exposes eles publicly e thus torna o paths discoverable.” Disallowing /secret-admin/ literally advertises isso. usar auth.
  • A stray Disallow: /. isto blocks o inteiro site para o named rastreador — o classic staging leftover isso leva um site fora do Google.
  • Ignoring o resposta code em /robots.txt. A 5xx pode stall rastreamento em todo o site; treat o arquivo’s availability como production-critical.

para o broader pipeline isto sits dentro — discovery, o rastrear scheduler, renderização, e como rastreamento differs de indexação — ver o rastreamento hub. o sibling topics (ouçamento de rastreamento, e como Google trata sitemaps) cada go deeper em um piece de isto.

Who's been ignoring my robots.txt?

This is live data from this site, not an illustration. My robots.txt disallows /api/trap/, and the only link to it is invisible to humans — so a compliant crawler will never request it. Every user-agent below fetched it anyway. (Humans poking at it with curl show up too; the user-agent usually gives them away.)

Loading trap log…

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.