robots.txt: La guía completa para controlar el acceso de crawlers

El archivo robots.txt es una de las herramientas más antiguas y poderosas del arsenal de un webmaster. Situado en la raíz de cada dominio, este archivo de texto plano indica a los crawlers qué partes de tu sitio pueden rastrear y cuáles deben dejar en paz. A pesar de su simplicidad, robots.txt es también uno de los archivos peor configurados de la web. Una sola regla mal colocada puede ocultar un sitio entero a los motores de búsqueda o exponer secciones que pretendías mantener privadas.

Esta guía cubre todo, desde la sintaxis básica hasta los patrones avanzados, para que puedas escribir reglas de robots.txt con total confianza.

Dónde se ubica robots.txt y cómo lo encuentran los crawlers

Todo crawler que sigue el estándar, antes de solicitar cualquier otra URL de un dominio, busca /robots.txt en la raíz:

https://ejemplo.com/robots.txt

Reglas clave sobre el archivo:

  • Debe servirse en la ruta exacta /robots.txt — no /Robots.txt, ni dentro de un subdirectorio.
  • Debe devolver un código de estado 200 con tipo de contenido text/plain. Si el servidor devuelve un 404, los crawlers asumen que todo está permitido. Un error 5xx hace que la mayoría de los crawlers detengan el rastreo hasta que el archivo esté disponible.
  • El archivo aplica por origen (esquema + host + puerto). Una regla en https://ejemplo.com/robots.txt no gobierna https://blog.ejemplo.com ni http://ejemplo.com.
  • El tamaño máximo que respeta Google es de 500 KiB. Todo lo que exceda ese límite se ignora.

Sintaxis básica

Un archivo robots.txt se compone de uno o más grupos de reglas. Cada grupo comienza con una o más líneas User-agent, seguidas de directivas Disallow y/o Allow:

User-agent: Googlebot
Disallow: /privado/
Allow: /privado/pagina-publica.html

User-agent: *
Disallow: /tmp/
Disallow: /interno/

User-agent

La línea User-agent especifica a qué crawler se aplican las reglas siguientes. El comodín * coincide con cualquier crawler que no tenga su propio bloque específico. Los crawlers se emparejan con el bloque de User-agent más específico disponible. Si existen tanto User-agent: * como User-agent: Googlebot, Googlebot usa solo el bloque específico de Googlebot e ignora el bloque comodín por completo.

Disallow

Disallow: /ruta/ indica al crawler que no acceda a ninguna URL que comience con /ruta/. Un Disallow: vacío (sin ruta) significa que nada está prohibido, equivalente a acceso total.

Allow

Allow: /ruta/ permite explícitamente el acceso a las URLs que coincidan con el patrón, incluso si un Disallow más amplio las bloquearía. Esto es esencial para definir excepciones.

Comodines y coincidencia de patrones

La especificación original de robots.txt de 1994 no incluía comodines, pero Google, Bing y la mayoría de los crawlers modernos soportan dos caracteres importantes de coincidencia de patrones:

El asterisco: *

Coincide con cualquier secuencia de caracteres (incluyendo una cadena vacía). Ejemplos:

  • Disallow: /*.pdf — bloquea todas las URLs que contengan .pdf en cualquier parte de la ruta.
  • Disallow: /directorio/*/pagina — bloquea URLs como /directorio/cualquier-cosa/pagina.

El signo de dólar: $

Ancla la coincidencia al final de la URL. Sin $, los patrones coinciden como prefijos. Ejemplos:

  • Disallow: /*.pdf$ — bloquea URLs que terminan en .pdf pero permite /archivo.pdf?vista=1 (porque la URL no termina en .pdf).
  • Allow: /pagina$ — permite exactamente /pagina pero no /pagina/subpagina ni /pagina?q=1.

Allow vs Disallow: ¿cuál prevalece?

Cuando una URL coincide tanto con una regla Allow como con una Disallow, la resolución depende de la especificidad (longitud de la ruta). La implementación de Google sigue esta lógica:

  1. La regla con la ruta coincidente más larga prevalece.
  2. Si ambas reglas tienen la misma longitud, Allow tiene prioridad.

Ejemplo:

User-agent: *
Disallow: /directorio/
Allow: /directorio/publico/

Aquí, /directorio/publico/pagina.html está permitido porque /directorio/publico/ (20 caracteres) es más largo que /directorio/ (12 caracteres). Pero /directorio/secreto.html permanece bloqueado.

Esta es una fuente habitual de confusión. Prueba siempre tus reglas con un validador de robots.txt para confirmar el resultado para URLs específicas.

La directiva Crawl-delay

Crawl-delay solicita que el crawler espere un número determinado de segundos entre peticiones sucesivas:

User-agent: Bingbot
Crawl-delay: 10

Consideraciones importantes:

  • Google ignora Crawl-delay por completo. Para controlar la velocidad de rastreo de Googlebot, usa la configuración de velocidad de rastreo en Google Search Console.
  • Bing lo respeta. Un valor de 10 significa que Bingbot esperará 10 segundos entre peticiones.
  • Yandex, Baidu y otros crawlers también lo respetan, aunque las implementaciones varían.
  • Establecer un valor excesivamente alto (por ejemplo, 60) detiene el rastreo de forma efectiva. Úsalo con moderación y solo cuando tu servidor realmente no pueda gestionar la carga.

La directiva Sitemap

Puedes declarar sitemaps directamente en robots.txt:

Sitemap: https://ejemplo.com/sitemap.xml
Sitemap: https://ejemplo.com/sitemap-noticias.xml

Puntos clave:

  • La directiva Sitemap no está vinculada a ningún bloque User-agent. Colócala al principio o al final del archivo: se aplica globalmente.
  • La URL debe ser completamente cualificada (URL absoluta con esquema).
  • Puedes listar múltiples sitemaps.
  • Es una señal de descubrimiento, no una garantía. Enviar los sitemaps a través de Search Console o Bing Webmaster Tools es más fiable.

Errores frecuentes que rompen el rastreo

1. Bloquear CSS y JavaScript

User-agent: *
Disallow: /assets/
Disallow: /js/
Disallow: /css/

Los motores de búsqueda modernos renderizan las páginas para evaluar el contenido y la maquetación. Si bloqueas los recursos necesarios para el renderizado, el crawler ve una página rota y puede degradarla u omitirla. Bloquea solo los recursos que sean genuinamente irrelevantes para renderizar el contenido público.

2. Usar Disallow para mantener páginas fuera del índice

Disallow impide el rastreo, no la indexación. Si otras páginas enlazan a una URL bloqueada, Google puede indexarla igualmente, pero sin contenido que mostrar, lo que resulta en un listado críptico. Para eliminar una página del índice de verdad, usa una meta etiqueta noindex o una cabecera X-Robots-Tag y permite que el crawler vea la página.

3. Olvidar la barra final

Disallow: /privado   # bloquea /privado, /privado.html, /privadamente, etc.
Disallow: /privado/  # bloquea solo las rutas dentro del directorio /privado/

El primer patrón es más amplio de lo que la mayoría de la gente pretende. Considera siempre si necesitas la barra final.

4. Conflicto entre bloques comodín y específicos

Tener un bloque User-agent: * y un bloque específico para un bot donde este último está vacío, otorga al bot acceso total, incluso si el bloque comodín es restrictivo. Esto es por diseño, pero sorprende a quienes asumen que las reglas se acumulan.

5. Servir robots.txt detrás de una redirección

Si /robots.txt devuelve un 301 o 302, la mayoría de los crawlers seguirán la redirección. Sin embargo, cadenas de redirecciones, bucles de redirección o redirigir a una respuesta que no sea text/plain hará que los crawlers traten el archivo como no disponible. Mantenlo simple: sirve el archivo directamente en la raíz con una respuesta 200.

6. No tener en cuenta los crawlers de IA

Si tu robots.txt solo tiene un bloque User-agent: *, cualquier crawler de IA que no hayas bloqueado explícitamente tendrá el mismo acceso que Googlebot. Considera añadir reglas específicas para bots como GPTBot, ClaudeBot, PerplexityBot y Bytespider.

Cómo probar tu robots.txt

Nunca despliegues cambios en robots.txt sin probarlos. Las herramientas disponibles incluyen:

  • Google Search Console: el probador de robots.txt muestra cómo Google interpreta tus reglas para URLs específicas.
  • Bing Webmaster Tools: funcionalidad de prueba similar para Bingbot.
  • Spider.es: comprueba qué crawlers (motores de búsqueda, bots de IA, herramientas SEO) pueden acceder a cualquier URL de tu dominio, con la regla específica que controla cada veredicto.
  • Herramientas de línea de comandos: bibliotecas como urllib.robotparser de Python permiten automatizar las pruebas en pipelines CI/CD.

Una plantilla sólida para empezar

# Motores de búsqueda: acceso total
User-agent: Googlebot
Allow: /

User-agent: Bingbot
Allow: /
Crawl-delay: 5

# Crawlers de IA: acceso selectivo
User-agent: GPTBot
Disallow: /premium/
Allow: /blog/

User-agent: Google-Extended
Disallow: /

# Por defecto: permitir con restricciones
User-agent: *
Disallow: /admin/
Disallow: /tmp/
Disallow: /buscar?*

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

Adáptala a tus necesidades. El principio es simple: sé explícito con lo que permites, deliberado con lo que bloqueas y prueba antes de desplegar.

Reflexiones finales

robots.txt es engañosamente simple. Unas pocas líneas de texto controlan si millones de personas pueden descubrir tu contenido a través de motores de búsqueda y herramientas de IA. Trátalo con el mismo cuidado que le dedicas a la configuración de seguridad de tu sitio. Audítalo regularmente —especialmente cuando aparezcan nuevos crawlers de IA— y usa herramientas como Spider.es para verificar que tu política real coincide con lo que pretendías.

Volver al blog