Ir al contenido
OneKitly

Cómo escribir un robots.txt: directivas, coincidencia y lo que no puede ocultar

Publicado el 21/5/2026 · 10 min de lectura · Herramientas para desarrolladores

Daniel Okonkwo

Daniel OkonkwoDesarrollador front-end y redactor de Tecnología en OneKitly

Rendimiento web · Formatos de archivo

Verificado con 2 fuentes

Ver perfil
En resumen

Un robots.txt es un archivo de texto UTF-8 simple que debe estar en la ruta de nivel superior de un host, en /robots.txt en minúsculas, y se aplica solo a ese host, protocolo y puerto exactos — https y http, y cada subdominio, necesitan el suyo propio. Contiene grupos. Un grupo empieza con una o más líneas User-agent que nombran a los rastreadores a los que se dirige, con * para todos, y sigue con líneas Disallow y Allow cuyos valores son prefijos de ruta de URL. Una línea Sitemap da la URL absoluta de un mapa del sitio y es independiente de cualquier grupo. Google honra solo user-agent, disallow, allow y sitemap, e ignora cualquier otro campo. En las rutas se admiten dos caracteres especiales: * coincide con cero o más caracteres cualesquiera y $ ancla el final de la URL. Cuando coinciden varias reglas gana la más específica, medida por la longitud de la ruta de la regla en octetos; a igual especificidad gana la menos restrictiva, de modo que un Allow vence a un Disallow de la misma longitud. Lo crucial es lo que el archivo no es. Es una instrucción de rastreo, no un control de acceso ni un mecanismo de desindexación. Una URL no permitida puede seguir apareciendo en los resultados si otros sitios enlazan a ella, porque el enlace y su texto ancla bastan para indexar la dirección sin descargar la página. Una línea noindex en robots.txt no está admitida y no hace nada. Y el archivo es público por definición: cada ruta que prohíbes es una ruta que has anunciado.

Cuatro directivas, dos comodines, un archivo en la raíz del host. Es una instrucción de rastreo y nada más: no retira una página de los resultados, no restringe el acceso y publica cada ruta que enumeras en él.

Una instrucción de rastreo, ni una cerradura ni un borrador

Google lo dice sin rodeos: robots.txt no es un mecanismo para mantener una página fuera de Google, y una página no permitida en robots.txt puede seguir indexándose si otros sitios enlazan a ella. El mecanismo se ve fácil una vez enunciado. Disallow le pide a un rastreador educado que no descargue la URL. No dice nada sobre si la dirección puede aparecer en un índice, y un enlace desde otro sitio aporta lo suficiente — la propia URL, más el texto ancla que apunta a ella — para listar la página sin descargarla jamás. El resultado es el conocido listado de búsqueda con una URL desnuda, sin título tomado de la página ni descripción, justo donde el dueño del sitio creía haberla eliminado.

Las herramientas correctas dependen de lo que quieras de verdad. Para mantener una página fuera de los resultados, sirve un noindex — o una etiqueta meta robots en la cabecera del documento, o una cabecera de respuesta X-Robots-Tag, que además funciona con archivos sin cabecera HTML, como los PDF. Para sustraer un contenido a todo el mundo, ponlo tras autenticación; nada declarativo en un archivo de texto público ha restringido nunca el acceso, y el RFC 9309 lo dice sin rodeos al calificar el protocolo de no sustituto de medidas reales de seguridad. Y hay una trampa de orden para quien combina ambas cosas: si prohíbes una URL, el rastreador nunca la descargará, nunca verá el noindex que le añadiste, y la página puede persistir indefinidamente en el índice. Déjala rastreable hasta que desaparezca y prohíbela después, si todavía quieres.

Cómo funciona la coincidencia: prefijos, dos comodines y la regla más larga

Cada valor de Disallow y Allow se compara como prefijo de la ruta de la URL, así que Disallow: /admin bloquea por igual /admin, /admin/, /administrator y /admin-tools. Añadir una barra final lo estrecha al directorio. Dos caracteres especiales lo afinan: * representa cero o más caracteres cualesquiera y $ ancla el final de la URL, de modo que Disallow: /*.pdf$ bloquea toda URL terminada en .pdf y deja accesible /report.pdf?download=1, porque la cadena de consulta viene después del ancla. Un comodín al final no añade nada: /* es la misma regla que /. Las rutas distinguen mayúsculas, así que /Admin y /admin son dos reglas distintas, aunque los nombres de las directivas no.

Cuando más de una regla coincide con una URL, gana la más específica, y aquí especificidad no significa nada más sofisticado que la longitud de la ruta de la regla en octetos. Disallow: /reports/ y Allow: /reports/public/ coinciden ambas con /reports/public/q3.html; el Allow es más largo, así que el archivo es rastreable. Invierte las longitudes y gana el Disallow. Si dos reglas coincidentes miden exactamente lo mismo, el empate va a la menos restrictiva, es decir al Allow. El orden en el archivo es irrelevante — un Disallow escrito después de un Allow no lo anula, y solo esto explica buena parte de los robots.txt que no se comportan como los lee su autor. Otros dos límites que conviene saber: Google lee como mucho 500 kibibytes e ignora todo lo posterior, y un valor Disallow vacío significa que no se bloquea nada, la forma idiomática de escribir un grupo que lo permite todo.

Dónde vive el archivo y por qué anuncia lo que querías ocultar

La regla de ubicación es absoluta y no admite configuración. El RFC 9309 exige que las reglas sean accesibles en un archivo llamado /robots.txt, todo en minúsculas, en la ruta de nivel superior del servicio, y Google añade que se aplican solo al host, protocolo y puerto donde el archivo está alojado. Léelo con atención, porque las consecuencias hacen tropezar constantemente. Un archivo en https://example.com/robots.txt no gobierna nada en http://example.com, nada en https://shop.example.com y nada en https://example.com:8443 — cada una de esas direcciones es un origen distinto que necesita su propio archivo. Un archivo colocado en un subdirectorio no se lee en absoluto. Y un sitio tras un CDN o un proxy inverso vale lo que valga su enrutado: si la plataforma sirve su propio robots.txt en la raíz, el tuyo de la aplicación no llega a ejecutarse.

Ahora la parte sin rodeos. El archivo se sirve a quien lo pida, no tiene autenticación y es con diferencia lo primero que lee un escáner automatizado. Escribir Disallow: /internal/backup-2019/ no oculta ese directorio: publica su existencia, su ruta exacta y el hecho de que lo consideraste digno de ocultar, en un documento que has invitado a leer a todo internet. Todas las herramientas de reconocimiento jamás escritas empiezan ahí, exactamente por eso. Si una ruta no debe alcanzarse, ponla tras autenticación o sácala del host público; si solo no debe rastrearse, prohíbe un prefijo padre amplio en lugar de nombrar la hoja sensible. Y trata el archivo como código: guárdalo en control de versiones, revisa los cambios como cualquier otro despliegue y compruébalo tras cada migración de plataforma, porque un Disallow: / perdido que llega a producción es la forma más rápida de retirar un sitio entero de la búsqueda y una de las más lentas de la que recuperarse.

Las líneas que puedes poner en un robots.txt y las dos que la gente escribe igualmente
LíneaQué haceEstadoLa trampa
User-agent: *Abre un grupo y nombra a los rastreadores a los que se dirige; * se dirige a cualquier rastreador sin grupo propioRespetadaUn rastreador obedece exactamente a un grupo — el más específico que lo nombra — e ignora por completo el grupo * en cuanto tiene el suyo
Disallow: /pathPide a los rastreadores de este grupo que no descarguen ninguna URL cuya ruta empiece por ese prefijoRespetadaBloquea la descarga, no la indexación — una URL bloqueada y enlazada desde fuera puede seguir listada en resultados, sin fragmento
Allow: /path/fileRecorta una excepción dentro de un Disallow más amplio del mismo grupoRespetadaSolo gana si su ruta es más larga que el Disallow al que se enfrenta; a igual longitud gana el Allow, más corta pierde
Sitemap: https://…/sitemap.xmlSeñala un mapa del sitio a los rastreadores; puede aparecer en cualquier parte del archivo y no pertenece a ningún grupoRespetadaEl valor debe ser una URL absoluta completa con el esquema incluido; una ruta relativa se descarta en silencio
Crawl-delay: 10Pide a un rastreador que espere entre peticiones; extensión de fabricante, nunca parte del protocoloIgnorada por GoogleAlgunos rastreadores la respetan y otros no, así que no sirve para controlar la carga; limita el ritmo en el servidor
Noindex: /pathNada. Parece que debería retirar una página del índice y no lo haceNo admitidaUsa una etiqueta meta robots noindex en la cabecera de la página, o una cabecera de respuesta X-Robots-Tag, y deja la URL rastreable para que la regla pueda leerse
Generador de robots.txtCrea un robots.txt correcto a partir de campos estructurados: el rastreador objetivo, las rutas a permitir y bloquear, uno o varios sitemaps (las rutas relativas se hacen absolutas), y líneas opcionales crawl-delay y host. Gestiona cómo rastrean los buscadores tu sitio — recuerda que es una directiva de rastreo, no una barrera de seguridad.Probar la herramienta

Preguntas frecuentes

¿Puedo usar robots.txt para mantener una página privada fuera de Google?
No, en ambos sentidos. Google dice sin rodeos que robots.txt no es un mecanismo para mantener una página fuera de Google, y una URL prohibida enlazada desde cualquier otro sitio puede seguir listándose usando solo el enlace y su texto ancla. Tampoco es privada en ningún sentido real: robots.txt es solo una petición, respetada por los buscadores e ignorada por todo lo que tenga interés en ignorarla, y el propio archivo difunde la ruta. Para la visibilidad en búsqueda usa un noindex, servido como etiqueta meta robots o como cabecera X-Robots-Tag. Para privacidad de verdad usa autenticación. Son dos problemas distintos y robots.txt no resuelve ninguno.
¿Los subdominios y http frente a https comparten un solo robots.txt?
No. Las reglas se aplican solo al host, protocolo y puerto exactos que sirvieron el archivo, así que https://example.com, http://example.com, https://www.example.com y https://api.example.com son cuatro ámbitos distintos que necesitan cuatro archivos distintos — aunque resuelvan al mismo servidor y a la misma raíz de documentos. Es el segundo error de configuración más común, tras colocar el archivo en un subdirectorio, donde no se lee jamás. Consecuencia práctica: si rediriges http a https, el rastreador sigue la redirección para descargar el archivo, así que la copia https gobierna ambos de hecho; si no rediriges, el origen http no tiene reglas y se rastrea libremente.
Prohibí una página pero sigue en los resultados. ¿Y ahora qué?
Es el comportamiento esperado, y la solución es invertir el orden de las operaciones. Quita el Disallow para que la página vuelva a ser rastreable, añade un noindex — etiqueta meta robots o cabecera X-Robots-Tag — y espera a que la página se vuelva a rastrear y desaparezca. El enfoque original falló por circularidad: mientras la URL está prohibida el rastreador nunca la descarga, así que nunca ve el noindex que le pusiste, y el listado construido a partir de enlaces entrantes persiste indefinidamente. Una vez que la página ha salido del índice puedes restablecer el Disallow para ahorrar presupuesto de rastreo, aunque a esas alturas suele aportar muy poco.

Artículos que podrían interesarte

Todas las guías
GuíaCódigos de estado HTTP explicados: los que de verdad se confunden301 frente a 308, 302 frente a 307, 401 frente a 403, 404 frente a 410 — y qué promete de verdad Retry-After en un 429 o un 503. Los pares donde elegir mal el código cambia el comportamiento, no solo la redacción.TutorialCómo escribir una expresión cron: cinco campos y la regla OR que nadie mencionaMinuto, hora, día del mes, mes, día de la semana. Las trampas: un paso es un avance dentro de un rango y no un intervalo, y los dos campos de día se combinan con OR — así que 0 0 1 * 1 se dispara el día 1 y todos los lunes.ExplicaciónCómo funcionan los permisos de archivo en Unix: leer 755 sin adivinarLectura 4, escritura 2, ejecución 1, y cada uno de los tres dígitos describe a una parte distinta. Lo que casi todas las explicaciones fallan es qué hace el bit de ejecución en un directorio: concede el paso, no el derecho a ejecutar nada.GuíaQué hace bueno a un slug de URL: estabilidad, legibilidad y el conflicto entre ambasUn slug tiene dos trabajos que tiran en sentidos opuestos: es un identificador permanente y es un texto legible. Longitud, guiones, palabras vacías, fechas, caracteres no ASCII y el patrón identificador + slug que consigue ambas propiedades — con las cifras reales de un sitio que localiza 1736 slugs de herramientas a seis idiomas.GuíaEtiquetas title, meta descripciones, y qué hacen con ellas los buscadoresLo que dice la propia documentación de Google sobre reescribir títulos y sobre la meta descripción, en vez de lo que dice el folclore SEO. Luego la parte medible: los títulos se truncan por ancho en píxeles, así que dos títulos de exactamente sesenta caracteres pueden renderizarse con 204,55 píxeles de diferencia y solo uno sobrevive.ExplicaciónLa densidad de palabras clave es una métrica muerta, y esto es lo que la sustituyóLa densidad contaba ocurrencias porque la recuperación contaba ocurrencias. TF-IDF, luego BM25 con su curva de saturación, luego los embeddings la sustituyeron. Aquí va la misma página de 800 palabras puntuada de tres formas, y por qué las tres discrepan.

Herramientas relacionadas

Fuentes

¿Has detectado un error en este artículo?