Resumen
En este documento se explica la forma en que Google interpreta el archivo robots.txt. Este archivo permite controlar cómo los rastreadores de sitios web de Google indexan y rastrean los sitios web de acceso público.
Qué cambió
El 1 de julio de 2019, Google anunció que el protocolo de robots.txt estaba encaminado a convertirse en un estándar de Internet. Los cambios se reflejan en este documento.
Definiciones básicas
Definiciones | |
---|---|
Rastreador | Un rastreador es un servicio o agente que rastrea sitios web. Por lo general, el rastreador accede automáticamente y de manera recurrente a varias URL conocidas de un host que muestra contenido al que se puede acceder mediante navegadores web estándar. A medida que se encuentran nuevas URL (por diferentes medios, como vínculos de páginas ya rastreadas o archivos de mapa del sitio), se rastrean de la misma forma. |
Usuario-agente | Es un medio para identificar un rastreador específico o un conjunto de rastreadores. |
Directivas | Es la lista de lineamientos aplicables a un rastreador o grupo de rastreadores que se especifica en el archivo robots.txt. |
URL | Son los localizadores de recursos uniformes, según se describen en RFC 1738. |
Específicos de Google | Son elementos específicos de la implementación de robots.txt perteneciente a Google, que podrían no ser relevantes para otras partes. |
Aplicabilidad
Todos los rastreadores automatizados de Google siguen los lineamientos que se indican en este documento. Cuando un agente accede a las URL en nombre de un usuario (por ejemplo, para traducción, suscripción manual a feeds, análisis de software malicioso, etc.), no es necesario que se apliquen estos lineamientos.
Ubicación del archivo y período de validez
El archivo robots.txt debe incluirse en el directorio de nivel superior del host y ser accesible a través del protocolo y el número de puerto apropiados. Todos los protocolos que suelen aceptarse para el archivo robots.txt están basados en URI y, en el caso específico de la Búsqueda de Google (por ejemplo, rastreo de sitios web), son "http" y "https". Cuando se utilizan estos protocolos, se accede al archivo robots.txt mediante una solicitud HTTP GET no condicional.
Elementos específicos de Google: Google también acepta y rastrea archivos robots.txt en sitios FTP. A los archivos robots.txt basados en FTP se accede mediante este protocolo con credenciales de acceso anónimas.
Las directivas 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://www.example.com/robots.txt |
Se puede usar en los siguientes casos: No se puede usar en los siguientes casos:
|
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.müller.eu/robots.txt |
Se puede usar en los siguientes casos:
No se puede usar en los siguientes casos: |
ftp://example.com/robots.txt |
Se puede usar en los siguientes casos: No se puede usar en los siguientes casos: Elementos específicos de Google: Utilizamos el archivo robots.txt para los recursos de FTP. |
http://212.96.82.21/robots.txt |
Se puede usar en los siguientes casos: No se puede usar en los siguientes casos: |
http://example.com:80/robots.txt |
Se puede usar en los siguientes casos:
No se puede usar en los siguientes casos: |
http://example.com:8181/robots.txt |
Se puede usar en los siguientes casos: No se puede usar en los siguientes casos: |
Administración de códigos de resultado HTTP
Por lo general, hay tres resultados diferentes cuando se accede a los archivos robots.txt:
- full allow: Se puede rastrear todo el contenido.
- full disallow: No se puede rastrear ningún tipo de contenido.
- conditional allow: Las directivas del archivo robots.txt determinan si se puede rastrear cierto contenido.
Administración de códigos de resultado HTTP | |
---|---|
2xx (correcto) | Son los códigos de resultado HTTP que indican el éxito de la operación con un "conditional allow" (permiso condicional) para el rastreo. |
3xx (redireccionamiento) | Google sigue, al menos, cinco saltos de redireccionamiento, según lo definido por RFC 1945 para HTTP/1.0 y, luego, se detiene y lo considera un error 404. No se recomienda controlar los redireccionamientos de robots.txt a URL no admitidas. Como todavía no se obtuvieron reglas, los redireccionamientos se siguen durante, al menos, cinco saltos y, si no se encuentra un archivo robots.txt, Google lo interpreta como un error 404. No se recomienda el manejo de redireccionamientos lógicos para el archivo robots.txt basados en contenido HTML que muestra códigos de resultado 2xx (redireccionamientos de actualizaciones de metaetiquetas, de JavaScript o de marcos) y el contenido de la primera página se usa para encontrar reglas aplicables. |
4xx (errores de cliente) | Todos los errores 4xx se tratan de la misma manera y se asume que no hay ningún archivo robots.txt válido. Se asume que no existen restricciones, lo que supone un "full allow" (permiso completo) para el rastreo. |
5xx (error de servidor) | Los errores del servidor se consideran errores temporales que provocan un resultado "full disallow" (ningún permiso) para el rastreo. Se vuelve a realizar la solicitud hasta que se obtiene un código de resultado HTTP sin error del servidor. Un error 503 (Servicio no disponible) genera reintentos bastante frecuentes. Si el archivo robots.txt no está disponible durante más de 30 días, se usa la última copia de robots.txt almacenada en caché. Si no está disponible, Google asume que no hay restricciones de rastreo. Para suspender temporalmente el rastreo, se recomienda mostrar un código de resultado HTTP 503. Elementos específicos de Google: Si podemos determinar que un sitio está configurado de forma incorrecta y muestra un error 5xx en lugar de un 404 para páginas faltantes, consideraremos el error 5xx de ese sitio como si fuera un 404. |
Solicitudes con error o datos incompletos | Cuando se procesa un archivo robots.txt que no se puede recuperar debido a problemas de DNS o de red (como agotamiento del tiempo de espera, respuestas no válidas, restablecimientos, conexión interrumpida y errores de fragmentación de HTTP) se considera que se produjo un error de servidor. |
Almacenamiento en caché | Por lo general, el contenido de robots.txt se almacena en caché hasta 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 de archivo
El formato de archivo esperado es texto sin formato con la codificación UTF-8. El archivo está formado por líneas separadas por caracteres CR, CR/LF o LF.
Solo se consideran las líneas válidas. El resto del contenido se ignora. Por ejemplo, si el documento resultante es una página HTML, solo se tienen en cuenta las líneas de texto válidas; las demás se ignoran, y no se muestran mensajes de advertencia ni error.
Si se utiliza una codificación que genera caracteres que no representan un subconjunto de UTF-8, podría fallar el análisis del contenido del archivo.
Se ignorarán las BOM (marcas de orden de bytes) de Unicode opcionales al principio del archivo robots.txt.
Cada línea válida está formada por un campo, dos puntos y un valor. Los espacios son opcionales, aunque se recomienda implementarlos para mejorar la legibilidad. Se pueden incluir comentarios en cualquier parte del archivo con el carácter "#"; todo el contenido después del inicio de un comentario hasta el final de la línea se considerará un comentario y, en consecuencia, se ignorará. El formato general es <field>:<value><#optional-comment>
. Se ignorarán los espacios en blanco al comienzo y al final de la línea.
El elemento <field>
distingue entre mayúsculas y minúsculas. El elemento <value> podría distinguir entre mayúsculas y minúsculas en función del elemento <field>.
No se admite el control de los elementos <field>
que tengan errores leves o de ortografía (por ejemplo, "usuarioagente" en lugar de "usuario-agente").
Se puede aplicar un tamaño de archivo máximo para cada rastreador. De esta manera, se ignorará el contenido que supere ese tamaño. Actualmente, Google aplica un límite de tamaño de 500 kibibytes (KiB). 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 formal y definición
A continuación, se incluye una descripción del Formato Backus-Naur Aumentado (ABNF), según RFC 5234:
robotstxt = *(group / emptyline) group = startgroupline ; We start with a user-agent *(startgroupline / emptyline) ; ... and possibly more user-agents *(rule / emptyline) ; followed by rules relevant for UAs startgroupline = *WS "user-agent" *WS ":" *WS product-token EOL rule = *WS ("allow" / "disallow") *WS ":" *WS (path-pattern / empty-pattern) EOL ; parser implementors: add additional lines you need (for example, sitemaps), and ; be lenient when reading lines that don't conform. Apply Postel's law. product-token = identifier / "*" path-pattern = "/" *(UTF8-char-noctl) ; valid URI path pattern; see 3.2.2 empty-pattern = *WS identifier = 1*(%x2d / %x41-5a / %x5f / %x61-7a) comment = "#" *(UTF8-char-noctl / WS / "#") emptyline = EOL EOL = *WS [comment] NL ; end-of-line may have optional trailing comment NL = %x0D / %x0A / %x0D.0A WS = %x20 / %x09 ; UTF8 derived from RFC3629, but excluding control characters UTF8-char-noctl = UTF8-1-noctl / UTF8-2 / UTF8-3 / UTF8-4 UTF8-1-noctl = %x21 / %x22 / %x24-7F ; excluding control, space, '#' UTF8-2 = %xC2-DF UTF8-tail UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail ) UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / %xF4 %x80-8F 2( UTF8-tail ) UTF8-tail = %x80-BF
Agrupación de líneas y reglas
Se trata de una o más líneas de user-agent
seguidas de una o más reglas. El grupo se termina con una línea de user-agent
o con el final de archivo. El último grupo puede no tener reglas, lo que significa que permite todo de manera implícita.
Grupos de ejemplo:
user-agent: a disallow: /c user-agent: b disallow: /d user-agent: e user-agent: f disallow: /g user-agent: h
Se especifican cuatro grupos distintos:
- Un grupo para "a"
- Un grupo para "b"
- Un grupo para "e" y "f"
- Un grupo para "h"
Excepto por el último grupo (grupo "h"), cada grupo tiene su propia línea de group-member. El último grupo (grupo "h") está vacío. Observa el uso opcional del espacio en blanco y las líneas vacías para mejorar la legibilidad.
Orden de prioridad para usuarios-agentes
Solo un grupo es válido para un rastreador en particular. El rastreador debe determinar cuál es el grupo de líneas correcto buscando el que tenga el usuario-agente más específico con el que coincida. El rastreador ignora los demás grupos. El usuario-agente distingue mayúsculas de minúsculas. Se ignorará 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 en un solo grupo todas las reglas de los grupos aplicables al usuario-agente específico.
Ejemplos
Ejemplo 1
En el caso del siguiente archivo robots.txt:
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 | Sigue el grupo 1. Solo se sigue el grupo más específico; se ignorarán todos los demás. |
Googlebot (web) | Sigue el grupo 3. |
Googlebot para Imágenes | Sigue el grupo 3. Como no hay un grupo googlebot-images específico, se sigue el más genérico. |
Googlebot-News (al rastrear imágenes) | Sigue el grupo 1. Como a esas imágenes las rastrea Googlebot-News, solo se sigue el grupo de este robot. |
Otro robot (web) | Sigue el grupo 2. |
Otro robot (Noticias) | Sigue el grupo 2. Aunque haya una entrada de un rastreador relacionado, solo es válida si coincide de forma específica. |
Ejemplo 2
En el caso del siguiente archivo robots.txt:
user-agent: googlebot-news disallow: /fish user-agent: * disallow: /carrots user-agent: googlebot-news disallow: /shrimp
Los rastreadores combinarán grupos relevantes para un usuario-agente específico de la siguiente forma:
user-agent: googlebot-news disallow: /fish disallow: /shrimp user-agent: * disallow: /carrots
Consulta también los rastreadores de Google y las strings de usuario-agente.
Reglas de group-member
Esta sección solo aborda las reglas estándar de "group-member". Estas reglas también se llaman "directivas" para los rastreadores. Estas directivas se especifican con el formato directive:
[path]
, en el que [path]
es opcional. De manera predeterminada, no hay restricciones de rastreo para los rastreadores designados. Se ignoran las directivas que no tienen [path]
.
Se debe considerar que el valor [path]
. Si se especifica, está relacionado con la raíz del sitio web a través del cual se accedió al archivo robots.txt (utilizando 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. La ruta distingue entre mayúsculas y minúsculas. Puedes obtener más información en la sección "Coincidencias de URL según los valores de ruta", que se encuentra más adelante.
disallow
La directiva disallow
especifica las rutas a las que no deben acceder los rastreadores designados. Cuando no se especifica ninguna, se ignora la directiva.
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.
Uso:
allow: [path]
Coincidencias de URL según los valores de ruta
El valor de ruta se utiliza como base para determinar si una regla se aplica o no a una URL específica de un sitio. Excepto en el caso de los comodines, la ruta suele coincidir con el principio de una URL (y con cualquier URL válida que empiece con la misma ruta). 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. |
/fish |
Coincide con lo siguiente:
No coincide con lo siguiente:
|
/fish* |
Equivale a Coincide con lo siguiente:
No coincide con lo siguiente:
|
/fish/ |
La barra final indica que esta ruta coincide con cualquiera que se incluya en esta carpeta. Coincide con lo siguiente:
No coincide con lo siguiente:
|
/*.php |
Coincide con lo siguiente:
No coincide con lo siguiente:
|
/*.php$ |
Coincide con lo siguiente:
No coincide con lo siguiente:
|
/fish*.php |
Coincide con lo siguiente:
No coincide con lo siguiente: |
Líneas de non-group-member compatibles con Google
Google, Bing y otros motores de búsqueda importantes admiten sitemap
, según la definición de sitemaps.org.
Uso:
sitemap: [absoluteURL]
La línea [absoluteURL]
apunta a la ubicación de un mapa del sitio o 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. Es posible que existan varias entradas sitemap
. Como se trata de líneas de non-group-member, no están vinculadas a ningún usuario-agente específico, y todos los rastreadores pueden seguirlas, siempre que esté permitido.
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
Orden de prioridad para las líneas de group-member
A nivel de "group-member", en particular para las directivas allow
y disallow
, la regla más específica basada en la longitud de la entrada [path]
prevalecerá sobre la menos específica (más corta).
En el caso de reglas en conflicto, incluidas las que tienen comodines, se utiliza la regla menos restrictiva.
Ejemplos | |
---|---|
http://example.com/page |
Veredicto: |
http://example.com/folder/page |
Veredicto: |
http://example.com/page.htm |
Veredicto: |
http://example.com/ |
Veredicto: |
http://example.com/page.htm |
Veredicto: |
Prueba el lenguaje de marcado robots.txt
Google ofrece dos opciones para probar el lenguaje de marcado robots.txt:
- El verificador de robots.txt en Search Console
- Biblioteca robots.txt de código abierto de Google, que también se usa en la Búsqueda de Google