Robots.txt: guía completa de configuración para SEO
Cómo afecta robots.txt al rastreo, dónde no puede controlar la indexación y cómo probar las directivas sin bloquear páginas que necesitas que se encuentren.
Robots.txt es un archivo de texto plano en la raíz del sitio que indica a los rastreadores de los buscadores qué secciones pueden visitar y cuáles deben evitar. Es lo primero que lee un rastreador al llegar a tu sitio. El archivo existe desde 1994 y sigue siendo el estándar de facto para controlar el rastreo.
La limitación clave: una página bloqueada con Disallow no desaparece del índice de forma automática. Si otros sitios enlazan a ella, Google puede indexar la URL sin visitarla y mostrar un snippet vacío en los resultados de búsqueda. Para eliminar por completo una página del índice necesitas otras herramientas.
Qué es robots.txt y sus limitaciones
El archivo robots.txt debe estar en la raíz del dominio: https://example.com/robots.txt. Los subdominios tienen sus propios archivos: el de blog.example.com está en https://blog.example.com/robots.txt. El Robots Exclusion Standard (REP) define las directivas básicas; Google y Yandex lo han ampliado con funciones adicionales.
Control del rastreo
Impide que los bots visiten ciertas secciones: reduce la carga innecesaria en el servidor y protege el presupuesto de rastreo para las páginas valiosas.
Indica el sitemap
La directiva Sitemap ayuda a los buscadores a encontrar tu sitemap XML de inmediato, sin configuración adicional.
No protege el contenido
Robots.txt es público. No cifra ni oculta el contenido de las páginas: solo pide a los bots que no las visiten.
Formato y sintaxis
El archivo se compone de bloques llamados registros. Cada registro empieza con una o más directivas User-agent y puede incluir cualquier número de líneas Disallow, Allow, Crawl-delay y Sitemap. Los registros se separan con una línea en blanco. Los comentarios empiezan con #.
| Directiva | Compatibilidad | Descripción |
|---|---|---|
| User-agent | Todos | Identificador del bot. * significa «todos los rastreadores». Un mismo bloque puede tener varias líneas User-agent. |
| Disallow | Todos | Ruta que no se puede rastrear. Un valor vacío significa «no se bloquea nada» (permitir todo). |
| Allow | Google, Yandex | Permite explícitamente una ruta dentro de una sección bloqueada. Tiene prioridad sobre Disallow. |
| Crawl-delay | Yandex, Bing | Retardo mínimo en segundos entre las peticiones del bot. Google lo ignora. |
| Sitemap | Google, Yandex, Bing | URL absoluta del sitemap XML. Se permiten varias líneas Sitemap. |
Comodines: * y $
Google y Yandex admiten dos caracteres comodín en las rutas de Disallow y Allow. El asterisco * equivale a cualquier secuencia de caracteres (incluida la cadena vacía). El signo de dólar $ marca el final de la URL: coincidencia exacta hasta el último carácter.
# Block all URLs with the ?sort= parameter
Disallow: /*?sort=
# Block only /page (exact match, not /page/child)
Disallow: /page$
# Block all PDFs across the entire site
Disallow: /*.pdf$La directiva Sitemap puede ir en cualquier parte del archivo; no hace falta que esté dentro de un bloque User-agent concreto. Usa siempre una URL absoluta completa:
Sitemap: https://example.com/sitemap.xmlEjemplos listos para distintos escenarios
Escenario 1: sitio público sencillo
En un sitio pequeño sin secciones privadas basta con un archivo mínimo: permitir todo, bloquear el panel de administración y las rutas técnicas, e indicar el sitemap.
# robots.txt for example.com — simple public site
User-agent: *
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Sitemap: https://example.com/sitemap.xmlEscenario 2: gran e-commerce con catálogo y páginas con parámetros
Una tienda online genera cientos de miles de URL a través de filtros, ordenación y paginación. La mayoría son duplicados o páginas sin valor propio. Bloquea las URL con parámetros usando Disallow con comodines y deja accesibles las páginas limpias de categorías y productos.
# robots.txt for e-commerce example.com
User-agent: *
# Technical and admin sections
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart
Disallow: /account/
Disallow: /api/
# Parametric catalogue duplicates
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?page=
Disallow: /*?ref=
Disallow: /search
# Explicitly allow a useful parameter in one section
Allow: /catalog/shoes?size=
Crawl-delay: 1
Sitemap: https://example.com/sitemap.xmlEscenario 3: sitio con páginas de staging y temporales
Las landings de webinars, los borradores, las páginas plantilla y las secciones de staging deben quedar fuera del rastreo. Usa Disallow por prefijo de ruta y, si hace falta, un bloque aparte para bots concretos.
# robots.txt for example.com — main site with staging sections
User-agent: *
Disallow: /webinar-drafts/
Disallow: /templates/
Disallow: /staging/
Disallow: /_preview/
Disallow: /thank-you-test
# Block the entire site for a specific bot (e.g. an aggressive crawler)
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
Sitemap: https://example.com/sitemap.xmlDisallow vs meta robots noindex vs X-Robots-Tag
Son tres herramientas distintas con funciones distintas. Confundirlas lleva a un error clásico: una página está bloqueada en robots.txt y, además, tiene una metaetiqueta noindex. Google no puede leer esa metaetiqueta porque la página está bloqueada para el rastreo, así que la directiva noindex nunca se ejecuta.
| Herramienta | Dónde está | Qué hace | Cuándo usarla |
|---|---|---|---|
| Disallow en robots.txt | robots.txt | Impide que el bot visite la URL. No la elimina del índice si ya está ahí. | Bloquear secciones técnicas y reducir el consumo innecesario de presupuesto de rastreo. |
| meta robots noindex | HTML <head> | Permite que el bot visite la página, pero prohíbe añadirla al índice. El bot lee la etiqueta y cumple la directiva. | Quitar una página concreta del índice (páginas de «gracias», paginación, páginas de filtros). |
| X-Robots-Tag | Cabecera de respuesta HTTP | Equivale a meta robots, pero funciona con cualquier tipo de archivo: PDF, imágenes, documentos. | Controlar la indexación de recursos que no son HTML (PDF, DOCX, imágenes). |
Ejemplo de X-Robots-Tag en una cabecera de respuesta HTTP (configurada en Nginx o en el código de la aplicación):
# Nginx: prevent indexation of all PDFs
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow";
}Cómo probar robots.txt
Valida siempre los cambios antes de publicarlos. Una sola errata puede bloquear todo el sitio para los rastreadores.
- Google Search Console → Probador de robots.txt: integrado en GSC. Introduce una URL para comprobar si Googlebot y otros bots de Google pueden acceder o si están bloqueados.
- Yandex Webmaster → Análisis de robots.txt: la herramienta equivalente para Yandex. Muestra cómo interpreta Yandex Bot tu archivo.
- Screaming Frog SEO Spider → Configuración → Robots.txt: rastrea el sitio respetando robots.txt y enumera las URL bloqueadas en el informe.
- curl: comprobación rápida desde la línea de comandos para leer el archivo y verificar el estado HTTP.
# Fetch robots.txt and inspect its contents
curl -s https://example.com/robots.txt
# Check HTTP status (must be 200)
curl -I https://example.com/robots.txtErrores habituales y cómo corregirlos
| Error | Síntoma | Solución |
|---|---|---|
| Disallow: / para todo el sitio | Googlebot deja de rastrear todo. GSC muestra las páginas como «bloqueadas por robots.txt». | Elimina la línea o sustitúyela por una ruta concreta. Suele colarse durante los despliegues. |
| Espacio accidental en la ruta | Disallow: /admin / (con espacio): el bot lee la ruta literalmente y no se bloquea nada. | Elimina los espacios. Las rutas distinguen mayúsculas y minúsculas y son sensibles a los espacios. |
| noindex + Disallow en la misma página | La página se queda en el índice; la directiva noindex nunca se ejecuta. | Quita el Disallow y deja solo el noindex. El bot debe poder visitar la página para leer la etiqueta. |
| Falta User-agent antes de las reglas | Error de sintaxis: las reglas no se aplican a ningún bot. | Añade User-agent: * antes del bloque Disallow/Allow. |
| robots.txt devuelve 404 o 500 | Un 404 se trata como «sin restricciones»; un 500 detiene el rastreo de forma temporal. | Asegúrate de que responde con HTTP 200. Un archivo vacío equivale a «permitir todo». |
Recomendaciones de seguridad
Robots.txt es público y lo indexan los buscadores: cualquiera puede leerlo. Publicar en robots.txt rutas a paneles de administración, copias de seguridad, APIs internas o archivos de configuración equivale, en la práctica, a entregar a un atacante un mapa de tu sitio.
- No expongas rutas sensibles: copias de seguridad (.zip, .sql), archivos de configuración (.env, config.php) y APIs internas.
- Protege las secciones confidenciales en el servidor: HTTP Basic Auth, lista de IP permitidas u OAuth, y no solo con robots.txt.
- Mantén la lista de Disallow al mínimo: solo las rutas que realmente deban quedar fuera del rastreo por motivos de SEO.
- Revisa robots.txt en GSC con regularidad: comprueba que ningún despliegue haya introducido un Disallow: / por error.
Lista de comprobación y ejemplo final
- El archivo es accesible en https://example.com/robots.txt y devuelve HTTP 200
- Codificación UTF-8, sin BOM (Byte Order Mark)
- Cada bloque empieza con User-agent
- Una línea en blanco separa los bloques de distintos User-agent
- No hay combinación de Disallow + noindex en la misma página
- No hay rutas sensibles expuestas públicamente
- Crawl-delay configurado para Yandex si la carga del servidor es alta
- La directiva Sitemap apunta al archivo índice raíz
- El archivo está validado en GSC y en Yandex Webmaster
- Screaming Frog muestra el número esperado de URL bloqueadas
Ejemplo final de robots.txt para example.com con comentarios: una plantilla universal que cubre la mayoría de los escenarios:
# robots.txt for example.com
# Updated: 2026-05-15
# Rules for all crawlers
User-agent: *
# Admin and auth sections
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Disallow: /account/
# Technical paths
Disallow: /api/
Disallow: /_next/
Disallow: /cdn-cgi/
# Parametric duplicates (e-commerce)
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?ref=
Disallow: /search
# Staging and temporary pages
Disallow: /staging/
Disallow: /webinar-drafts/
Disallow: /templates/
# Explicit allow for a useful API path
Allow: /api/og-image/
# Crawl rate for Yandex
User-agent: Yandex
Crawl-delay: 1
# Aggressive SEO bots (optional)
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
# Sitemap
Sitemap: https://example.com/sitemap.xmlPreguntas frecuentes
¿Robots.txt afecta al posicionamiento?
¿Qué pasa si robots.txt devuelve 404?
¿Puedo definir reglas distintas para Googlebot y Yandex en un mismo archivo?
¿Disallow: / bloquea todo el sitio? ¿Cómo lo arreglo rápido?
¿Cómo bloqueo un solo archivo sin bloquear todo su directorio?
Check it with SpiderHead
Free and local: run the audit on your own machine.



