La coincidencia de reglas en robots.txt no funciona como “gana la última línea”. Entre reglas Allow y Disallow aplicables, importa la coincidencia más específica. RFC 9309 define la regla más específica según la longitud de la ruta que coincide y recomienda Allow cuando dos reglas equivalentes entran en conflicto.
Google aplica la misma idea práctica y soporta dos caracteres especiales útiles: * y $.
Qué significan * y $
*coincide con cero o más caracteres válidos;$marca el final de la URL.
User-agent: *
Disallow: /*.pdf$
Este patrón busca rutas que terminan en .pdf. Sin $ el patrón es más amplio:
Disallow: /*.pdf
Un * al final suele ser innecesario
Para Google, estas reglas tienen un alcance práctico muy parecido:
Disallow: /private
Disallow: /private*
Si quieres referirte claramente a un directorio, usa /private/. Eso evita confundirlo con rutas como /private.html.
La coincidencia más larga gana al orden visual
User-agent: *
Disallow: /products/
Allow: /products/public/
Para /products/public/widget, ambas coinciden, pero /products/public/ es más específica y por tanto se permite.
Cambiar el orden de las líneas no debería ser tu estrategia para modificar el resultado.
Empates entre Allow y Disallow
RFC 9309 indica que, ante reglas equivalentes, debe preferirse Allow. Google también documenta un resultado menos restrictivo en conflictos de la misma especificidad.
Es mejor evitar diseños que dependan de un empate: expresa la política con rutas claramente distintas.
Las rutas distinguen mayúsculas y minúsculas
Disallow: /Admin/
no equivale necesariamente a:
Disallow: /admin/
Los nombres de campo son insensibles a mayúsculas, pero los valores de ruta pueden ser sensibles. Prueba ambas variantes si tu aplicación las sirve.
Parámetros y ecommerce
Es habitual encontrar reglas como:
User-agent: *
Disallow: /*?sort=
Pero el orden de varios parámetros puede cambiar el patrón real. En navegación facetada, simplifica primero la arquitectura y los enlaces internos; no conviertas robots.txt en la única defensa frente a combinaciones ilimitadas.
Prefiere reglas simples
Disallow: /busqueda-interna/
es más fácil de mantener que una colección de patrones complejos. Usa comodines cuando exista una forma repetible que realmente no pueda expresarse con un prefijo estable.
Prueba URLs, no solo el texto
Con estas reglas:
User-agent: *
Disallow: /reports/
Allow: /reports/public/
Disallow: /*.csv$
prueba como mínimo:
/reports/private/quarterly/reports/public/overview/downloads/data.csv/downloads/data.csv?preview=1/REPORTS/private/quarterly
Así detectas errores de prefijo, mayúsculas, anclaje final y solapamiento.
Flujo recomendado
- Escribe la política en lenguaje normal.
- Elige el prefijo más simple.
- Añade
*o$solo si hacen falta. - Prepara URLs que deben permitirse y bloquearse.
- Valida la sintaxis.
- Prueba cada URL para el User-agent correcto.
- Comprueba el
/robots.txtpublicado. - Revisa logs después del cambio.
La idea clave es que la especificidad importa más que la posición de la línea. Usa comodines con moderación y prueba siempre las URLs donde varias reglas puedan coincidir.