Robots.txt
Qué hace realmente el robots.txt —controla el rastreo, no la indexación— además de la sintaxis exacta, cómo lo gestiona Google internamente y los errores que rompen sitios.
Idiomas
1 señal de evidencia en esta página
- Herramienta activa relacionadarobots.txt Tester
Robots.txt es un archivo de texto plano ubicado en la raíz de cada host que indica a los rastreadores qué URL pueden y no pueden solicitar. Lo único que hay que entender bien: controla el rastreo, no la indexación. Una URL con Disallow puede seguir indexándose sin fragmento descriptivo si está enlazada desde otro sitio; para mantener una página fuera del índice se usa noindex, y la página NO debe estar bloqueada en robots.txt o Google nunca verá ese noindex. Google solo admite user-agent, allow, disallow y sitemap (noindex, nofollow y crawl-delay se retiraron el 1 de septiembre de 2019). Vive en /robots.txt, su alcance es un solo host+protocolo+puerto, tiene un límite de 500 KiB, se cachea unas 24 h, y un 4xx significa que no hay restricciones mientras que un 5xx puede detener el rastreo de todo el sitio. No bloquee el CSS/JS crítico para el renderizado y no confíe en él para ocultar nada: el archivo es público.
TL;DR — Robots.txt es un archivo de texto ubicado en la raíz de su sitio que indica a los rastreadores qué URL tienen permiso para solicitar. Lo que casi todo el mundo entiende mal: controla el rastreo, no la indexación. Bloquear una página no la elimina de Google: una página bloqueada puede seguir apareciendo en la búsqueda (solo que sin descripción). Si quiere que una página quede fuera de Google, esa es otra herramienta (
noindex), y no debe bloquearla en robots.txt o Google nunca verá la instrucción.
Qué es un archivo robots.txt
Cuando un motor de búsqueda quiere rastrear su sitio, lo primero que busca es un
archivo en https://yourdomain.com/robots.txt. Ese archivo es una lista de
instrucciones que indica a los rastreadores qué partes de su sitio pueden y no
pueden solicitar. Es texto plano, y puede leer el robots.txt de cualquier sitio
escribiendo /robots.txt después del dominio.
Uno mínimo tiene este aspecto:
Evidence for this claim Cloudflare Radar summarizes which AI user-agent names were observed in robots.txt files during the 28 days ending 2026-07-30. Scope: A dated Cloudflare Radar context chart describing observed robots.txt patterns; it is not a recommendation or a site-specific policy measurement. Confidence: high · Verified: Cloudflare Radar: AI user agents found in robots.txtEl gráfico resume qué nombres de agente de usuario (user-agent) de IA observó Cloudflare en los archivos robots.txt durante el periodo de cuatro semanas seleccionado.
User-agent: *
Disallow: /admin/
Sitemap: https://yourdomain.com/sitemap.xmlEso dice: a todo rastreador (*), no solicites nada bajo /admin/ y, por cierto,
aquí está mi sitemap.
Lo esencial que hay que entender: bloquear ≠ eliminar
Este es el error más común de todo el SEO, así que lo diré bien alto: robots.txt impide que una página se rastree, no que se indexe. 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
Suenan a lo mismo. No lo son. El rastreo es que el motor descargue y lea su página. La indexación es que el motor decida almacenarla y mostrarla en los resultados. Robots.txt solo bloquea el primer paso.
Así que, si bloquea una página en robots.txt, Google no la descargará; pero si otras páginas enlazan a esa URL, Google puede seguir indexando la propia URL y mostrarla en la búsqueda. Simplemente aparece como un enlace escueto, sin descripción debajo, porque Google nunca tuvo permiso para leer la página y redactar una.
Si su objetivo real es «sacar esta página de Google», robots.txt es la herramienta
equivocada. Lo que necesita es noindex (una metaetiqueta en la página o una
cabecera HTTP). Y aquí está la trampa: un noindex solo funciona si Google puede
rastrear la página para verlo. Si bloquea la página en robots.txt y añade un
noindex, Google nunca la rastrea, nunca ve el noindex y la página puede seguir
ahí, en el índice. Elija una sola función: bloquear el rastreo o bloquear la
indexación, no ambas en la misma URL.
La herramienta adecuada para cada función
- «No malgastes rastreo en esto.» →
robots.txtDisallow. - «Mantén esto fuera del índice de Google.» →
noindex(y no lo bloquee). - «Nadie debería poder ver esto en absoluto.» → protección con contraseña /
inicio de sesión. Robots.txt es público —cualquiera puede leerlo—, así que
listar
/secret/en él solo le dice al mundo que esa carpeta existe.
Algunas reglas que hacen tropezar
- Un archivo por host.
https://example.com,https://www.example.comyhttps://blog.example.comnecesitan cada uno su propio robots.txt. No se comparten. - Vive en la raíz. Tiene que estar en
/robots.txt, todo en minúsculas. Un archivo en una subcarpeta no hace nada. - No bloquee su CSS ni su JavaScript. Google necesita esos archivos para ver su página como la ve un visitante. Bloquearlos puede perjudicarle.
¿Quiere la referencia completa de sintaxis —comodines, las reglas de coincidencia
de Allow/Disallow, cómo trata Google un 404 frente a un error de servidor en su
robots.txt, crawl-delay y cómo gestionar los rastreadores de IA—? Cambie a la
pestaña Avanzado.
TL;DR — Robots.txt es un archivo de texto plano ubicado en la raíz de cada host (
/robots.txt, en minúsculas) que implementa el Robots Exclusion Protocol (RFC 9309). Controla el rastreo, no la indexación: una URL con Disallow puede seguir indexándose sin fragmento descriptivo si está enlazada desde otro sitio; para desindexar, usenoindexen una página que no esté bloqueada. Google solo admiteuser-agent,allow,disallowysitemap;noindex/nofollow/crawl-delayse retiraron el 1 de septiembre de 2019. El alcance es un solo host+protocolo+puerto. La coincidencia usa la regla más específica (la más larga) y la menos restrictiva en caso de empate;*y$son los comodines; las rutas distinguen mayúsculas y minúsculas. Google limita el archivo a 500 KiB, lo cachea unas 24 h, trata los 4xx (salvo el 429) como ausencia de restricciones y, ante un 5xx, detiene el rastreo unas 12 h y luego recurre a la última copia válida durante unos 30 días. No bloquee el CSS/JS crítico para el renderizado y no lo trate como control de acceso: el archivo es público.
Qué es y dónde vive
Robots.txt implementa el Robots Exclusion Protocol, creado por Martijn Koster en 1994 y estandarizado por fin en 2022 como RFC 9309, con la coautoría de Gary Illyes, Henner Zeller y Lizzi Sassman, de Google, y del propio Koster. La formulación de la propia norma: “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.” (traducción) «Este documento especifica y amplía el método “Robots Exclusion Protocol”, definido originalmente por Martijn Koster en 1994, para que los responsables de un servicio controlen cómo puede accederse al contenido que sirven sus servicios, si es que puede accederse, por parte de clientes automáticos conocidos como rastreadores.»
Algunos datos que sorprenden a mucha gente:
- Debe estar en la raíz y en minúsculas. RFC 9309 es explícito: “The rules MUST be accessible in a file named ‘/robots.txt’ (all lowercase) in the top-level path of the service.” (traducción) «Las reglas DEBEN estar accesibles en un archivo llamado “/robots.txt” (todo en minúsculas) en la ruta de nivel superior del servicio.» Google añade que la URL en sí distingue mayúsculas y minúsculas, como cualquier URL.
- El alcance es un host + protocolo + puerto. 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.”
(traducción) «Las reglas indicadas en el archivo robots.txt se aplican
únicamente al host, el protocolo y el número de puerto donde está alojado el
archivo robots.txt.»
Así que
https://example.com,https://www.example.com,https://blog.example.comyhttp://example.comnecesitan cada uno su propio archivo. Los subdominios y los protocolos no comparten uno. - Protocolos admitidos por Google: HTTP, HTTPS y FTP.
La idea equivocada que define este tema: rastreo frente a indexación
Si solo se queda con una cosa de esta página, que sea esta: robots.txt controla el rastreo, no la indexación. Bloquear una URL no es lo mismo que eliminarla 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
El propio documento introductorio de Google lo dice sin rodeos: robots.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.”
(traducción) «no es un mecanismo para mantener una página web fuera de Google.
Para mantener una página web fuera de Google, bloquee la indexación con noindex o
proteja la página con contraseña.»
Y sobre lo que le ocurre realmente a una URL bloqueada: “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.”
(traducción) «Aunque Google no rastreará ni indexará el contenido bloqueado por un
archivo robots.txt, es posible que aun así encontremos e indexemos una URL con
Disallow si está enlazada desde otros lugares de la web.»
El resultado es el listado sin fragmento descriptivo de siempre: “its URL can still
appear in search results, but the search result won’t have a description.”
(traducción) «su URL puede seguir apareciendo en los resultados de búsqueda, pero
el resultado de búsqueda no tendrá descripción.»
La especificación repite el mismo matiz para la propia regla disallow: “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.”
(traducción) «Google no puede indexar el contenido de las páginas cuyo rastreo
está bloqueado con Disallow, pero aun así puede indexar la URL y mostrarla en los
resultados de búsqueda sin fragmento descriptivo.»
Por qué NO debe bloquear una página a la que quiere aplicar noindex
Esta es la trampa que arruina en silencio los intentos de desindexación. Un
noindex solo funciona si Google puede rastrear la página para leerlo. El
documento de Google sobre bloqueo de la indexación detalla la dependencia:
noindex solo funciona si la página o el recurso no están bloqueados por robots.txt
y siguen siendo accesibles para el rastreador. Si un archivo robots.txt bloquea la
página o el rastreador no puede acceder a ella, nunca verá la regla y la URL aún
puede aparecer en los resultados, por ejemplo si recibe enlaces de otras páginas.
Así que, si su objetivo es sacar una página del índice, la orientación de John Mueller es la forma más limpia de recordarlo: cuando quiera desindexar páginas, no debe bloquear a Google con robots.txt, sino usar noindex.
La prueba vivida: bloqueé dos de nuestras propias páginas mejor posicionadas
No tengo que defender esto desde la teoría. En mi experimento bloqueando dos páginas de Ahrefs muy bien posicionadas, las bloqueé deliberadamente en robots.txt y seguí lo que ocurría. Las páginas siguieron indexadas y siguieron posicionando: no desaparecieron. Lo que perdimos fue la frescura que Google obtiene al volver a rastrear: “We lost a position here or there and all of the featured snippets for the pages.” (traducción) «Perdimos alguna posición aquí y allá, y todos los fragmentos destacados de las páginas.» El tráfico cayó, pero menos de lo que esperaba: “Both pages lost some traffic. But it didn’t result in much change to our traffic estimate like I was expecting.” (traducción) «Las dos páginas perdieron parte del tráfico, pero el cambio en nuestra estimación de tráfico fue menor de lo que esperaba.»
Mi conclusión a partir de los datos: “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.” (traducción) «Bloquear accidentalmente con robots.txt el rastreo de páginas (que Google ya posiciona) probablemente no tendrá mucho impacto en sus posiciones, y lo más seguro es que sigan apareciendo en los resultados de búsqueda.» Y la versión sin rodeos: “Don’t block pages you want indexed. It hurts. Not as bad as you might think it does—but it still hurts.” (traducción) «No bloquee las páginas que quiera indexar. Hace daño; no tanto como podría imaginar, pero sigue siendo perjudicial.»
La otra cara es tranquilizadora: cuando Search Console marca “Indexed, though blocked by robots.txt” en una URL utilitaria —carrito, filtro, basura de parámetros—, suele ser irrelevante. Como dijo Mueller a propósito de las URL de añadir al carrito, bloquearlas está bien y, aunque acaben «indexadas», es poco probable que se muestren en la búsqueda salvo que alguien lance una consulta muy concreta para esas URL, cosa que los usuarios reales no hacen. Distinga la advertencia que suena alarmante de un problema real: solo importa si la URL bloqueada es una página que sí quería que se rastreara e indexara.
La sintaxis (la referencia)
Un robots.txt es un conjunto de grupos. Cada grupo empieza con una o varias
líneas User-agent que nombran a qué rastreador o rastreadores se aplica, seguidas
de las reglas para ellos.
User-agent: *
Disallow: /cart/
Disallow: /search
Allow: /search/help
User-agent: Googlebot
Disallow: /no-google/
Sitemap: https://example.com/sitemap.xmlUser-agent y grupos. Un rastreador obedece exactamente un grupo —aquel con el agente de usuario más específico que coincida con él— e ignora el resto. 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.” (traducción) «Los rastreadores de Google determinan el grupo de reglas correcto buscando en el archivo robots.txt el grupo con el agente de usuario más específico que coincide con el agente de usuario del rastreador. Los demás grupos se ignoran.» Y: “Only one group is valid for a particular crawler.” (traducción) «Solo un grupo es válido para un rastreador concreto.» (Bing se comporta igual; más sobre esto abajo.)
Eso también significa que un grupo específico no se completa con las reglas del
grupo comodín: se usa por sí solo, no se fusiona con User-agent: *. La
especificación de Google es explícita al decir que “user agent specific groups and
global groups (*) are not combined.”
(traducción) «Los grupos específicos de agente de usuario y los grupos globales
(*) no se combinan.»
Así que, si escribe un grupo User-agent: googlebot-news, tiene que ser
autosuficiente: todo lo que siga queriendo que obedezca del grupo * hay que
repetirlo dentro de él, o Googlebot-News sencillamente no verá esas reglas.
Disallow y Allow. Disallow lista rutas que un rastreador no debe solicitar;
Allow recorta excepciones. La regla disallow “specifies paths that must not be
accessed by the crawlers identified by the user-agent line the disallow rule is
grouped with.”
(traducción) «especifica rutas a las que no deben acceder los rastreadores
identificados por la línea user-agent con la que está agrupada la regla disallow.»
La regla allow “specifies paths that may be accessed by the designated crawlers.
When no path is specified, the rule is ignored.”
(traducción) «especifica rutas a las que pueden acceder los rastreadores
designados. Cuando no se especifica ninguna ruta, la regla se ignora.»
La regla de coincidencia (que la mayoría de las guías explican mal). Cuando dos
reglas entran en conflicto, gana la más específica, y «más específica» significa
la ruta más larga: “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.”
(traducción) «Al comparar las reglas de robots.txt con las URL, los rastreadores
aplican la regla más específica según la longitud de su ruta. Si hay conflicto,
incluso con comodines, Google elige la regla menos restrictiva.»
Así que, en un empate real, gana la regla menos restrictiva: Allow vence a
Disallow. RFC 9309 lo plantea como la «Longest Match»: “The following example
shows that in the case of two rules, the longest one is used for matching.”
(traducción) «El siguiente ejemplo muestra que, en el caso de dos reglas, se usa
la más larga para la coincidencia.» 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
Ejemplo resuelto:
User-agent: *
Allow: /folder/page
Disallow: /folder/La URL /folder/page coincide con ambas reglas. Allow: /folder/page (12
caracteres) es más larga que Disallow: /folder/ (8 caracteres), así que gana el
Allow, más largo y más específico, y la página es rastreable.
Comodines * y $. Google: “* designates 0 or more instances of any valid
character. $ designates the end of the URL.”
(traducción) «El asterisco representa cero o más caracteres válidos; el signo de
dólar marca el final de la URL.»
Así que Disallow: /*.pdf$ bloquea toda URL que termine en .pdf, y
Disallow: /*? bloquea toda URL que contenga una cadena de consulta. La
coincidencia es por prefijo: Disallow: /fish coincide con /fish, /fish.html y
/fish/salmon.html, pero no con /Fish (distingue mayúsculas y minúsculas) ni
con /catfish (es un prefijo, no una subcadena).
Mayúsculas y minúsculas (el detalle sutil). Los nombres de campo y de agente
de usuario no distinguen mayúsculas de minúsculas; los valores de ruta sí.
Google: “Both the user-agent field name and its value are case-insensitive,”
(traducción) «Tanto el nombre del campo user-agent como su valor no distinguen
mayúsculas de minúsculas,»
pero “The field name (disallow) is case-insensitive, but its value is
case-sensitive,”
(traducción) «El nombre del campo (disallow) no distingue mayúsculas de
minúsculas, pero su valor sí las distingue,»
y “The path value must start with / to designate the root and the value is
case-sensitive.”
(traducción) «El valor de ruta debe empezar por / para designar la raíz y el
valor distingue mayúsculas de minúsculas.»
Así que Disallow: /Folder/ no bloquea /folder/.
Sitemap. La directiva Sitemap: toma una URL absoluta completa y es
independiente de los grupos: puede situarse en cualquier punto del archivo.
Comentarios. Todo lo que va después de # se ignora: “To include comments,
precede your comment with the # character.”
(traducción) «Para incluir comentarios, anteponga a su comentario el carácter
#.»
noindex, nofollow y crawl-delay NO son directivas de robots.txt
Este es un mito persistente. Desde el 1 de septiembre de 2019, Google retiró el
soporte de las reglas no admitidas y no documentadas, incluidas noindex,
nofollow y crawl-delay. El anuncio de Google se centró en las reglas no
admitidas por el borrador de internet, como crawl-delay, nofollow y noindex,
señalando que Google nunca las había documentado, y dijo que Google retiraba en esa
fecha todo el código que gestiona reglas no admitidas y no publicadas (como
noindex). La lista de campos admitidos es corta, y la especificación menciona la
exclusión directamente: Google admite user-agent, allow, disallow y
sitemap, y “other fields such as crawl-delay aren’t supported.”
(traducción) «otros campos, como crawl-delay, no se admiten.»
Si dependía de noindex en robots.txt, las alternativas son una metaetiqueta
noindex o una cabecera X-Robots-Tag, códigos de estado 404/410, protección con
contraseña, un Disallow o la herramienta de eliminaciones de Search Console.
Cómo gestiona Google el robots.txt internamente
- Límite de tamaño: 500 KiB. Google aplica un límite de tamaño de archivo robots.txt de 500 kibibytes (KiB); el contenido que supera el tamaño máximo se ignora. RFC 9309 concuerda: “The parsing limit MUST be at least 500 kibibytes [KiB].” (traducción) «El límite de análisis DEBE ser de al menos 500 kibibytes [KiB].»
- Caché: unas 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.” (traducción) «Google normalmente almacena en caché el contenido del archivo robots.txt hasta 24 horas, pero puede cachearlo más tiempo en situaciones en las que no sea posible actualizar la versión almacenada.» Así que un cambio no se recoge necesariamente al instante. 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
- Los códigos de estado importan en todo el sitio. Esta es la parte que la
mayoría de las guías se salta:
- 4xx (salvo el 429) → sin restricciones. Los rastreadores de Google tratan
todos los errores 4xx, salvo el 429, como si no existiera un archivo robots.txt
válido: Google asume que no hay restricciones de rastreo.
Un 404 en
/robots.txtsignifica «rastréalo todo». (No use 401/403 para limitar el rastreo.) - 5xx / inaccesible → peligroso. Durante las primeras 12 horas, Google deja
de rastrear el sitio pero sigue intentando descargar el archivo robots.txt. Si
no puede descargar una versión nueva, durante los 30 días siguientes usa la
última versión válida mientras sigue intentando obtener una nueva.
Así que un error de servidor en
/robots.txtpuede, en la práctica, bloquear todo su sitio durante las primeras 12 horas aproximadamente, y luego funcionar con la última copia cacheada durante unos 30 días. Un robots.txt que da error de forma persistente es un riesgo de rastreo para todo el sitio. Y si sigue roto después de esos 30 días: “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).” (traducción) «Si los errores siguen sin corregirse después de 30 días: si el sitio está disponible para Google en general, Google se comportará como si no hubiera archivo robots.txt (pero seguirá comprobando si hay una versión nueva).» En otras palabras, un robots.txt que nunca se recupera no queda bloqueado para siempre: Google acaba recurriendo a rastrear sin restricciones, igual que ante un 404. - 3xx → Google sigue al menos cinco saltos de redirección y luego lo trata como un 404.
- 4xx (salvo el 429) → sin restricciones. Los rastreadores de Google tratan
todos los errores 4xx, salvo el 429, como si no existiera un archivo robots.txt
válido: Google asume que no hay restricciones de rastreo.
Un 404 en
robots.txt en Bing, Yandex y más allá
La agrupación y la sintaxis son esencialmente comunes, pero hay dos divergencias que importan:
- crawl-delay. Google la ignora, Bing sigue respetándola y Yandex la abandonó en 2018: la propia documentación de Yandex indica que “From February 22, 2018, Yandex doesn’t take into account the Crawl-delay directive,” (traducción) «Desde el 22 de febrero de 2018, Yandex no tiene en cuenta la directiva Crawl-delay,» y le remite en su lugar al ajuste de velocidad de rastreo del sitio en Yandex Webmaster. Bing es explícito al decir que “The robots.txt file is the only valid place to set a crawl-delay directive for MSNBot,” (traducción) «El archivo robots.txt es el único lugar válido para establecer una directiva crawl-delay para MSNBot,» y que la directiva “accepts only positive, whole numbers as values… the higher the value, the more throttled down the crawl rate will be.” (traducción) «solo acepta números enteros positivos como valores… cuanto mayor sea el valor, más se reducirá la velocidad de rastreo.» Tenga en cuenta que Bing trata el valor como una limitación relativa, no literalmente como N segundos.
- El truco de la sección de bingbot. Igual que la regla de Google de “only one
group per crawler” (traducción) «solo un grupo por rastreador», si crea una sección
User-agent: bingbot, Bing aplica solo esa sección e ignora los valores por defecto deUser-agent: *(con la excepción de crawl-delay). Así que un grupo específico de bingbot debe repetir todas las directivas que siga queriendo que se apliquen. - La caché y el comportamiento ante fallos de Amazon. Amazon indica que sus rastreadores pueden usar una copia de robots.txt cacheada en los 30 días anteriores. Si no pueden descargar el archivo, se comportan como si no existiera. Un verificador puede informar de la copia que descargó, pero no puede demostrar qué versión cacheada usó Amazon, ni que Amazon observó el mismo fallo que el verificador. 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
Gestionar los rastreadores de IA con robots.txt
Robots.txt es actualmente la palanca principal para gestionar los rastreadores de IA, y obedecen la misma sintaxis de grupos y agentes de usuario. El detalle: son tokens distintos, así que bloquear uno no bloquea los demás.
- OpenAI opera varios bots distintos, y los controles de cada uno son
independientes: permitir uno no permite los demás, y bloquear uno no bloquea los
demás.
GPTBotrastrea contenido para entrenar los modelos de OpenAI;OAI-SearchBothace que los sitios aparezcan en las funciones de búsqueda de ChatGPT;OAI-AdsBotcomprueba la seguridad de las páginas enviadas como anuncios (sus datos no se usan para el entrenamiento). Bloquee el entrenamiento conUser-agent: GPTBot/Disallow: /; eso por sí solo no detendrá a los bots de búsqueda ni de anuncios.ChatGPT-Useres otra cosa: se activa por acciones que una persona desencadena dentro de ChatGPT o de un GPT personalizado, no por rastreo automático, y OpenAI dice que “robots.txt rules may not apply” (traducción) «puede que las reglas de robots.txt no se apliquen» a él, así que no cuente con unDisallowpara mantenerlo fuera. Si cambia lo queOAI-SearchBotpuede rastrear, OpenAI señala que puede tardar unas 24 horas en que la actualización llegue a sus sistemas de búsqueda. - Google-Extended controla el entrenamiento de Gemini/Vertex y es independiente de Googlebot.
- Otros que merece la pena nombrar:
CCBot(Common Crawl),ClaudeBot(Anthropic),PerplexityBotyBytespider.
La salvedad dura: el cumplimiento es voluntario. Robots.txt pide; no impone. Los rastreadores que se comportan bien lo obedecen; los scrapers pueden ignorarlo y lo ignoran. Si de verdad necesita mantener algo lejos de un bot, eso es un problema de autenticación o de bloqueo, no de robots.txt.
Errores comunes (y cómo se corrigen)
El archivo devuelve 200, pero no es en realidad un archivo robots utilizable.
El código de estado por sí solo no basta. Capture el Content-Type de la respuesta
y sus primeros bytes: una plantilla de error personalizada o de un CDN puede
devolver HTML en /robots.txt con un 200, lo que debe ser una advertencia y no
un aprobado de «permitir todo». Google documenta robots.txt como texto plano UTF-8
y puede ignorar caracteres no válidos. Se tolera una única BOM UTF-8 al principio,
pero una segunda BOM, una BOM en medio, bytes UTF-16, NUL o caracteres invisibles o
de control pueden alterar el primer token o invalidar una línea. Muestre el
desplazamiento de bytes y la línea afectada; no normalice el archivo en silencio
antes de decirle al usuario qué recibió el rastreador. Aplique el límite efectivo de análisis de 500 KiB
de Google antes de calcular los resultados de allow/disallow, informando aun así de
la cola descartada.
- Bloquear una página que además quiere desindexar. Bloqueo + noindex significa que Google nunca la rastrea para ver el noindex. Use noindex sin el bloqueo.
- Usar robots.txt para desindexar. Herramienta equivocada por completo: ese es el trabajo de noindex.
- Bloquear CSS/JS crítico para el renderizado. Google necesita esos recursos
para ver la página como la ve un usuario; el propio robots.txt de ejemplo de
Google vuelve a permitir explícitamente
.css/.jspara que Googlebot pueda rastrearlos. - Intentar ocultar datos sensibles. RFC 9309 es tajante: el Robots Exclusion
Protocol no sustituye a unas medidas válidas de seguridad del contenido; listar
rutas en el archivo robots.txt las expone públicamente y, por tanto, hace que
sean detectables. Bloquear
/secret-admin/con Disallow es, literalmente, anunciarlo. Use autenticación. - Un
Disallow: /despistado. Esto bloquea el sitio entero para el rastreador nombrado: el clásico resto de staging que saca un sitio de Google. - Ignorar el código de respuesta de
/robots.txt. Un 5xx puede detener el rastreo de todo el sitio; trate la disponibilidad del archivo como crítica para producción.
Para el proceso más amplio en el que esto se inserta —el descubrimiento, el planificador de rastreo, el renderizado y en qué se diferencia el rastreo de la indexación—, consulte el hub de rastreo. Los temas hermanos (el presupuesto de rastreo y cómo gestiona Google los sitemaps) profundizan cada uno en una pieza de esto.
Resumen con IA
Una versión condensada de la variante Advanced:
- Robots.txt = un archivo de texto plano en la raíz de cada host
(
/robots.txt, en minúsculas) que implementa el Robots Exclusion Protocol (RFC 9309, 2022; origen en 1994). La URL distingue mayúsculas y minúsculas. - Controla el rastreo, no la indexación. Este es el mito n.º 1. Una URL con
Disallow puede seguir indexándose —mostrada como una URL escueta sin
descripción— si está enlazada desde otro sitio. Para mantener una página fuera
del índice, use
noindex, y la página no debe estar bloqueada en robots.txt o Google nunca la rastreará para ver ese noindex. - El experimento de Patrick lo demostró: bloquear dos páginas muy bien posicionadas no las desindexó; siguieron posicionando, pero perdieron los fragmentos destacados y las descripciones. “Don’t block pages you want indexed. It hurts.” (traducción) «No bloquee páginas que quiere que se indexen. Duele.»
- La herramienta adecuada para cada función: robots.txt = control del rastreo;
noindex= control de la indexación; contraseña/autenticación = confidencialidad (robots.txt es público). - Campos admitidos:
user-agent,allow,disallow,sitemap. No admitidos por Google:noindex,nofollow,crawl-delay(retirados el 1 de septiembre de 2019). - El alcance es un host + protocolo + puerto: cada subdominio y protocolo necesita su propio archivo.
- Coincidencia: gana la regla más específica (la ruta más larga); la menos
restrictiva (Allow) en caso de empate. Comodines
*y$; los valores de ruta distinguen mayúsculas y minúsculas. Un grupo específico no se fusiona con el grupo*: va por su cuenta. - Por dentro: límite de tamaño de 500 KiB; caché de unas 24 h; 4xx (salvo el 429) → sin restricciones; 5xx/inaccesible → parada del rastreo de unas 12 h, luego última copia válida durante unos 30 días, y después sin restricciones si sigue roto; 3xx → sigue ≥5 saltos y luego lo trata como un 404.
- Otros motores: Bing respeta
crawl-delay; Google la ignora y Yandex dejó de respetarla en febrero de 2018 (use el ajuste de velocidad de rastreo de Yandex Webmaster). Una secciónbingbothace que Bing ignore los valores por defecto de*. - Los rastreadores de IA (GPTBot, OAI-SearchBot, OAI-AdsBot, ChatGPT-User,
Google-Extended, CCBot, ClaudeBot, PerplexityBot, Bytespider) son tokens
distintos con controles independientes: bloquee uno y los demás seguirán
rastreando.
ChatGPT-Userse activa por acción del usuario, no de forma automática, así que puede que robots.txt no se le aplique en absoluto; el cumplimiento por parte de los rastreadores es, en general, voluntario. - No bloquee el CSS/JS crítico para el renderizado, no lo use para ocultar
datos sensibles (es público) y vigile los
Disallow: /despistados.
Documentación oficial
Documentación de fuente primaria de los motores de búsqueda y de la propia norma.
- Introducción a robots.txt — el documento para principiantes, con la salvedad de rastreo frente a indexación. Empiece por aquí.
- Crear y enviar un archivo robots.txt / Cómo interpreta Google la especificación de robots.txt — la referencia completa: campos admitidos, agrupación, coincidencia, comodines, límite de tamaño, caché y tratamiento de los códigos de estado.
- Bloquear la indexación de búsqueda con noindex — por qué una página con
noindexNO debe estar bloqueada en robots.txt. - Nota sobre las reglas no admitidas en robots.txt (julio de 2019) — el anuncio de que el soporte de
noindex,nofollowycrawl-delaytermina el 1 de septiembre de 2019.
La norma
- RFC 9309 — Robots Exclusion Protocol — la norma del IETF (Koster, Illyes, Zeller, Sassman; septiembre de 2022), que incluye el requisito de ubicación en
/robots.txt, la regla de coincidencia más larga, el límite de análisis de 500 KiB y la nota de consideraciones de seguridad.
Bing / Microsoft
- Guía de Bingbot — la guía actual de Bing Webmaster documenta valores de
crawl-delayde 1 a 20 segundos. - Cómo crear un archivo robots.txt (ayuda de Bing Webmaster Tools) — la guía y el verificador de robots.txt de Bing.
Citas de la fuente
Declaraciones oficiales de Google, Bing y el RFC. Cada enlace es un enlace directo que salta al pasaje citado en la página de origen.
Google — rastreo, no indexación
- “This is used mainly to avoid overloading your site with requests; it is not a mechanism for keeping a web page out of Google. To keep a web page out of Google, block indexing with
noindexor password-protect the page.” (traducción) «Esto se usa principalmente para evitar sobrecargar su sitio con solicitudes; no es un mecanismo para mantener una página web fuera de Google. Para mantener una página web fuera de Google, bloquee la indexación connoindexo proteja la página con contraseña.» — Documentación de Google Search Central. Ir a la cita - “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.” (traducción) «Aunque Google no rastreará ni indexará el contenido bloqueado por un archivo robots.txt, es posible que aun así encontremos e indexemos una URL con Disallow si está enlazada desde otros lugares de la web.» Ir a la cita
- “If your web page is blocked with a robots.txt file, its URL can still appear in search results, but the search result won’t have a description.” (traducción) «Si su página web está bloqueada con un archivo robots.txt, su URL puede seguir apareciendo en los resultados de búsqueda, pero el resultado de búsqueda no tendrá descripción.» Ir a la cita
Google — por qué una página con noindex debe seguir siendo rastreable
- La documentación de Google lo expresa así: “For the
noindexrule 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 thenoindexrule, and the page can still appear in search results, for example if other pages link to it.” (traducción) «Para que la reglanoindexsea efectiva, la página o el recurso no deben estar bloqueados por un archivo robots.txt y, por lo demás, deben ser accesibles para el rastreador. Si la página está bloqueada por un archivo robots.txt o el rastreador no puede acceder a ella, el rastreador nunca verá la reglanoindexy la página puede seguir apareciendo en los resultados de búsqueda, por ejemplo si otras páginas enlazan a ella.» — Documentación de Google Search Central. Ir a la cita
Google — ubicación, alcance y la especificación
- “The rules listed in the robots.txt file apply only to the host, protocol, and port number where the robots.txt file is hosted.” (traducción) «Las reglas indicadas en el archivo robots.txt se aplican únicamente al host, el protocolo y el número de puerto donde está alojado el archivo robots.txt.» Ir a la cita
- “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.” (traducción) «Google no puede indexar el contenido de las páginas cuyo rastreo está bloqueado con Disallow, pero aun así puede indexar la URL y mostrarla en los resultados de búsqueda sin fragmento descriptivo.» Ir a la cita
- La especificación de Google dice: “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.” (traducción) «Al hacer coincidir las reglas de robots.txt con las URL, los rastreadores usan la regla más específica según la longitud de la ruta de la regla. En caso de reglas en conflicto, incluidas las que llevan comodines, Google usa la regla menos restrictiva.» Ir a la cita
- La especificación de Google también indica: “
*designates 0 or more instances of any valid character.$designates the end of the URL.” (traducción) «*designa 0 o más instancias de cualquier carácter válido.$designa el final de la URL.» Ir a la cita - “The field name (
disallow) is case-insensitive, but its value is case-sensitive.” (traducción) «El nombre del campo (disallow) no distingue mayúsculas de minúsculas, pero su valor sí las distingue.» Ir a la cita
Google — tamaño, caché y códigos de estado
- “Google enforces a robots.txt file size limit of 500 kibibytes (KiB). Content which is after the maximum file size is ignored.” (traducción) «Google aplica un límite de tamaño de archivo robots.txt de 500 kibibytes (KiB). El contenido que va más allá del tamaño máximo de archivo se ignora.» Ir a la cita
- “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.” (traducción) «Google normalmente almacena en caché el contenido del archivo robots.txt hasta 24 horas, pero puede cachearlo más tiempo en situaciones en las que no sea posible actualizar la versión almacenada.» Ir a la cita
- “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.” (traducción) «Los rastreadores de Google tratan todos los errores 4xx, salvo el 429, como si no existiera un archivo robots.txt válido. Esto significa que Google asume que no hay restricciones de rastreo.» Ir a la cita
- “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.” (traducción) «Durante las primeras 12 horas, Google deja de rastrear el sitio pero sigue intentando descargar el archivo robots.txt. Si Google no puede descargar una versión nueva, durante los 30 días siguientes usará la última versión válida, sin dejar de intentar descargar una nueva.» Ir a la cita
- “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).” (traducción) «Si los errores siguen sin corregirse después de 30 días: si el sitio está disponible para Google en general, Google se comportará como si no hubiera archivo robots.txt (pero seguirá comprobando si hay una versión nueva).» Ir a la cita
- “User agent specific groups and global groups (
*) are not combined.” (traducción) «Los grupos específicos de agente de usuario y los grupos globales (*) no se combinan.» Ir a la cita
RFC 9309 — la norma
- “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.” (traducción) «Este documento especifica y amplía el método “Robots Exclusion Protocol”, definido originalmente por Martijn Koster en 1994, para que los responsables de un servicio controlen cómo puede accederse al contenido que sirven sus servicios, si es que puede accederse, por parte de clientes automáticos conocidos como rastreadores.» — RFC 9309 (Koster, Illyes, Zeller, Sassman). Ir a la cita
- “The rules MUST be accessible in a file named ‘/robots.txt’ (all lowercase) in the top-level path of the service.” (traducción) «Las reglas DEBEN estar accesibles en un archivo llamado “/robots.txt” (todo en minúsculas) en la ruta de nivel superior del servicio.» Ir a la cita
- “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.” (traducción) «El Robots Exclusion Protocol no sustituye a unas medidas válidas de seguridad del contenido. Listar rutas en el archivo robots.txt las expone públicamente y, por tanto, hace que sean detectables.» Ir a la cita
Bing — directiva crawl-delay
- Bingbot guidance documenta un rango de
crawl-delayde 1 a 20 segundos. Es una indicación específica de Bing, no una extensión que Google procese.
Patrick Stox — el experimento de bloqueo (mi propio experimento en Ahrefs, revisado por Joshua Hardwick)
- “We lost a position here or there and all of the featured snippets for the pages.” (traducción) «Perdimos alguna posición aquí y allá, y todos los fragmentos destacados de las páginas.» Ir a la cita
- El experimento de Ahrefs lo resumió así: “Both pages lost some traffic. But it didn’t result in much change to our traffic estimate like I was expecting.” (traducción) «Ambas páginas perdieron algo de tráfico. Pero no supuso un gran cambio en nuestra estimación de tráfico, como yo esperaba.» Ir a la cita
- Patrick Stox lo resumió así: “Don’t block pages you want indexed. It hurts. Not as bad as you might think it does—but it still hurts.” (traducción) «No bloquee páginas que quiere que se indexen. Duele. No tanto como podría pensar, pero duele igualmente.» Ir a la cita
Robots.txt — hoja de referencia rápida de sintaxis
Directivas (admitidas por Google)
| Directiva | Qué hace | Ejemplo |
|---|---|---|
User-agent: | Inicia un grupo; nombra al rastreador o rastreadores a los que se aplica. | User-agent: Googlebot |
Disallow: | Rutas que el rastreador no debe solicitar. | Disallow: /cart/ |
Allow: | Recorta una excepción dentro de un Disallow. | Allow: /cart/help |
Sitemap: | URL absoluta de un sitemap (independiente de los grupos). | Sitemap: https://x.com/sitemap.xml |
Caracteres especiales
| Token | Significado |
|---|---|
* | En una ruta: 0 o más caracteres cualesquiera. Como agente de usuario: todos los rastreadores. |
$ | Ancla el final de la URL. Disallow: /*.pdf$ bloquea las URL que terminan en .pdf. |
# | Comentario: se ignora todo lo que va después en esa línea. |
/ | Los valores de ruta deben empezar por /. Disallow: / bloquea el sitio entero. |
Reglas de coincidencia
- Gana la regla más específica (la ruta más larga).
- En caso de empate, gana la menos restrictiva:
Allowvence aDisallow. - Los valores de ruta distinguen mayúsculas y minúsculas (
/Folder/≠/folder/); los nombres de campo y de agente de usuario no las distinguen. - Un rastreador obedece exactamente un grupo: el del agente de usuario más específico que coincida.
No admitidos por Google (retirados el 1 de septiembre de 2019): noindex,
nofollow, crawl-delay. Bing sigue respetando crawl-delay (como una limitación
relativa, no como segundos literales); Yandex dejó de respetarla el 22 de febrero
de 2018: configure en su lugar la velocidad de rastreo en Yandex Webmaster.
Por dentro (Google)
- Límite de tamaño: 500 KiB (el resto se ignora). Caché: unas 24 h.
- 4xx (salvo el 429) → sin restricciones. 5xx/inaccesible → parada del rastreo de unas 12 h, luego última copia válida unos 30 días, y después sin restricciones si sigue roto. 3xx → ≥5 saltos y luego se trata como un 404.
- Un grupo
User-agentespecífico nunca se fusiona con el grupo*.
Recetas habituales
# Block a folder for everyone
User-agent: *
Disallow: /admin/
# Block all PDFs
User-agent: *
Disallow: /*.pdf$
# Block AI training crawler (won't stop search bots)
User-agent: GPTBot
Disallow: /
# Point to the sitemap
Sitemap: https://example.com/sitemap.xml Lista de comprobación para auditar robots.txt
- El archivo existe exactamente en
https://yourdomain.com/robots.txt(raíz, minúsculas) y devuelve un200. - Cada host y protocolo tiene su propio archivo (
www, sinwww, subdominios,httpfrente ahttps). - No hay ningún
Disallow: /despistado bloqueando el sitio entero (el clásico resto de staging). - No está bloqueando ninguna página a la que además quiera aplicar
noindex(Google debe rastrearla para ver el noindex). - No está usando robots.txt para desindexar páginas: ese es el trabajo de
noindex. - El CSS/JS crítico para el renderizado no está bloqueado.
- No hay líneas
noindex,nofollownicrawl-delaydirigidas a Google (no admitidas desde el 1 de septiembre de 2019). - No hay rutas sensibles listadas: el archivo es público y anuncia todo lo que nombra; use autenticación en su lugar.
- Las reglas con comodines (
*,$) están probadas contra URL reales; recuerde que los valores de ruta distinguen mayúsculas y minúsculas. - Si tiene una sección
User-agent: bingbot(o de cualquier bot concreto), repite todas las directivas que siga queriendo que se apliquen: los grupos específicos de bot ignoran los valores por defecto de*. - La directiva
Sitemap:está presente con una URL absoluta. - El archivo pesa menos de 500 KiB.
- Validado en el informe de robots.txt de Search Console; revisadas una a una las URL con “Indexed, though blocked by robots.txt” para confirmar que son realmente prescindibles y no páginas que quería que se rastrearan.
Los modelos mentales
1. Control del rastreo, no control de la indexación. Robots.txt solo rige si un rastreador puede descargar una URL. No dice nada sobre si esa URL se indexa. Interiorice esto y la mayoría de los errores con robots.txt desaparecen. Bloquear una URL ≠ eliminarla de Google.
2. Gana la regla más específica; la menos restrictiva desempata.
Cuando dos reglas afectan a la misma URL, gana la de la ruta más larga. En un
empate real, Allow vence a Disallow. Esta única regla explica casi todos los
quebraderos de cabeza del tipo «¿por qué esta URL es rastreable / está bloqueada?».
3. Bloquear frente a noindex: un árbol de decisión.
- ¿Quiere que quede fuera del índice? →
noindex, y asegúrese de que no esté bloqueada en robots.txt (para que Google pueda rastrearla y ver el noindex). - ¿Quiere dejar de malgastar rastreo en ella pero no le importa que se muestre la
URL escueta? →
Disallowen robots.txt. - ¿Quiere que sea realmente privada? → autenticación. Robots.txt es público y no oculta nada.
Nunca bloquee y aplique noindex a la misma URL: se anulan entre sí y la página puede quedarse en el índice.
4. La disponibilidad del archivo es crítica para producción.
El código de respuesta HTTP de /robots.txt tiene consecuencias en todo el sitio:
un 4xx significa «sin restricciones», pero un 5xx puede hacer que Google deje de
rastrear todo su sitio durante unas 12 horas. Trate /robots.txt como cualquier
otro endpoint crítico.
Descargar y auditar el robots.txt de todos los hosts
El alcance de robots.txt es por host+protocolo+puerto, así que es fácil olvidar que existe alguna variante. Esto descarga todas las variantes de un dominio y señala las que dan error o 404.
macOS / Linux
for url in "https://example.com/robots.txt" "https://www.example.com/robots.txt" "http://example.com/robots.txt"; do
code=$(curl -s -o /dev/null -w "%{http_code}" "$url")
echo "$code $url"
doneWindows (PowerShell)
$urls = "https://example.com/robots.txt","https://www.example.com/robots.txt","http://example.com/robots.txt"
foreach ($u in $urls) {
$r = Invoke-WebRequest -Uri $u -UseBasicParsing -SkipHttpErrorCheck
Write-Host "$($r.StatusCode) $u"
}Lo que quiere ver es un 200 en cada línea. Un 4xx significa que Google trata
ese host+protocolo como sin restricciones (está bien si es intencionado); el
peligroso es el 5xx: puede detener el rastreo de ese host.
Expresión regular para extraer todas las rutas Disallow/Allow
Útil para comparar un robots.txt antes y después de una edición, o para programar una comprobación contra una lista de URL que le importen.
import re
robots_txt = open("robots.txt").read()
# Captures the directive (Disallow/Allow) and its path value
pattern = re.compile(r'^(Disallow|Allow):\s*(\S*)', re.IGNORECASE | re.MULTILINE)
for directive, path in pattern.findall(robots_txt):
print(f"{directive}: {path or '(empty — matches nothing)'}")(Disallow|Allow)— captura qué directiva se ha activado.\s*(\S*)— captura el valor de ruta, admitiendo unDisallow:vacío (que Google trata como «no bloquear nada»).re.IGNORECASE— los nombres de campo no distinguen mayúsculas de minúsculas aunque los valores de ruta sí lo hagan (no pase las rutas a minúsculas cuando amplíe esto).
Fragmento para la consola de Chrome DevTools
Péguelo en el panel Console (F12 → Console) de cualquier página para descargar e imprimir el robots.txt de ese host sin salir de la pestaña:
fetch(new URL('/robots.txt', location.origin))
.then(r => r.text())
.then(t => console.log(t))
.catch(e => console.error('No robots.txt or fetch blocked:', e));Bookmarklet: ir al robots.txt del sitio actual
Guárdelo como marcador poniendo esto como URL (arrástrelo a su barra de marcadores, o añádalo manualmente y pegue el código en el campo “URL”) y luego haga clic en él en cualquier página:
javascript:(function(){var u=new URL('/robots.txt',location.origin).href;location.href=u;})(); Herramientas para probar y validar robots.txt
- Google Search Console — informe de robots.txt (Settings) — la superficie actual de Google para ver el robots.txt que Google descargó, su código de estado y cualquier problema de análisis. (El antiguo tester independiente de robots.txt se retiró; las pruebas viven ahora en este informe.)
- URL Inspection de GSC — confirme si una URL concreta tiene el rastreo bloqueado y cómo la ve Google ahora mismo.
- “Indexed, though blocked by robots.txt” de GSC (informe de páginas) — muestra las URL que Google indexó pese al bloqueo, para que decida cuáles son problemas reales.
- Bing Webmaster Tools — verificador y guía de robots.txt — el equivalente de Bing para validar su archivo frente a bingbot.
- Ahrefs Site Audit / Screaming Frog SEO Spider — rastree su propio sitio para ver qué URL están bloqueadas, detectar páginas con Disallow por accidente y comprobar que sus reglas coinciden con las URL previstas.
- Cualquier navegador — la comprobación más simple de todas: cargue
yourdomain.com/robots.txty léalo. Recuerde que todo el mundo puede hacer lo mismo.
Incidente: ha desplegado Disallow: / en producción
Este es el clásico resto de staging: un robots.txt creado para bloquear un entorno
de staging acaba desplegado en el sitio en vivo, y User-agent: * / Disallow: /
bloquea todo. Esta es la recuperación paso a paso.
Paso 1: confirme el radio de impacto.
Descargue https://yourdomain.com/robots.txt ahora mismo (navegador o curl -I).
Si ve un Disallow: / escueto bajo User-agent: * sin ningún Allow: más
específico que recorte nada, todos los rastreadores que respetan robots.txt están
ahora mismo bloqueados en todo su sitio. Pase al paso 2.
Paso 2: corrija el archivo y confirme el despliegue.
Sustitúyalo por las reglas previstas (o por un mínimo User-agent: * / Allow: / si
no tiene claro qué corresponde) y despliegue. Vuelva a descargar la URL en vivo: no
se fíe del panel de despliegue, fíese de la respuesta real. Si sigue mostrando el
viejo Disallow: /, tiene un problema de caché/CDN, no de código: purgue la caché
de esa ruta concreta antes de seguir.
Paso 3: compruebe cuánto tiempo estuvo bloqueado el sitio. Google cachea robots.txt hasta unas 24 horas, así que una corrección recién puesta en producción no se recogerá al instante. Abra el informe de robots.txt de Search Console para ver cuándo descargó Google el archivo por última vez y si ya ha visto la versión corregida. Si todavía no lo ha hecho, pedir que se vuelva a descargar no es una opción manual: hay que esperar, o usar URL Inspection en sus páginas más importantes y usar “Request Indexing” una vez confirmado que el archivo está corregido.
Paso 4: compruebe si hubo daños reales.
- Si el bloqueo duró horas, espere poco o ningún impacto visible: Google no saca páginas del índice solo porque un rastreo se bloqueara una vez.
- Si duró días o semanas, revise el informe de páginas de Search Console por si hay un salto en “Blocked by robots.txt” y compruebe si páginas previamente indexadas pasaron a ese estado. Mi propio experimento bloqueando dos páginas muy bien posicionadas mostró que siguieron indexadas y en su mayoría mantuvieron posiciones, pero perdieron señales de frescura y fragmentos destacados: el daño se acumula con el tiempo bloqueado, no de golpe.
- Si ve que las posiciones o las impresiones caen realmente en el informe de rendimiento de Search Console durante la ventana bloqueada, esa es la confirmación de que el incidente tuvo un impacto real y no fue solo un susto.
Paso 5: verifique que la corrección funcionó, no lo dé por hecho. Pase las rutas concretas que le importan por el Robots.txt Tester contra el archivo corregido. Si alguna vuelve como bloqueada, no ha terminado: vuelva al paso 2.
Errores concretos que hay que evitar
Bloquear en robots.txt una página a la que además quiere aplicar noindex.
Por qué está mal: un noindex solo funciona si el rastreador puede leer la página
para verlo. Bloquee la página y Google nunca la rastreará, nunca verá el noindex
y la página puede quedarse en el índice si algo enlaza a ella. Haga esto en su
lugar: deje la página rastreable y ponga noindex en la propia página
(metaetiqueta o cabecera X-Robots-Tag).
Usar robots.txt como su herramienta de desindexación.
Por qué está mal: robots.txt controla el rastreo, no la indexación. La propia
documentación de Google es explícita al decir que “is not a mechanism for keeping
a web page out of Google.” (traducción) «no es un mecanismo para mantener una
página web fuera de Google.» Una URL con Disallow puede seguir apareciendo en los
resultados, solo que sin descripción. Haga esto en su lugar: use noindex (con la
página sin bloquear) para eliminar de verdad una página del índice.
Bloquear CSS o JavaScript crítico para el renderizado.
Por qué está mal: Google renderiza sus páginas con un navegador real para verlas
como las ve un usuario. Bloquee los recursos que construyen el diseño o inyectan
contenido y Google puede ver una página rota o vacía. Haga esto en su lugar: deje
rastreables /assets/, /static/ o donde viva su CSS/JS; el propio robots.txt de
ejemplo de Google vuelve a permitirlos explícitamente.
Listar rutas sensibles en robots.txt para «ocultarlas».
Por qué está mal: el archivo es público —cualquiera puede leerlo—, así que
Disallow: /admin-panel/` solo le dice al mundo que esa carpeta existe. RFC 9309 deja claro
que el Robots Exclusion Protocol no sustituye a unas medidas válidas de seguridad
del contenido. Haga esto en su lugar: use autenticación o un muro con contraseña para
todo lo que realmente deba permanecer privado.
Confusión con la barra final en una ruta de Disallow.
Por qué está mal: Disallow: /folder (sin barra final) bloquea /folder,
/folder/, /folder-name/ y /folder.html: todo lo que empiece por esa cadena,
porque la coincidencia es por prefijo, no por directorio. Haga esto en su lugar:
añada la barra final (Disallow: /folder/) cuando se refiera solo al directorio, y
pruebe el comportamiento exacto del prefijo contra sus URL reales antes de
desplegar.
Dar por sentado que las reglas no distinguen mayúsculas de minúsculas.
Por qué está mal: los nombres de campo no las distinguen, pero los valores de
ruta sí: Disallow: /Folder/ no hace nada con /folder/. Haga esto en su lugar:
respete exactamente las mayúsculas y minúsculas que usan sus URL, y no dé por hecho
que una regla «debería» funcionar porque a una persona le parece correcta.
Problemas frecuentes
«Bloqueé esta página, pero sigue apareciendo en Google»
- Síntoma: la URL sigue apareciendo en los resultados de búsqueda (normalmente sin descripción) aunque tenga Disallow en robots.txt.
- Causa probable: la URL está enlazada desde otro lugar de la web (o de su propio sitio), así que Google indexó la URL escueta sin haber rastreado nunca su contenido. Bloquear el rastreo nunca iba a eliminarla: no es lo que hace robots.txt.
- Solución: si quiere que desaparezca, añada
noindexa la página y asegúrese de que no esté bloqueada en robots.txt (permita temporalmente el rastreo si ahora lo está). Confirme la corrección con URL Inspection en Search Console una vez que Google la haya vuelto a rastrear.
«Search Console dice “Indexed, though blocked by robots.txt”»
- Síntoma: el informe de páginas de GSC marca exactamente este estado para una o varias URL.
- Causa probable: normalmente es inocuo; es habitual en URL utilitarias (carrito, variantes filtradas o por facetas, parámetros de sesión) que se enlazaron en algún sitio y se indexaron como URL escueta pese al bloqueo.
- Solución: compruebe si las URL marcadas son páginas que sí quería indexar. Si son URL de parámetros prescindibles, este estado es lo esperable y no merece la pena perseguirlo. Si aparece aquí una página que le importa, esa es la trampa de «bloqueo + noindex»: pásela a rastreable + noindex.
«Edité el robots.txt, pero el cambio no parece estar en vivo»
- Síntoma: ha desplegado una corrección, pero una herramienta o Google parecen seguir leyendo las reglas antiguas.
- Causa probable: Google cachea robots.txt hasta unas 24 horas, así que un cambio no se recoge al instante. Aparte, un CDN o un proxy inverso delante de su sitio puede estar sirviendo una copia cacheada obsoleta del propio archivo.
- Solución: primero confirme que el archivo en vivo cambió realmente: descargue
yourdomain.com/robots.txtdirectamente (no a través de una caché) o páselo por el Robots.txt Tester. Si el archivo en vivo es correcto, el retraso es la caché de Google y solo necesita tiempo; consulte el informe de robots.txt en Search Console para ver cuándo lo descargó por última vez.
«El verificador dice que una ruta está permitida, pero Google sigue sin rastrearla»
- Síntoma: robots.txt permite claramente la URL, pero los registros del servidor o Search Console no muestran actividad de rastreo reciente para ella.
- Causa probable: que robots.txt permita una URL no garantiza el rastreo: es necesario, pero no suficiente. La página puede estar huérfana (nada enlaza a ella), faltar en el sitemap o, simplemente, tener poca prioridad en la planificación de rastreo de Google.
- Solución: confirme que la página es localizable (enlaces internos, inclusión en el sitemap) en lugar de volver a revisar robots.txt otra vez: el archivo no es el cuello de botella aquí.
«Mi regla Disallow no parece coincidir con las URL que espero»
- Síntoma: una regla que parece correcta no bloquea (o bloquea de más) las URL previstas.
- Causa probable: distinción de mayúsculas y minúsculas (
/Folder/≠/folder/) o coincidencia por prefijo que abarca más de lo esperado (Disallow: /foldertambién coincide con/folder-name/). - Solución: revise las mayúsculas y minúsculas exactas de sus URL en vivo y añada una barra final si se refería solo al directorio. Pruebe las rutas concretas en el Robots.txt Tester antes de fiarse de la regla.
«Bing dejó de seguir mis reglas por defecto después de que añadiera una sección de bingbot»
- Síntoma: las reglas bajo
User-agent: *que antes se aplicaban a Bing parecen ignorarse después de añadir un grupoUser-agent: bingbot. - Causa probable: Bing (como Google) aplica a un rastreador únicamente el grupo
coincidente más específico. Un grupo específico de
bingbothace que Bing ignore por completo los valores por defecto de*(con la excepción de crawl-delay). - Solución: repita dentro del grupo
bingbottodas las directivas que siga queriendo que se apliquen: tiene que ser autosuficiente.
Pruebas de validación
Ejecute estas pruebas después de editar el robots.txt, antes de dar el cambio por terminado.
Prueba 1: el archivo en sí está en vivo y es correcto
- Prueba que hay que ejecutar:
curl -I https://yourdomain.com/robots.txt(o abra la URL en un navegador) y, por separado, páselo por el Robots.txt Tester. - Resultado esperado:
HTTP/1.1 200y que el verificador muestre exactamente las reglas que quería desplegar. - Interpretación del fallo: un código de estado distinto de 200 significa que el archivo no es accesible como se esperaba (revise el despliegue y el enrutamiento); unas reglas que parecen correctas pero no coinciden con lo que editó suelen indicar que una caché (del CDN o la caché de ~24 h de Google) está sirviendo una copia obsoleta.
- Ventana de seguimiento: inmediata para el código de estado y el contenido; deje pasar hasta unas 24 horas antes de dar por hecho que Google ha recogido el cambio.
- Disparador de reversión: el archivo devuelve un 404s o un 5xxs inesperado, o muestra reglas que no pretendía desplegar.
Prueba 2: la ruta concreta que cambió se comporta como espera
- Prueba que hay que ejecutar: pegue la URL exacta que quería permitir o bloquear en el Robots.txt Tester y consulte el veredicto para Googlebot (y para Bingbot, si procede).
- Resultado esperado: la herramienta informa de «permitida» para una ruta que quería abrir, o de «bloqueada» para una ruta que quería cerrar.
- Interpretación del fallo: el veredicto contrario suele significar que una
regla más larga o más específica en otro punto del archivo prevalece sobre la que
acaba de añadir; busque un
Allow/Disallowcompetidor en una ruta más corta o solapada. - Ventana de seguimiento: inmediata; es una comprobación de coincidencia de reglas, no de rastreo en vivo.
- Disparador de reversión: la ruta probada devuelve el veredicto equivocado después de haber confirmado que el archivo en vivo coincide con lo que editó.
Prueba 3: una página que desbloqueó se rastrea de verdad
- Prueba que hay que ejecutar: URL Inspection de Search Console sobre la URL concreta, fijándose en “Crawl allowed?” y en la fecha del último rastreo.
- Resultado esperado: “Crawl allowed: Yes” y una fecha de rastreo posterior a su cambio en robots.txt.
- Interpretación del fallo: “Crawl allowed: No” después de creer que la desbloqueó significa que Google sigue leyendo reglas cacheadas, o que otra regla del archivo aún coincide con esa ruta. Que todavía no haya una fecha de rastreo nueva no significa necesariamente un fallo: puede que Google aún no haya llegado a ella.
- Ventana de seguimiento: de 2 a 4 semanas para que Google vuelva a rastrear realmente y refleje el cambio; más en sitios grandes o de baja prioridad.
- Disparador de reversión: “Crawl allowed” vuelve a “No” en una comprobación posterior sin que usted haya cambiado el robots.txt; investigue un problema de CDN o de caché.
Prueba 4: no bloqueó otra cosa sin querer
- Prueba que hay que ejecutar: rastree su sitio con Ahrefs Site Audit o Screaming Frog SEO Spider después del cambio y compare la lista de URL «bloqueadas por robots.txt» antes y después.
- Resultado esperado: solo las URL que pretendía bloquear o desbloquear se han movido entre listas; nada más ha cambiado.
- Interpretación del fallo: que aparezca una página inesperada como recién bloqueada suele significar que una regla con comodín o por prefijo ha coincidido con más de lo previsto.
- Ventana de seguimiento: inmediata; ejecute este rastreo justo después de desplegar.
- Disparador de reversión: cualquier página de la que dependa para tráfico orgánico aparece como recién bloqueada.
Prompts listos para copiar
Pegue el contenido real de su robots.txt (y, para el segundo prompt, la lista de URL que le importan) después de cada prompt.
Auditar un archivo robots.txt en busca de conflictos y reglas arriesgadas
I'm going to paste a robots.txt file. Read it as a technical SEO would and
flag:
1. Any Disallow rule that conflicts with an Allow rule on the same or an
overlapping path (tell me which one wins under longest-match rules).
2. Any bare "Disallow: /" under a User-agent group — that blocks everything
for that crawler.
3. Any rule that would block commonly render-critical paths (CSS, JS, fonts,
images used for layout).
4. Any use of noindex, nofollow, or crawl-delay under a Google-facing
User-agent — these are not supported by Google.
5. Anything that looks like it's trying to hide a sensitive path (remember
this file is public).
Here is the file:
<paste robots.txt content>Comprobar si unas URL concretas son rastreables e indexables sin riesgo
I want the following URLs to be crawlable AND indexable by Google. Given this
robots.txt file, tell me for each URL whether it would be blocked from
crawling, and separately remind me that robots.txt says nothing about
indexing — a URL can be blocked from crawling but still indexed if it's
linked elsewhere, and a URL can be crawlable but still noindexed via a meta
tag or header this file can't show you.
Robots.txt:
<paste robots.txt content>
URLs:
<paste list of URLs> Recursos que merecen su tiempo
Mis artículos relacionados
- La historia de bloquear 2 páginas bien posicionadas con Robots.txt — mi propio experimento: bloqueé deliberadamente dos páginas de Ahrefs muy bien posicionadas y seguí lo que ocurrió realmente con las posiciones y el tráfico. La prueba de que bloquear ≠ desindexar.
- La guía para principiantes de SEO técnico — dónde encaja robots.txt en la base de rastreo e indexación.
- Estrategias de SEO empresarial — gestionar robots.txt a escala en sitios grandes.
Mis ponencias
- Cómo funciona la búsqueda (SlideShare) — mi recorrido por rastreo → renderizado → indexación, el proceso que robots.txt regula en el paso de rastreo. (Se aplica la advertencia habitual: “This is my understanding of systems… not going to be 100% complete or accurate.” (traducción) «Esta es mi comprensión de los sistemas… no va a ser 100 % completa ni exacta.»)
De otras personas
- Robots.txt y SEO: todo lo que necesita saber — la guía canónica de Ahrefs, de Joshua Hardwick (no mía): una referencia exhaustiva de sintaxis y recetas.
- Al desindexar páginas de la Búsqueda de Google, use noindex, no Robots.txt — cobertura de Search Engine Roundtable sobre la recomendación de John Mueller: no bloquee con robots.txt cuando quiera sacar páginas del índice; use noindex.
- Google explica por qué las URL bloqueadas por Robots.txt aún pueden indexarse — cobertura de Search Engine Journal del ejemplo de Mueller sobre «añadir al carrito»: las URL bloqueadas pueden seguir indexándose, y “Indexed, though blocked by robots.txt” suele ser inocuo en páginas utilitarias.
- Consejo de Robots.txt de Bing: incluya todas las directivas relevantes si tiene una sección de Bingbot — Search Engine Land sobre el truco de la sección de bingbot: un grupo específico de Bingbot hace que Bing ignore los valores por defecto del comodín, así que hay que repetir todas las directivas que siga queriendo que se apliquen.
- Descripción general de los rastreadores de OpenAI (GPTBot, OAI-SearchBot, ChatGPT-User) — la lista oficial de OpenAI de los tokens de agente de usuario de sus rastreadores, con ejemplos de robots.txt para bloquear por separado el entrenamiento, la búsqueda y las descargas activadas por el usuario.
- r/TechSEO — la comunidad para depurar rastreo e indexación y el estado “Indexed, though blocked by robots.txt”.
Ponga a prueba sus conocimientos: Robots.txt
Cinco preguntas rápidas sobre qué controla robots.txt (y qué no). Elija una respuesta para cada una y después compruebe.
Registro de cambios
Actualizado el 11 ago 2026.
Resumen editorial y detalles registrados del cambio.Detalles del cambio
-
Los detalles del cambio están disponibles actualmente en inglés.
La comparación completa no está disponible: no se archivó una instantánea anterior para esta revisión.
Actualizado el 30 jul 2026.
Resumen editorial y detalles registrados del cambio.Detalles del cambio
-
Los detalles del cambio están disponibles actualmente en inglés.
La comparación completa no está disponible: no se archivó una instantánea anterior para esta revisión.
Actualizado el 19 jul 2026.
Resumen editorial y detalles registrados del cambio.Detalles del cambio
-
Los detalles del cambio están disponibles actualmente en inglés.
La comparación completa no está disponible: no se archivó una instantánea anterior para esta revisión.
Actualizado el 18 jul 2026.
Resumen editorial y detalles registrados del cambio.Detalles del cambio
-
Los detalles del cambio están disponibles actualmente en inglés.
-
Los detalles del cambio están disponibles actualmente en inglés.
-
Los detalles del cambio están disponibles actualmente en inglés.
-
Los detalles del cambio están disponibles actualmente en inglés.
-
Los detalles del cambio están disponibles actualmente en inglés.
La comparación completa no está disponible: no se archivó una instantánea anterior para esta revisión.
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.)