Especificaciones de robots.txt

Resumen

En este documento se explica cómo interpreta Google el archivo robots.txt que permite controlar la forma en que los rastreadores de sitios web de Google rastrean e indexan sitios web de acceso público.

Volver al principio

Requisitos de idioma

Las palabras clave "DEBE", "NO DEBE", "OBLIGATORIO", "DEBERÁ", "NO DEBERÁ", "DEBERÍA", "NO DEBERÍA", "RECOMENDADO", "PUEDE" y "OPCIONAL" de este documento se deben interpretar como se describe en RFC 2119.

Volver al principio

Definiciones básicas

  • Rastreador: servicio o agente que rastrea sitios web. Por lo general, el rastreador accede de forma automática y recurrente a varias URL conocidas de un host que muestra contenido al que se puede acceder  con navegadores web estándar. A medida que se encuentran nuevas URL (mediante diferentes medios, como enlaces de páginas ya rastreadas o archivos de sitemaps), estas se rastrean de la misma forma.
  • Agente de usuario: forma de identificación de un rastreador o de un conjunto de rastreadores.
  • Directivas: lista de directrices aplicables a un rastreador o a un grupo de rastreadores especificada en el archivo robots.txt.
  • URL: Localizadores de recursos uniformes. Se describen en RFC 1738.
  • Elementos específicos de Google: elementos específicos de la implementación de Google de robots.txt que pueden no ser relevantes para otras partes.

Volver al principio

Aplicaciones

Todos los rastreadores automatizados de Google siguen las directrices que se indican en este documento. Estas directrices no se aplican 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 malintencionado, etc.).

Volver al principio

Ubicación del archivo y periodo 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 del número de puerto apropiados. Los protocolos generalmente aceptados para el archivo robots.txt y para el 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, utilizando unas credenciales de acceso anónimas.

Las directivas 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.

Nota: La URL del archivo robots.txt distingue entre mayúsculas y minúsculas, al igual que las demás URL.

Volver al principio

Ejemplos de URL del archivo robots.txt válidas:

URL del archivo robots.txtVálida para No válida paraComentarios
http://example.com/robots.txt http://example.com/
http://example.com/carpeta/archivo
http://otro.example.com/
https://example.com/
http://example.com:8181/
Este es el caso más habitual. No es válido para otros subdominios, protocolos o números de puerto. Es válido para todos los archivos de todos  los subdirectorios del mismo host, protocolo y número de puerto.
http://www.example.com/robots.txt http://www.example.com/ http://example.com/
http://tienda.www.example.com/
http://www.tienda.example.com/
Un archivo robots.txt de un subdominio solo es válido para ese subdominio.
http://example.com/carpeta/robots.txt No es un archivo robots.txt válido.   Los rastreadores no buscarán archivos robots.txt en los subdirectorios.
http://www.müller.eu/robots.txt http://www.müller.eu/
http://www.xn--mller-kva.eu/
http://www.muller.eu/ Los nombres de dominio internacionalizados (IDN) son equivalentes a sus versiones en código puny. Véase RFC 3492.
ftp://example.com/robots.txt ftp://example.com/ http://example.com/ Elementos específicos de Google: utilizamos el archivo robots.txt para los recursos de FTP.
http://212.96.82.21/robots.txt http://212.96.82.21/ http://example.com/ (incluso aunque se aloje en 212.96.82.21) Un archivo robots.txt con una dirección IP como nombre de host únicamente será válido para rastrear esa dirección IP como nombre de host. El archivo no será válido automáticamente para todos los sitios web que se alojen en esa dirección IP (aunque es posible que el archivo robots.txt esté compartido, en cuyo caso también estará disponible con el nombre de host compartido).
http://example.com:80/robots.txt http://example.com:80/
http://example.com/
http://example.com:81/ Los números de puerto estándar (80 para http, 443 para https y 21 para ftp) son equivalentes a sus nombres de host predeterminados (véase también [portnumbers]).
http://example.com:8181/robots.txt http://example.com:8181/ http://example.com/ Los archivos robots.txt situados en números de puerto no estándar solo son válidos para el contenido disponible a través de esos números de puerto.

Volver al principio

Utilizar los códigos de resultado HTTP

Por lo general, al acceder a los archivos robots.txt, se obtienen tres resultados diferentes:

  • Permiso completo (full allow): se puede rastrear todo el contenido.
  • Ningún permiso (full disallow): no se puede rastrear ningún contenido.
  • Permiso condicional (conditional allow): las directivas incluidas en el archivo robots.txt determinan si se puede rastrear un contenido determinado.
2xx: (correcto)
Cuando se obtiene un código de resultado HTTP que indica el éxito de la operación, el resultado es un "permiso condicional" para el rastreo.
3xx (redireccionamiento)
Los redireccionamientos se suelen seguir hasta que se encuentra un resultado válido (o hasta que se detecta un bucle). Se seguirá un número limitado de saltos de redireccionamiento (RFC 1945 para HTTP/1.0 permite hasta 5 saltos). Luego se parará y se tratará como un 404. La gestión de redireccionamientos en el archivo robots.txt a direcciones URL que no se puedan rastrear no está definido y no se recomienda. La gestión de redireccionamientos lógicos en el archivo robots.txt basados en contenido HTML que devuelva códigos de resultado 2xx (redireccionamientos de actualizaciones de metaetiquetas, de JavaScript o de marcos) no está definido y no se recomienda.
4xx (errores de cliente)
Google trata todos los errores 4xx de la misma forma y asume que no existe un archivo robots.txt válido. Se asume que no existen restricciones. Esto supone un "permiso completo" para el rastreo. Nota: Esto incluye los códigos de resultado HTTP 401 "No autorizado" y 403 "Prohibido".
5xx (error del servidor)
Los errores del servidor se consideran errores temporales que se traducen en una "denegación completa de permiso" para el rastreo. La solicitud se realiza de nuevo hasta que se obtiene un código de resultado HTTP sin error del servidor. Si se reintenta con bastante frecuencia, se obtendrá un error 503 (Servicio no disponible). Para suspender de forma temporal el rastreo, se recomienda mostrar un código de resultado HTTP 503. La gestión de un error de servidor permanente no está definida.

Elementos específicos de Google: si podemos determinar que un sitio está configurado de forma incorrecta y devuelve un error 5xx en lugar de uno 404 para páginas que faltan, trataremos el error 5xx de ese sitio como si fuera un error 404.
Solicitudes que no han prosperado o datos incompletos
No está definido el uso de archivos robots.txt a los que no se pueda acceder debido a un problema de DNS o de red, como tiempos de espera agotados, respuestas no válidas, restablecimientos o pérdidas de conexión, etc.
Almacenamiento en caché
Las solicitudes de los archivos robots.txt se suelen almacenar en caché hasta un máximo de un día. Sin embargo, este almacenamiento se puede prolongar en aquellas situaciones en las que no sea 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 el ciclo de duración de la caché en base a los encabezados HTTP max-age Cache-Control.

Volver al principio

Formato de archivo

El formato esperado es un archivo de texto sin formato con codificación UTF-8. El archivo está formado por registros (líneas) separados por caracteres CR, CR/LF o LF.

Solo se tendrán en cuenta los registros válidos, el resto del contenido se ignorará. Por ejemplo, si el documento resultante es una página HTML, solo se tendrán en cuenta las líneas de texto válidas, las demás se ignorarán y no se mostrará ningún mensaje de advertencia o de error.

El contenido del archivo se puede analizar de forma incorrecta si se utiliza una codificación que genere caracteres que no representen un subconjunto de UTF-8.

Si hay una marca de orden de bytes (BOM) opcional al principio del archivo robots.txt, será ignorada.

Cada registro está formado por un campo, dos puntos (:) y un valor. Los espacios son opcionales, aunque su uso se recomienda para mejorar la legibilidad. Se pueden incluir comentarios en cualquier lugar dentro del archivo precedidos del carácter "#". Todo el contenido que se inserta entre el comienzo de un comentario y el final del registro se trata como un comentario y se ignora. El formato general es "<field>:<value><#optional-comment>". Los espacios en blanco al comienzo y al final del registro se ignoran.

El elemento <field> no distingue entre mayúsculas y minúsculas. El elemento <value> puede verse afectado por las mayúsculas y las minúsculas, depende del elemento <field>.

El uso de los elemento <field> ligeramente erróneos o mal escritos (p. ej., "useragent" en lugar de "user-agent") no está definido y puede que algunos agentes de usuario los interpreten como directivas correctas.

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. En la actualidad, Google aplica un límite de tamaño de 500 kb.

Volver al principio

Definición y sintaxis formal

A continuación, explicamos una notación parecida a Backus-Naur, que usa las convenciones de RFC 822, exceptuando que "|" se usa para designar alternativas. Los objetos literales se escriben con "", los paréntesis "(" y ")" se utilizan para agrupar elementos, los elementos opcionales se incluyen entre [corchetes] y los elementos pueden aparecer precedidos por <n>* para designar n o más repeticiones del siguiente elemento. El valor predeterminado de n es 0.

robotstxt = *entries
entries = *( ( <1>*startgroupline 
  *(groupmemberline | nongroupline | comment)
  | nongroupline
  | comment) )
startgroupline = [LWS] "user-agent" [LWS] ":" [LWS] agentvalue [comment] EOL
groupmemberline = [LWS] (
  pathmemberfield [LWS] ":" [LWS] pathvalue
  | othermemberfield [LWS] ":" [LWS] textvalue) [comment] EOL
nongroupline = [LWS] (
  urlnongroupfield [LWS] ":" [LWS] urlvalue
  | othernongroupfield [LWS] ":" [LWS] textvalue) [comment] EOL
comment = [LWS] "#" *anychar
agentvalue = textvalue

pathmemberfield = "disallow" | "allow"
othermemberfield = ()
urlnongroupfield = "sitemap"
othernongroupfield = ()

pathvalue = "/" path
urlvalue = absoluteURI
textvalue = *(valuechar | SP)
valuechar = <any UTF-8 character except ("#" CTL)>
anychar = <any UTF-8 character except CTL>
EOL = CR | LF | (CR LF)

La sintaxis para "absoluteURI", "CTL", "CR", "LF", "LWS" está definida en RFC 1945. La sintaxis para "path" está definida en RFC 1808.

Volver al principio

Agrupación de registros

Los registros se categorizan según el tipo de elemento <field>:

  • inicio del grupo (start-of-group),
  • miembro del grupo (group-member),
  • no perteneciente al grupo (non-group).
  • Todos los registros de miembro del grupo que se incluyen entre un inicio del grupo y el siguiente se tratan como un grupo de registros. El único elemento de campo para un inicio de grupo es user-agent. Después de la línea de inicio de grupo final, aparecen varias líneas de inicio de grupo seguidas entre sí tras los registros de miembro de grupo. Cualquier registro de miembro del grupo que no esté precedido por un registro de inicio de grupo se ignorará. Todos los registros de no pertenencia a grupo son válidos, independientemente del grupo del que se trate.

    Los elementos <field> válidos que se definirán en este documento son:

    • user-agent (inicio de grupo)
    • disallow (solo es válido como registro de miembro del grupo)
    • allow (solo es válido como registro de miembro del grupo)
    • sitemap (no perteneciente al grupo)
    • Puede que se ignore otros elementos <field>.

      El elemento de inicio de grupo user-agent se usa para especificar para qué rastreador es válido el grupo. Solo hay un grupo de registros válido para cada rastreador. El orden de prioridad se verá más adelante en este documento.

      Grupos de ejemplo:

      user-agent: a
      disallow: /c
      
      user-agent: b
      disallow: /d
      
      user-agent: e
      user-agent: f
      disallow: /g
      

      Hay tres grupos diferentes especificados: uno para "a" y otro para "b", así como uno tanto para "e" como para "f". Cada grupo cuenta con un registro de miembro de grupo propio. Fíjate en el uso del espacio en blanco opcional (una línea vacía) para mejorar la legibilidad.

      Volver al principio

      Orden de prioridad para los agentes de usuario

      Solo hay un grupo de registros de miembro de grupo válido para cada rastreador. El rastreador debe determinar cuál es el grupo de registros correcto buscando el grupo que tenga el agente de usuario más específico con el que exista coincidencia. El rastreador ignorará los demás grupos de registros. El agente de usuario no distingue entre mayúsculas y minúsculas. La parte de texto que no coincida se ignora (por ejemplo, tanto googlebot/1.2 como googlebot* son equivalentes a googlebot). El orden de los grupos dentro del archivo robots.txt es irrelevante.

      Ejemplo:

      Si tenemos el 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 del siguiente modo:

      Nombre del rastreadorGrupo de registro que se sigue Comentarios
      Googlebot News (group 1) Solo se sigue el grupo más específico. Los demás se ignoran.
      Googlebot (web) (group 3) 
      Googlebot Images (group 3) No hay un grupo googlebot-images específico, por lo que se sigue el grupo más genérico.
      Googlebot News (al rastrear imágenes) (group 1) Estas imágenes se rastrean para Googlebot News y a través de este rastreador, por lo que solo se sigue el grupo Googlebot News.
      Otherbot (web)(group 2) 
      Otherbot (News)(group 2) Aunque haya una entrada de un rastreador relacionado, solo es válida si coincide de forma específica.

      Véase también información sobre los rastreadores de Google y las cadenas de agente de usuario.

      Volver al principio

      Registros de miembro de grupo

      En esta sección, solo se tratan los tipos de registros generales y de miembro de grupo de elementos específicos de Google. Estos tipos de registros también se denominan "directivas" en los rastreadores. Estas directivas se especifican con el formato "directive: [path]" en el que el valor [path] es opcional. De forma predeterminada, no hay restricciones de rastreo para los rastreadores especificados. Se ignoran las directivas que no incluyen un valor [path].

      Si se especifica, se debe considerar que el valor [path] está relacionado con la raíz del sitio web a través del cual se ha accedido 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 por "/" para especificar la raíz. Si se detecta una ruta que no empieza por una barra inclinada, se puede asumir que la raíz está incluida. La ruta distingue entre mayúsculas y minúsculas. Para obtener más información, se puede consultar la sección "Coincidencias de URL en función de los valores de ruta" que aparece a continuación.

      Directiva disallow

      La directiva disallow especifica rutas a las que los rastreadores designados no deben acceder. Cuando no se especifica ninguna ruta, se ignora la directiva.

      Uso:

      disallow: [path]
      

      Directiva allow

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

      Uso:

      allow: [path]
      

      Volver al principio

      Coincidencias de URL en función de 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. A excepción de los comodines, la ruta se utiliza para que coincida con el principio de una URL (y con cualquier URL válida que empiece por la misma ruta). Las caracteres ASCII que no sean de 7 bits que aparezcan en una ruta se pueden incluir como caracteres UTF-8 o como caracteres UTF-8 codificados con tanto por ciento como carácter de escape según RFC 3986.

      Nota: Las URL de rastreo con AJAX se deben especificar en las versiones rastreadas. Véase también nuestra documentación para crear aplicaciones rastreables con AJAX.

      Google, Bing, Yahoo y Ask admiten un tipo limitado de "comodines" para valores de ruta. Se trata de las siguientes:

      1. * especifica 0 o más casos de cualquier carácter válido.
      2. $ especifica el final de la URL.

      Ejemplos de coincidencias de ruta

      [path]Coincide No coincideComentarios
      /cualquier URL válida  Coincide con la raíz y con cualquier URL de nivel inferior.
      /*Equivale a "/". Equivale a "/". Equivale a "/" (se ignora el comodín posterior).
      /pescado/pescado
      /pescado.html
      /pescado/salmón.html
      /pescado2000
      /pescado2000/deliciosas.html
      /pescado.php?id=todo
      /Pescado.asp
      /barbo
      /?id=pescado
      Observa las coincidencias de mayúsculas y minúsculas.
      /pescado* Equivale a "/pescado" Equivale a "/pescado" Equivale a "/pescado" (se ignora el comodín posterior).
      /pescado//pescado/
      /pescado/?id=todo
      /pescado/salmón.htm
      /pescado
      /pescado.html
      /Pescado/Salmón.asp
      La barra inclinada posterior indica que esta ruta coincide con cualquiera incluida en esta carpeta.
      pescado/Equivale a /pescado/ Equivale a /pescado/ Equivale a /pescado/
      /*.php/nombredearchivo.php
      /carpeta/nombredearchivo.php
      /carpeta/nombredearchivo.php?parámetros
      /carpeta/cualquiera.php.archivo.html
      /nombredearchivo.php/
      / (aunque se asigne a /índice.php)
      /windows.PHP
       
      /*.php$/nombredearchivo.php
      /carpeta/nombredearchivo.php
      /nombredearchivo.php?parámetros
      /nombredearchivo.php/
      /nombredearchivo.php5
      /windows.PHP
       
      /pescado*.php/pescado.php
      /pescado2000/barbo.php?parámetros
      /Pescado.PHP  

      Volver al principio

      Registros de miembro no perteneciente al grupo compatibles con Google

      sitemap

      Compatible con Google, Ask, Bing, Yahoo; definido en sitemaps.org.

      Uso:

      sitemap: [absoluteURL]
      

      El elemento [absoluteURL] apunta a un sitemap, a un índice de sitemap o a una URL equivalente. La URL no tiene que estar en el mismo host que el archivo robots.txt. Puede haber entradas múltiples de sitemap. Como se trata de registros de miembro no perteneciente al grupo, estos no están vinculados a ningún agente de usuario específico, y todos los rastreadores pueden seguirlos, siempre que esté permitido.

      Volver al principio

      Orden de prioridad de los registros de miembro de grupo

      A nivel de miembro de grupo, en particular para las directivas allow y disallow, la regla más específica en función de la longitud de la entrada [path] prevalecerá sobre la menos específica (más corta). No se define el orden de prioridad de las reglas con comodines.

      Ejemplos:

      URLallow:disallow:Resolución Comentarios
      http://example.com/page /p /Permitir 
      http://example.com/folder/page /folder/ /folderPermitir 
      http://example.com/page.htm /page /*.htmSin definir 
      http://example.com/ /$ /Permitir 
      http://example.com/page.htm /$ /No permitir 

      Volver al principio