¿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://example.com/
  • https://example.com/folder/file
No válida para:
  • https://other.example.com/
  • http://example.com/
  • https://example.com:8181/
https://www.example.com/robots.txt

Un archivo robots.txt de un subdominio solo es válido para ese subdominio.

Válida para: https://www.example.com/

No válida para:

  • https://example.com/
  • https://shop.www.example.com/
  • https://www.shop.example.com/
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:
  • https://www.exämple.com/
  • https://xn--exmple-cua.com/

No válida para: https://www.example.com/

ftp://example.com/robots.txt

Válida para: ftp://example.com/

No válida para: https://example.com/

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: https://212.96.82.21/

No válida para: https://example.com/ (aunque esté alojada en 212.96.82.21)

https://example.com:443/robots.txt

Los números de puerto estándar (80 en HTTP, 443 en HTTPS y 21 en FTP) son equivalentes a sus nombres de host predeterminados.

Válida para:

  • https://example.com:443/
  • https://example.com/

No válida para: https://example.com:444/

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: https://example.com:8181/

No válida para: https://example.com/

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 404 en el archivo robots.txt. Esto también se aplica a las URLs que no están permitidas en la cadena de redirección, ya que el rastreador no ha podido obtener reglas debido a las redirecciones.

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 4xx, excepto 429, como si no hubiera archivos robots.txt válidos, lo que significa que no se aplican restricciones de rastreo.

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 5xx y 429 como si el sitio estuviese totalmente prohibido. Google intentará rastrear el archivo robots.txt hasta que se obtenga un código de estado HTTP sin error del servidor. Los errores 503 (service unavailable) suelen provocar este comportamiento. Si no se puede acceder al archivo robots.txt durante más de 30 días, Google utilizará la copia más reciente de este archivo que tenga en caché. Si no hay ninguna, Google considera que no hay restricciones de rastreo.

Si necesitas suspender temporalmente el rastreo, te recomendamos que sirvas un código de estado HTTP 503 en cada URL del sitio.

Si podemos determinar que un sitio se ha configurado de forma incorrecta para devolver un error 5xx en vez de un código de estado 404 cuando faltan páginas, trataremos el error 5xx de ese sitio como si fuera un error 404. Por ejemplo, si el mensaje de error de una página que devuelve un código de estado 5xx es "Página no encontrada", interpretaríamos el código de estado como si fuese 404 (not found).

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 /fish. Ten en cuenta que en las coincidencias se distingue entre mayúsculas y minúsculas.

Coincide con:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

No coincide con:

  • /Fish.asp
  • /catfish
  • /?id=fish
  • /desert/fish
/fish*

Es equivalente a /fish. El comodín final se ignora.

Coincide con:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

No coincide con:

  • /Fish.asp
  • /catfish
  • /?id=fish
  • /desert/fish
/fish/

Coincide con cualquier elemento de la carpeta /fish/.

Coincide con:

  • /fish/
  • /fish/?id=anything
  • /fish/salmon.htm

No coincide con:

  • /fish
  • /fish.html
  • /animals/fish/
  • /Fish/Salmon.asp
/*.php

Coincide con cualquier ruta que contenga .php.

Coincide con:

  • /index.php
  • /filename.php
  • /folder/filename.php
  • /folder/filename.php?parameters
  • /folder/any.php.file.html
  • /filename.php/

No coincide con:

  • / (aunque se asigne a /index.php)
  • /windows.PHP
/*.php$

Coincide con cualquier ruta que termine en .php.

Coincide con:

  • /filename.php
  • /folder/filename.php

No coincide con:

  • /filename.php?parameters
  • /filename.php/
  • /filename.php5
  • /windows.PHP
/fish*.php

Coincide con cualquier ruta que contenga /fish y .php, en ese orden.

Coincide con:

  • /fish.php
  • /fishheads/catfish.php?parameters

No coincide con: /Fish.PHP

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: allow: /p, porque es más específica.

https://example.com/folder/page

allow: /folder
disallow: /folder

Regla aplicable: allow: /folder, porque si hay reglas en conflicto, Google usa la menos restrictiva.

https://example.com/page.htm

allow: /page
disallow: /*.htm

Regla aplicable: disallow: /*.htm, porque su ruta es más larga y coincide con más caracteres de la URL, por lo que es más específica.

https://example.com/page.php5

allow: /page
disallow: /*.ph

Regla aplicable: allow: /page, porque si hay reglas en conflicto, Google usa la menos restrictiva.

https://example.com/

allow: /$
disallow: /

Regla aplicable: allow: /$, porque es más específica.

https://example.com/page.htm

allow: /$
disallow: /

Regla aplicable: disallow: /, ya que la regla allow solo se aplica a la URL raíz.