- La distinción fundamental: rastreo vs. indexación
- Ubicación y acceso
- Sintaxis completa
- Configuración recomendada para un sitio WordPress
- Errores frecuentes de configuración
- Verificación y testing
- Para profundizar
El archivo robots.txt es el primer punto de contacto entre un rastreador web y un sitio. Es un archivo de texto simple ubicado en la raíz del dominio que indica a los robots automáticos —principalmente los de los buscadores— qué partes del sitio pueden visitar y cuáles no.
Es una de las herramientas más potentes y más malentendidas de la gestión técnica de un sitio web.
La distinción fundamental: rastreo vs. indexación
Antes de entrar en la configuración, es imprescindible entender la diferencia entre rastreo e indexación:
Rastreo: El buscador visita la URL, descarga su contenido y lo procesa. robots.txt controla si el rastreador puede hacer esto.
Indexación: El buscador incluye la URL en su índice para mostrarla en resultados de búsqueda. La directiva noindex en la meta etiqueta robots controla esto.
Son mecanismos distintos con comportamientos distintos:
- Una URL bloqueada en
robots.txtno puede ser rastreada, pero puede aparecer en los resultados de búsqueda si otros sitios enlazan a ella. El buscador sabe que existe (porque alguien la enlaza) pero no sabe qué contiene. - Una URL con
noindexpuede ser rastreada, pero no se incluye en el índice.
Implicación práctica crítica: Si quieres que una página no aparezca en los resultados de búsqueda, el mecanismo correcto es noindex en la meta etiqueta, no robots.txt. Bloquear con robots.txt impide que el buscador lea la directiva noindex, lo que puede producir el resultado contrario al deseado.
Ubicación y acceso
El archivo robots.txt debe estar en la raíz del dominio:
https://www.ejemplo.com/robots.txt
Un archivo robots.txt en un subdirectorio (https://www.ejemplo.com/blog/robots.txt) no tiene efecto. Solo el ubicado en la raíz es válido.
El archivo debe ser accesible públicamente, devolver un código HTTP 200 y estar en texto plano (Content-Type: text/plain).
Sintaxis completa
Estructura básica
User-agent: *
Disallow: /ruta-bloqueada/
Allow: /ruta-bloqueada/excepcion/
User-agent: Googlebot
Disallow: /solo-bloqueado-para-google/
Sitemap: https://www.ejemplo.com/sitemap.xml
Directivas disponibles
User-agent: Especifica a qué rastreador aplica el bloque de reglas. * significa todos los rastreadores. Se pueden especificar rastreadores concretos por su nombre (Googlebot, Bingbot, DuckDuckBot, etc.).
Disallow: Bloquea el rastreo de la ruta especificada y todo lo que hay dentro de ella. Disallow: /wp-admin/ bloquea /wp-admin/ y todas sus subrutas.
Allow: Permite el rastreo de una ruta específica dentro de una ruta bloqueada. Se usa para crear excepciones a un Disallow.
Sitemap: Indica la URL del sitemap XML. Puede aparecer múltiples veces si hay varios sitemaps.
Crawl-delay: Indica el tiempo en segundos que el rastreador debe esperar entre peticiones. No todos los rastreadores lo respetan (Google, en particular, gestiona la velocidad de rastreo de forma propia).
Patrones y comodines
*como comodín: coincide con cualquier secuencia de caracteres.$al final de una ruta: indica el fin exacto de la URL.
Disallow: /*.pdf$ ← bloquea todas las URLs que terminan en .pdf
Disallow: /busqueda/* ← bloquea /busqueda/ y cualquier cosa dentro
Allow: /busqueda/popular/ ← excepción: permite /busqueda/popular/
Configuración recomendada para un sitio WordPress
Un robots.txt bien configurado para WordPress estándar:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-json/
Disallow: /?s=
Disallow: /busqueda/
Disallow: /feed/
Disallow: /*/feed/
Disallow: /trackback/
Disallow: /*/trackback/
Disallow: /xmlrpc.php
Allow: /wp-admin/admin-ajax.php
Sitemap: https://www.ejemplo.com/sitemap.xml
Explicación de cada directiva:
/wp-admin/ — La zona de administración no debe rastrearse. La excepción Allow: /wp-admin/admin-ajax.php es necesaria porque algunos temas y plugins usan este endpoint para peticiones del frontend.
/wp-includes/ — Archivos de núcleo de WordPress. No hay contenido útil para los buscadores aquí.
/wp-json/ — La API REST de WordPress. Devuelve JSON, no contenido HTML para usuarios.
/?s= — Los resultados de búsqueda interna de WordPress usan este parámetro. Bloquear para evitar que se rastreen.
/feed/ y /*/feed/ — Los feeds RSS/Atom de WordPress. Los buscadores no necesitan rastrearlos; el contenido ya está disponible en las URLs canónicas.
/trackback/ — Los endpoints de trackback son obsoletos y no necesitan rastrearse.
/xmlrpc.php — El endpoint XML-RPC es un vector de seguridad frecuentemente atacado. Si no se usa, debe bloquearse.
Errores frecuentes de configuración
Bloquear recursos necesarios para el renderizado. Si se bloquean archivos CSS o JavaScript que el buscador necesita para renderizar las páginas, puede procesar el contenido incorrectamente. Los buscadores modernos renderizan las páginas como un navegador: necesitan acceder a los mismos recursos que el navegador.
Usar robots.txt para ocultar contenido sensible. El robots.txt es público. Bloquear una ruta en robots.txt revela que esa ruta existe. Para contenido verdaderamente privado, la autenticación es la única protección efectiva.
Bloquear todo el sitio accidentalmente. Disallow: / bloquea todo el sitio para todos los rastreadores. Es el error más catastrófico y más fácil de cometer. Siempre verificar el archivo después de cualquier modificación.
robots.txt ausente o devolviendo error. Si el archivo no existe o devuelve un error 500, los rastreadores pueden comportarse de forma imprevisible. Algunos interpretarán la ausencia como “todo permitido”; otros pueden reducir la frecuencia de rastreo del sitio.
Pensar que robots.txt protege el contenido. Un rastreador malintencionado no respeta robots.txt. Solo los rastreadores legítimos (buscadores, herramientas de auditoría bien configuradas) lo respetan. Para proteger contenido, hay que usar autenticación.
Verificación y testing
Antes de publicar cambios en robots.txt:
- Verificar la sintaxis con la herramienta de prueba de robots.txt de Google Search Console.
- Comprobar que URLs importantes no están bloqueadas usando la herramienta de inspección de URLs de Google Search Console.
- Verificar que el archivo es accesible directamente en el navegador:
https://www.ejemplo.com/robots.txt. - Probar las directivas con la herramienta de prueba de robots de Google antes de subir los cambios a producción.