¿Cómo interpreta Google la especificación robots.txt?
Los rastreadores automáticos de Google admiten el protocolo de exclusión para robots (REP). Es decir, antes de rastrear un sitio, los rastreadores de Google descargan y analizan el archivo robots.txt del sitio para extraer información sobre las partes del sitio que se pueden rastrear. El protocolo REP no se aplica a los rastreadores de Google controlados por los usuarios (por ejemplo, las suscripciones a feeds) ni a los rastreadores que se usan para aumentar la seguridad de los usuarios (por ejemplo, el análisis de software malicioso).
En esta página se describe la interpretación que hace Google del REP. Para comprobar el estándar original, consulta el estándar RFC 9309.
¿Qué es un archivo robots.txt?
Si no quieres que los rastreadores accedan a determinadas secciones de tu sitio, puedes crear un archivo robots.txt que incluya las reglas pertinentes. Un archivo robots.txt es un archivo de texto simple que contiene reglas sobre qué rastreadores pueden acceder a distintas partes de un sitio. Por ejemplo, el archivo robots.txt de example.com podría ser algo parecido a esto:
# This robots.txt file controls crawling of URLs under https://example.com. # All crawlers are disallowed to crawl files in the "includes" directory, such # as .css, .js, but Google needs them for rendering, so Googlebot is allowed # to crawl them. User-agent: * Disallow: /includes/ User-agent: Googlebot Allow: /includes/ Sitemap: https://example.com/sitemap.xml
Si aún no te has familiarizado con los archivos robots.txt, consulta nuestra introducción a los archivos robots.txt. También puedes consultar consejos para crear un archivo robots.txt y una amplia lista de preguntas frecuentes y sus respuestas.
Ubicación del archivo y periodo de validez
Debes colocar el archivo robots.txt en el directorio de nivel superior de un sitio y debes usar en él un protocolo compatible. En la URL del archivo robots.txt se distingue entre mayúsculas y minúsculas, al igual que en las demás URLs. En el caso de la Búsqueda de Google, los protocolos compatibles son HTTP, HTTPS y FTP. En HTTP y HTTPS, los rastreadores obtienen el archivo robots.txt con una solicitud HTTP GET
no condicional. En FTP, los rastreadores utilizan un comando RETR (RETRIEVE)
estándar con credenciales de acceso anónimas.
Las reglas que se incluyen en el archivo robots.txt se aplican únicamente al host, al protocolo y al número de puerto en el que se aloja el archivo robots.txt.
Ejemplos de URLs de archivo robots.txt válidas
En la siguiente tabla se incluyen ejemplos de URLs de robots.txt y para qué rutas de URL son válidas. La primera columna contiene la URL de un archivo robots.txt, y la segunda columna contiene los dominios a los que se aplicaría o no el archivo robots.txt.
Ejemplos de URLs de archivo robots.txt | |
---|---|
https://example.com/robots.txt |
Este es el caso más habitual. No es válida para otros subdominios, protocolos o números de puerto. Es válida para todos los archivos de todos los subdirectorios del mismo host, protocolo y número de puerto. Válida para:
|
https://www.example.com/robots.txt |
Un archivo robots.txt de un subdominio solo es válido para ese subdominio.
Válida para:
No válida para:
|
https://example.com/folder/robots.txt |
No es un archivo robots.txt válido porque los rastreadores no buscan este tipo de archivo en subdirectorios. |
https://www.exämple.com/robots.txt |
Los nombres de dominio internacionalizados (IDN) son equivalentes a sus versiones en Punycode. Consulta también RFC 3492. Válida para:
No válida para:
|
ftp://example.com/robots.txt |
Válida para:
No válida para:
|
https://212.96.82.21/robots.txt |
Los archivos robots.txt cuyo nombre de host sea una dirección IP únicamente son válidos para rastrear el contenido que tenga esa dirección IP como nombre de host. No son válidos automáticamente para rastrear todos los sitios web que se alojen en esa dirección IP. No obstante, si los archivos robots.txt están compartidos, también estarán disponibles en el nombre de host compartido.
Válida para:
No válida para:
|
https://example.com:443/robots.txt |
Los números de puerto estándar ( Válida para:
No válida para:
|
https://example.com:8181/robots.txt |
Los archivos robots.txt situados en números de puerto que no sean estándar solo serán válidos para rastrear el contenido disponible a través de esos números de puerto.
Válida para:
No válida para:
|
Gestionar errores y códigos de estado HTTP
Al solicitar un archivo robots.txt, el código de estado HTTP de la respuesta del servidor influye en cómo utilizarán los rastreadores de Google el archivo robots.txt. En la siguiente tabla se resume cómo trata el robot de Google los archivos robots.txt en función del código de estado HTTP.
Gestionar errores y códigos de estado HTTP | |
---|---|
2xx (success) |
Los códigos de estado HTTP que muestran una operación correcta indican a los rastreadores de Google que procesen el archivo robots.txt que proporciona el servidor. |
3xx (redirection) |
Google sigue al menos cinco redirecciones según lo definido en RFC 1945 y luego se detiene y lo trata como Google no sigue las redirecciones lógicas en los archivos robots.txt (redirecciones de actualizaciones de metaetiquetas, de JavaScript o de marcos). |
4xx (client errors) |
Los rastreadores de Google tratan todos los errores |
5xx (server errors) |
Como el servidor no ha podido responder a la solicitud del archivo robots.txt de Google, Google interpreta temporalmente los errores del servidor
Si necesitas suspender temporalmente el rastreo, te recomendamos que sirvas un código de estado HTTP
Si podemos determinar que un sitio se ha configurado de forma incorrecta para devolver un error |
Otros errores | Si no se puede acceder a un archivo robots.txt debido a un problema de DNS o de red (por ejemplo, porque se ha agotado el tiempo de espera, se ha devuelto una respuesta no válida, o se ha desactivado o perdido la conexión), o a causa de errores de fragmentación de HTTP, se seguirá el mismo procedimiento que si se hubiera producido un error del servidor. |
Almacenamiento en caché
Por lo general, Google almacena en caché el contenido del archivo robots.txt durante un máximo de 24 horas, pero puede permanecer más tiempo si no se puede actualizar (por ejemplo, debido a tiempos de espera agotados o a errores 5xx
). La respuesta almacenada en caché puede compartirse con diferentes rastreadores.
Google puede aumentar o disminuir el ciclo de duración de la caché en función de los encabezados HTTP max-age Cache-Control.
Formato de archivo
El archivo robots.txt debe estar codificado en UTF-8 como texto sin formato y las líneas deben estar separadas por CR
, CR/LF
o LF
.
Google ignora las líneas no válidas en los archivos robots.txt, incluida la marca de orden de bytes de Unicode al principio del archivo robots.txt, y solo usa líneas válidas. Por ejemplo, si el contenido descargado es HTML y no reglas de robots.txt, Google tratará de analizarlo y extraer reglas, e ignorará todo lo demás.
Del mismo modo, si la codificación de caracteres del archivo robots.txt no es UTF-8, Google puede ignorar los caracteres que no formen parte del intervalo de UTF-8, lo que puede provocar que las reglas de robots.txt no sean válidas.
De momento, Google aplica un límite de tamaño a los archivos robots.txt de 500 kibibytes (KiB). El contenido que supere el tamaño máximo de archivo se ignorará. Si tu archivo robots.txt es demasiado grande, combina reglas para reducir su tamaño. Por ejemplo, coloca el material que quieres excluir en otro directorio.
Sintaxis
Las líneas del archivo robots.txt que son válidas están formadas por un campo, dos puntos (:) y un valor. Los espacios son opcionales, aunque recomendamos utilizarlos para mejorar la legibilidad del archivo. Se ignoran los espacios que haya al comienzo y al final de una línea. Si quieres incluir algún comentario, empiézalo con el carácter #
. Ten en cuenta que se ignorará todo lo que venga después del carácter #
. El formato general es <field>:<value><#optional-comment>
.
Google admite los siguientes campos:
user-agent
: identifica al rastreador al que se aplican las reglas.allow
: ruta de URL que se puede rastrear.disallow
: ruta de URL que no se puede rastrear.sitemap
: URL completa de un sitemap.
Los campos allow
y disallow
también se denominan "reglas". Estas reglas se especifican con el formato rule: [path]
, en el que el valor [path]
es opcional. De forma predeterminada, no se aplican restricciones de rastreo a los rastreadores especificados. Los rastreadores ignoran las reglas que no incluyan [path]
.
Si se especifica, el valor [path]
hace referencia a la raíz del sitio web desde la que se ha obtenido el archivo robots.txt, con el mismo protocolo, número de puerto, nombre de dominio y nombre de host.
El valor de la ruta debe empezar por /
, que indica la raíz, y en él se distingue entre mayúsculas y minúsculas. Más información sobre las coincidencias de URL en función de los valores de ruta
user-agent
La línea user-agent
identifica al rastreador al que se aplican las reglas. Consulta la lista completa de cadenas de user-agent y rastreadores de Google que puedes usar en tu archivo robots.txt.
El valor de la línea user-agent
no distingue entre mayúsculas y minúsculas.
disallow
La regla disallow
especifica las rutas a las que los rastreadores no pueden acceder según la línea user-agent
con la que se agrupa la regla disallow
.
Los rastreadores ignoran las reglas que no tengan una ruta.
Google no puede indexar el contenido de páginas que no pueden rastrearse, pero sí que puede indexar la URL y mostrarla en los resultados de búsqueda sin un fragmento. Consulta cómo bloquear la indexación.
En el valor de la regla disallow
se distingue entre mayúsculas y minúsculas.
Uso:
disallow: [path]
allow
La regla allow
especifica las rutas a las que los rastreadores indicados pueden acceder. Cuando no se especifica ninguna ruta, se ignora la regla.
En el valor de la regla allow
se distingue entre mayúsculas y minúsculas.
Uso:
allow: [path]
sitemap
Google, Bing y otros buscadores principales admiten el campo sitemap
en archivos robots.txt, tal como se define en sitemaps.org.
En el valor del campo sitemap
se distingue entre mayúsculas y minúsculas.
Uso:
sitemap: [absoluteURL]
La línea [absoluteURL]
dirige a la ubicación de un archivo de sitemap o de índice de sitemaps.
Debe ser una URL cualificada, por lo que tiene que incluir el protocolo y el host. No hace falta que esté codificada ni que esté en el mismo host que el archivo robots.txt. Puedes especificar varios campos sitemap
. El campo del sitemap no está vinculado a ningún user-agent concreto, y todos los rastreadores pueden seguirlo, siempre que no se les haya prohibido.
Por ejemplo:
user-agent: otherbot disallow: /kale sitemap: https://example.com/sitemap.xml sitemap: https://cdn.example.org/other-sitemap.xml sitemap: https://ja.example.org/テスト-サイトマップ.xml
Agrupación de líneas y reglas
Para agrupar reglas que se aplican a varios user-agents, repite las líneas user-agent
en cada rastreador.
Por ejemplo:
user-agent: a disallow: /c user-agent: b disallow: /d user-agent: e user-agent: f disallow: /g user-agent: h
En este ejemplo hay cuatro grupos de reglas distintos:
- Un grupo para el user-agent "a".
- Un grupo para el user-agent "b".
- Un grupo para los user-agents "e" y "f".
- Un grupo para el user-agent "h".
Para ver la descripción técnica de un grupo, consulta la sección 2.1 del REP.
Orden de prioridad de los user-agents
Solo se le puede aplicar un grupo a cada rastreador. Para determinar qué grupo de reglas es el correcto, los rastreadores de Google buscan en el archivo robots.txt el grupo que tenga el user-agent más específico y que coincida con el del rastreador. Los demás grupos se ignoran. La parte de texto que no coincida se ignora; por ejemplo, tanto googlebot/1.2
como googlebot*
son equivalentes a googlebot
. No importa el orden en el que aparezcan los grupos dentro del archivo robots.txt.
Si hay más de un grupo declarado que afecta a un user-agent concreto, todas las reglas de esos grupos se unifican en un solo grupo. Ni los grupos específicos de user-agents ni los grupos globales (*
) se unifican.
Ejemplos
Coincidencia de los campos user-agent
user-agent: googlebot-news (group 1) user-agent: * (group 2) user-agent: googlebot (group 3)
Los rastreadores elegirían el grupo pertinente del siguiente modo:
Grupo seguido por un rastreador | |
---|---|
Googlebot-News |
googlebot-news sigue el grupo 1, porque es el grupo más específico.
|
Googlebot (Web) | googlebot sigue el grupo 3. |
Googlebot Storebot |
Storebot-Google sigue el grupo 2 porque no hay ningún grupo Storebot-Google específico.
|
Googlebot-News (cuando se rastrean imágenes) |
Al rastrear las imágenes, googlebot-news sigue el grupo 1.
googlebot-news no rastrea las imágenes de Google Imágenes, por lo que solo sigue el grupo 1.
|
Otros robots (Web) | Otros rastreadores de Google siguen el grupo 2. |
Otros robots (Noticias) |
Otros rastreadores de Google que rastrean contenido de noticias, pero que no se identifican como googlebot-news , siguen el grupo 2. Aunque haya una entrada de un rastreador relacionado, solo se siguen las que coinciden de forma específica.
|
Agrupación de reglas
Si hay varios grupos en un archivo robots.txt que son importantes para un user-agent concreto, los rastreadores de Google los combinarán internamente. Por ejemplo:
user-agent: googlebot-news disallow: /fish user-agent: * disallow: /carrots user-agent: googlebot-news disallow: /shrimp
Los rastreadores agrupan las reglas en función del user-agent. Por ejemplo:
user-agent: googlebot-news disallow: /fish disallow: /shrimp user-agent: * disallow: /carrots
El analizador robots.txt ignora cualquier regla que no sea allow
, disallow
y user-agent
. Es decir, el siguiente fragmento de robots.txt se trata como un mismo grupo, por lo que la regla disallow: /
afecta tanto a user-agent
como a a
y a b
:
user-agent: a sitemap: https://example.com/sitemap.xml user-agent: b disallow: /
Cuando los rastreadores procesan las reglas del archivo robots.txt, ignoran la línea de sitemap
.
Por ejemplo, los rastreadores interpretarían el fragmento de robots.txt anterior de la siguiente forma:
user-agent: a user-agent: b disallow: /
Coincidencias de URL en función de los valores de ruta
Google utiliza el valor de ruta en las reglas allow
y disallow
para determinar si una regla se aplica o no a una URL concreta de un sitio. Para hacer esto, se compara la regla con el componente de ruta de la URL que el rastreador quiere obtener.
Los caracteres ASCII que no sean de 7 bits y que aparezcan en una ruta se pueden incluir como caracteres UTF-8 o como caracteres UTF-8 codificados usando el símbolo de porcentaje como carácter de escape, tal como se describe en RFC 3986.
Google, Bing y otros buscadores principales admiten determinados comodines en los valores de ruta. Los caracteres comodín son los siguientes:
*
indica 0 o más casos de cualquier carácter válido.$
indica el final de la URL.
En la siguiente tabla, se muestra cómo afectan los diferentes caracteres comodín al análisis:
Ejemplos de coincidencias de ruta | |
---|---|
/ |
Coincide con la raíz y con cualquier URL de nivel inferior. |
/* |
Es equivalente a / . El comodín final se ignora. |
/$ |
Coincide solo con la raíz. Se pueden rastrear todas las URLs de los niveles inferiores. |
/fish |
Coincide con cualquier ruta que empieza por Coincide con:
No coincide con:
|
/fish* |
Es equivalente a Coincide con:
No coincide con:
|
/fish/ |
Coincide con cualquier elemento de la carpeta Coincide con:
No coincide con:
|
/*.php |
Coincide con cualquier ruta que contenga Coincide con:
No coincide con:
|
/*.php$ |
Coincide con cualquier ruta que termine en Coincide con:
No coincide con:
|
/fish*.php |
Coincide con cualquier ruta que contenga Coincide con:
No coincide con:
|
Orden de prioridad de las reglas
Al buscar coincidencias de reglas de robots.txt con URLs, los rastreadores utilizan la regla más específica en función de la longitud de la ruta de la regla. En el caso de que haya reglas en conflicto, incluidas las que tienen comodines, Google usa la menos restrictiva.
En los siguientes ejemplos se muestra qué regla aplicarán los rastreadores de Google en una URL concreta.
Ejemplos | |
---|---|
https://example.com/page |
allow: /p disallow: /
Regla aplicable: |
https://example.com/folder/page |
allow: /folder disallow: /folder
Regla aplicable: |
https://example.com/page.htm |
allow: /page disallow: /*.htm
Regla aplicable: |
https://example.com/page.php5 |
allow: /page disallow: /*.ph
Regla aplicable: |
https://example.com/ |
allow: /$ disallow: /
Regla aplicable: |
https://example.com/page.htm |
allow: /$ disallow: /
Regla aplicable: |