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.txtno gobiernahttps://blog.ejemplo.comnihttp://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.pdfen 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.pdfpero permite/archivo.pdf?vista=1(porque la URL no termina en.pdf).Allow: /pagina$— permite exactamente/paginapero no/pagina/subpaginani/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:
- La regla con la ruta coincidente más larga prevalece.
- Si ambas reglas tienen la misma longitud,
Allowtiene 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-delaypor 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
Sitemapno 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.robotparserde 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.