Interpretación de Google de las especificaciones de robots.txt

Los rastreadores automatizados de Google admiten el protocolo de exclusión de 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 que se pueden rastrear. El REP no se aplica a los rastreadores de Google que controlan los usuarios (por ejemplo, las suscripciones a feeds) ni a los rastreadores que se usan para aumentar la seguridad del usuario (como los análisis de software malicioso).

Qué es un archivo robots.txt

Si no deseas que los rastreadores accedan a determinadas secciones de tu sitio, puedes crear un archivo robots.txt con las reglas correspondientes. El archivo robots.txt es un archivo de texto simple que contiene reglas en las cuales se establece qué rastreadores pueden acceder a ciertas partes de un sitio.

Ubicación del archivo y rango de validez

Debes ubicar el archivo robots.txt en el directorio de nivel superior de un sitio, en un protocolo compatible. En el caso de la Búsqueda de Google, los protocolos compatibles son HTTP, HTTPS y FTP. En HTTP y HTTPS, los rastreadores recuperan el archivo robots.txt con una solicitud HTTP GET no condicional. En FTP, los rastreadores usan un comando RETR (RETRIEVE) estándar, con acceso anónimo.

Las reglas que se incluyen en el archivo robots.txt se aplican únicamente al host, el protocolo y el número de puerto donde se aloja el archivo.

Ejemplos de URL de robots.txt válidas

Ejemplos de URL de robots.txt
http://example.com/robots.txt Se puede usar en los siguientes casos:
  • http://example.com/
  • http://example.com/folder/file
No se puede usar en los siguientes casos:
  • http://other.example.com/
  • https://example.com/
  • http://example.com:8181/
http://www.example.com/robots.txt

Se puede usar en los siguientes casos: http://www.example.com/

No se puede usar en los siguientes casos:

  • http://example.com/
  • http://shop.www.example.com/
  • http://www.shop.example.com/
http://example.com/folder/robots.txt No es un archivo robots.txt válido. Los rastreadores no buscan archivos robots.txt en los subdirectorios.
http://www.exämple.com/robots.txt Se puede usar en los siguientes casos:
  • http://www.exämple.com/
  • http://xn--exmple-cua.com/

No se puede usar en los siguientes casos: http://www.example.com/

ftp://example.com/robots.txt

Se puede usar en los siguientes casos: ftp://example.com/

No se puede usar en los siguientes casos: http://example.com/

http://212.96.82.21/robots.txt

Se puede usar en los siguientes casos: http://212.96.82.21/

No se puede usar en los siguientes casos: http://example.com/ (incluso si se aloja en 212.96.82.21)

http://example.com:80/robots.txt

Se puede usar en los siguientes casos:

  • http://example.com:80/
  • http://example.com/

No se puede usar en los siguientes casos: http://example.com:81/

http://example.com:8181/robots.txt

Se puede usar en los siguientes casos: http://example.com:8181/

No se puede usar en los siguientes casos: http://example.com/

Administración de errores y códigos de estado HTTP

Cuando solicites un archivo robots.txt, el código de estado HTTP de la respuesta del servidor afecta la manera en que los rastreadores de Google usarán este archivo.

Administración de errores y códigos de estado HTTP
2xx (correcto) Los códigos de estado HTTP que indican el éxito de la operación les solicitan a los rastreadores de Google que procesen el archivo robots.txt de la manera que establece el servidor.
3xx (redireccionamiento)

Google sigue, al menos, cinco saltos de redireccionamiento, según lo que define la RFC 1945 y, luego, se detiene y lo considera un error 404 para el archivo robots.txt. Esto también sucede con las URL inhabilitadas en la cadena de redireccionamientos, ya que el rastreador no puede recuperar las reglas debido a los redireccionamientos.

Google no sigue redireccionamientos lógicos en archivos robots.txt (redireccionamientos de actualizaciones de metaetiquetas, de JavaScript o de marcos).

4xx (errores del cliente)

Los rastreadores de Google tratan todos los errores 4xx como si no existiera ningún archivo robots.txt válido, lo que implica un rastreo sin restricciones.

5xx (error de servidor)

Como el servidor no puede brindar una respuesta definitiva a la solicitud de robots.txt de Google, Google interpreta, de manera temporal, los errores del servidor como si el sitio estuviese inhabilitado por completo. Google intentará rastrear el archivo robots.txt hasta que obtenga un código de estado HTTP sin error del servidor. El error 503 (service unavailable) provoca reintentos bastante frecuentes. Si el archivo robots.txt no está disponible durante más de 30 días, Google usará la última copia de robots.txt almacenada en caché. Si esta no está disponible, Google asume que no hay restricciones de rastreo.

Si podemos determinar que un sitio está configurado de forma incorrecta y muestra un código de estado 5xx en lugar de un código 404 para páginas faltantes, consideraremos el error 5xx de ese sitio como si fuera un 404. Por ejemplo, si el mensaje de error en una página que muestra un código de estado 5xx es "No se encontró la página", interpretaremos el código de estado como 404 (not found).

Otros errores Un archivo robots.txt que no se puede recuperar debido a problemas de DNS o de red (como agotamientos del tiempo de espera, respuestas no válidas, restablecimientos, conexiones interrumpidas y errores de fragmentación de HTTP) se considera que se produjo un error de servidor.

Almacenamiento en caché

Por lo general, Google almacena en caché el contenido de archivos robots.txt hasta por 24 horas, pero el período se puede prolongar cuando no es posible actualizar la versión en caché (por ejemplo, debido a tiempos de espera agotados o a errores 5xx). La respuesta almacenada en caché puede compartirse entre diferentes rastreadores. Google puede aumentar o disminuir la duración de la caché en función de los encabezados HTTP max-age Cache-Control.

Formato del archivo

El archivo robots.txt debe ser un archivo de texto sin formato con codificación UTF-8, y las líneas deben estar separadas por caracteres CR, CR/LF o LF.

En los archivos robots.txt, Google solo utiliza líneas válidas e ignora el resto, incluidas las marcas de orden de bytes (BOM) de Unicode al principio de estos archivos. Por ejemplo, si el contenido descargado es HTML en lugar de reglas de robots.txt, Google intentará analizar el contenido y extraer las reglas, e ignorará todo lo demás.

De manera similar, si la codificación de caracteres del archivo robots.txt no es UTF-8, Google puede ignorar los que no forman parte del rango UTF-8 y es posible que invalide las reglas de robots.txt.

Actualmente, Google aplica un límite de tamaño de 500 kibibytes (KiB) para los archivos robots.txt. De esta manera, se ignorará el contenido que supere ese tamaño. Para reducir el tamaño del archivo robots.txt, consolida las directivas que resultarían en un archivo robots.txt de gran tamaño. Por ejemplo, coloca el material excluido en un directorio separado.

Sintaxis

Las líneas de robots.txt válidas consisten en un campo, dos puntos y un valor. Los espacios son opcionales, aunque se recomienda implementarlos para mejorar la legibilidad. Se ignorarán los espacios al comienzo y al final de la línea. Para incluir comentarios, coloca el carácter # antes de estos. Ten en cuenta que se ignorará todo el contenido después del carácter #. El formato general es <field>:<value><#optional-comment>.

Google admite los siguientes campos:

  • user-agent: Identifica a qué rastreador se aplican las reglas.
  • allow: Es una ruta de URL que se puede rastrear.
  • disallow: Es una ruta de URL que no se puede rastrear.
  • sitemap: Es la URL completa de un mapa del sitio.

Los campos allow y disallow también se denominan directivas. Estas directivas siempre se especifican con el formato directive: [path], en el que [path] es opcional. De forma predeterminada, no hay restricciones de rastreo para los rastreadores designados. Los rastreadores ignoran las directivas sin [path].

El valor [path], si se especifica, está relacionado con la raíz del sitio web desde donde se recuperó el archivo robots.txt (con el mismo protocolo, número de puerto, y nombres de dominio y de host). El valor de la ruta debe empezar con / para designar la raíz, y distingue entre mayúsculas y minúsculas. Obtén más información sobre las coincidencias de URL según los valores de ruta.

user-agent

La línea user-agent identifica a qué rastreador se aplican las reglas. Consulta los rastreadores de Google y las strings de usuario-agente para obtener una lista completa de las strings de usuario-agente que puedes usar en el archivo robots.txt.

El valor de la línea user-agent distingue entre mayúsculas y minúsculas.

disallow

La directiva disallow especifica las rutas a las que no deben acceder los rastreadores que identifica la línea de usuario-agente con la que se agrupa la directiva disallow. Los rastreadores ignoran la directiva sin una ruta.

El valor de la directiva disallow distingue entre mayúsculas y minúsculas.

Uso:

disallow: [path]

allow

La directiva allow especifica las rutas a las que pueden acceder los rastreadores designados. Cuando no se especifica ninguna, se ignora la directiva.

El valor de la directiva allow distingue entre mayúsculas y minúsculas.

Uso:

allow: [path]

sitemap

Google, Bing y otros motores de búsqueda importantes admiten el campo sitemap en robots.txt, según la definición de sitemaps.org.

El valor del campo sitemap distingue entre mayúsculas y minúsculas.

Uso:

sitemap: [absoluteURL]

La línea [absoluteURL] apunta a la ubicación de un mapa del sitio o de un archivo de índice de mapa del sitio. Tiene que ser una URL completamente calificada, que incluya el protocolo y el host, y no debe estar codificada como URL. La URL no tiene que estar en el mismo host que el archivo robots.txt. Puedes especificar varios campos sitemap. Estos campos no están vinculados a ningún usuario-agente específico, y todos los rastreadores pueden seguirlos, siempre que se permita el rastreo.

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

Puedes agrupar las reglas que se aplican a varios usuarios-agentes. Para ello, repite las líneas user-agent de 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, se muestran cuatro grupos de reglas distintos:

  • Un grupo para el usuario-agente "a"
  • Un grupo para el usuario-agente "b"
  • Un grupo para los usuarios-agentes "e" y "f"
  • Un grupo para el usuario-agente "h"

Para obtener la descripción técnica de un grupo, consulta la sección 2.1 del REP.

Orden de prioridad para usuarios-agentes

Solo un grupo es válido para un rastreador en particular. Los rastreadores de Google determinan cuál es el grupo de reglas correcto buscando, en el archivo robots.txt, el que tenga el usuario-agente más específico con el que coincida el usuario-agente del rastreador. Se ignoran los demás grupos y todo el texto que no coincida (por ejemplo, tanto googlebot/1.2 como googlebot* son equivalentes a googlebot). El orden de los grupos dentro del archivo robots.txt es irrelevante.

Si hay más de un grupo declarado para un usuario-agente específico, se combinan, de manera interna, en un solo grupo todas las reglas de los grupos aplicables al usuario-agente específico.

Ejemplos

Coincidencias de campos user-agent

user-agent: googlebot-news
(group 1)

user-agent: *
(group 2)

user-agent: googlebot
(group 3)

Los rastreadores elegirían el grupo relevante de la siguiente forma:

Grupo seguido por rastreador
Googlebot-News googlebot-news sigue al grupo 1, ya que este es el más específico.
Googlebot (web) googlebot sigue al grupo 3.
Googlebot para Imágenes googlebot-images sigue al grupo 2, ya que no hay un grupo googlebot-images específico.
Googlebot-News (al rastrear imágenes) Cuando rastrea imágenes, googlebot-news sigue al grupo 1. Como googlebot-news no rastrea las imágenes de Google Imágenes, solo sigue al grupo 1.
Otro robot (web) Otros rastreadores de Google siguen al grupo 2.
Otro robot (Noticias) Otros rastreadores del contenido de noticias de Google, que no se identifican como googlebot-news, siguen al grupo 2. Aunque haya una entrada de un rastreador relacionado, solo es válida si coincide de forma específica.

Agrupación de reglas

Si existen varios grupos en un archivo robots.txt que son relevantes para un usuario-agente específico, los rastreadores de Google los combinan de manera interna. Por ejemplo:

user-agent: googlebot-news
disallow: /fish

user-agent: *
disallow: /carrots

user-agent: googlebot-news
disallow: /shrimp

Los rastreadores agrupan, de forma interna, las reglas según el usuario-agente, por ejemplo:

user-agent: googlebot-news
disallow: /fish
disallow: /shrimp

user-agent: *
disallow: /carrots

Coincidencias de URL según los valores de ruta

Google utiliza el valor de ruta en las directivas allow y disallow como base para determinar si una regla se aplica o no a una URL específica de un sitio. Para ello, se compara la regla con el componente de ruta de la URL que el rastreador intenta recuperar. Los caracteres ASCII que no son de 7 bits y aparecen en una ruta se pueden incluir como caracteres UTF-8 simples o codificados con escape porcentual según la RFC 3986.

Google, Bing y otros motores de búsqueda importantes admiten solo ciertos usos de comodines para valores de ruta, que son los siguientes:

  • * designa 0 o más instancias de cualquier carácter válido.
  • $ designa el final de la URL.
Ejemplos de coincidencias de ruta
/ Coincide con la raíz y con cualquier URL de nivel inferior.
/* Equivale a /. Se ignora el comodín final.
/$ Coincide solo con la raíz. Se permite el rastreo de cualquier URL de nivel inferior.
/fish

Coincide con cualquier ruta que empieza con /fish.

Coincide con lo siguiente:

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

No coincide con lo siguiente:

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

Equivale a /fish. Se ignora el comodín final.

Coincide con lo siguiente:

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

No coincide con lo siguiente:

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

Coincide con cualquier ruta que se incluya en la carpeta /fish/.

Coincide con lo siguiente:

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

No coincide con lo siguiente:

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

Coincide con cualquier ruta que contenga .php.

Coincide con lo siguiente:

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

No coincide con lo siguiente:

  • / (incluso si se asigna a /index.php)
  • /windows.PHP
/*.php$

Coincide con cualquier ruta que termine con .php.

Coincide con lo siguiente:

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

No coincide con lo siguiente:

  • /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 lo siguiente:

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

No coincide con lo siguiente: /Fish.PHP

Orden de prioridad para reglas

Cuando las reglas de robots.txt coinciden con las URL, los rastreadores usan la regla más específica basada en la longitud de la ruta. En el caso de reglas en conflicto, incluidas las que tienen comodines, Google utiliza la regla menos restrictiva.

En los siguientes ejemplos, se muestra qué regla aplicarán los rastreadores de Google en una URL determinada.

Ejemplos
http://example.com/page

allow: /p
disallow: /

Regla aplicable: allow: /p, ya que es más específica.

http://example.com/folder/page

allow: /folder
disallow: /folder

Regla aplicable: allow: /folder, ya que, en caso de reglas que coinciden, Google utiliza la menos restrictiva.

http://example.com/page.htm

allow: /page
disallow: /*.htm

Regla aplicable: disallow: /*.htm, que es más específica porque coincide con más caracteres en la URL.

http://example.com/page.php5

allow: /page
disallow: /*.ph

Regla aplicable: allow: /page, ya que, en caso de que haya reglas que coinciden, Google utiliza la menos restrictiva.

http://example.com/

allow: /$
disallow: /

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

http://example.com/page.htm

allow: /$
disallow: /

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