¿Cuál es la forma correcta de manejar Permitir y No permitir en robots.txt?

8

Ejecuto un rastreador web bastante grande. Nos esforzamos mucho para operar el rastreador dentro de los estándares aceptados de la comunidad, y eso incluye respetar el archivo robots.txt. Recibimos muy pocas quejas sobre el rastreador, pero cuando lo hacemos, la mayoría son sobre nuestro manejo de robots.txt. Muy a menudo, el Webmaster cometió un error en su robots.txt y amablemente señalamos el error. Pero periódicamente nos encontramos con áreas grises que implican el manejo de Allowy Disallow.

La página de robots.txt no cubre Allow. He visto otras páginas, algunas de las cuales dicen que los rastreadores usan una regla de "primera coincidencia", y otras que no especifican. Eso lleva a cierta confusión. Por ejemplo, la página de Google sobre robots.txt solía tener este ejemplo:

User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html

Obviamente, una regla de "primera coincidencia" aquí no funcionaría porque el rastreador vería Disallowy desaparecería, nunca rastreando el archivo que estaba específicamente permitido.

Estamos en claro si ignoramos todas las Allowlíneas, pero entonces podríamos no rastrear algo que se nos permite rastrear. Echaremos de menos las cosas.

Hemos tenido un gran éxito comprobando Allowprimero y luego comprobando Disallow, ya que la idea era que Allowfuera más específica Disallow. Esto se debe a que, de manera predeterminada (es decir, en ausencia de instrucciones que indiquen lo contrario), se permite todo acceso. Pero luego nos encontramos con algo como esto:

User-agent: *
Disallow: /norobots/
Allow: /

La intención aquí es obvia, pero eso Allow: /hará que un bot que compruebe Allowprimero piense que puede rastrear cualquier cosa en el sitio.

Incluso eso se puede solucionar en este caso. Podemos comparar la coincidencia Allowcon la coincidencia Disallowy determinar que no podemos rastrear nada en / norobots /. Pero eso se rompe ante los comodines:

User-agent: *
Disallow: /norobots/
Allow: /*.html$

La pregunta, entonces, ¿se le permite al robot gatear /norobots/index.html?

La regla de "primer emparejamiento" elimina toda ambigüedad, pero a menudo veo sitios que muestran algo como el antiguo ejemplo de Google, poniendo el más específico Allow después del Disallow. Esa sintaxis requiere más procesamiento por parte del bot y genera ambigüedades que no se pueden resolver.

Mi pregunta, entonces, es ¿cuál es la forma correcta de hacer las cosas? ¿Qué esperan los webmasters de un bot con buen comportamiento cuando se trata del manejo de robots.txt?

Jim Mischel
fuente
Simplemente procesar todas las directivas en orden (de arriba a abajo) parecería eliminar toda ambigüedad (incluido el procesamiento de patrones de URL comodín , que está oficialmente "indefinido"). Sin embargo, los principales bots del motor de búsqueda (Googlebot, Bingbot, etc.) no funcionan así, por lo que no es viable.
MrWhite

Respuestas:

4

Una nota muy importante: la declaración Permitir debe aparecer antes que la declaración Disallow , sin importar cuán específicas sean sus declaraciones. Entonces, en su tercer ejemplo, no, los robots no se arrastrarán /norobots/index.html.

Generalmente, como regla personal, pongo primero las declaraciones de permiso y luego enumero las páginas y carpetas no permitidas.

Vergil Penkov
fuente
¿Entonces me recomiendan que siga el estándar de la "primera regla de coincidencia"? Es decir, ¿el bot lee el archivo robots.txt y toma el primer permiso o rechazo que coincide con la url en cuestión?
Jim Mischel
1
Pero, ¿sabe si esa es la interpretación generalmente aceptada de robots.txt? Es decir, si tuviera que implementar el estándar de "primera regla de coincidencia", ¿sería eso lo que la mayoría de los webmasters esperan?
Jim Mischel, el
44
La descripción de Permitir en el artículo de Wikipedia en robots.txt - en.wikipedia.org/wiki/Robots_exclusion_standard#Allow_directive - (y varios otros sitios) dice que la "primera regla de coincidencia" es el estándar. Dado que es 100% inequívoco y fácil de implementar y probar que es correcto, eso es lo que elegí.
Jim Mischel
1
Gracias por responder tu propia pregunta :) No estaba seguro de cómo responder. No conozco el método generalmente aceptado, sin embargo, así es como lo he estado usando desde que comencé a trabajar como experto en SEO y siempre ha funcionado correctamente.
Vergil Penkov
1
El orden de las declaraciones Permitir y No permitir no hace ninguna diferencia para el robot de Google, que analiza la especificidad. Bing también, pero no sé acerca de otros motores de búsqueda, así que si tienes dudas, pon a Allows primero, supongo.
pelms
2

Aquí está mi opinión sobre lo que veo en esos tres ejemplos.

Ejemplo 1
Ignoraría todo el /folder1/directorio excepto el myfile.htmlarchivo. Dado que lo permiten explícitamente, supongo que fue simplemente más fácil bloquear todo el directorio y permitir explícitamente ese archivo en lugar de enumerar todos los archivos que querían haber bloqueado. Si ese directorio contiene muchos archivos y subdirectorios, ese archivo robots.txt podría volverse difícil de manejar rápidamente.

Ejemplo 2
Supongo que el /norobots/directorio está fuera de los límites y todo lo demás está disponible para ser rastreado. Leí esto como "rastrear todo excepto el directorio / norobots /".

Ejemplo 3
Similar al ejemplo 2, supondría que el /norobots/directorio está fuera de los límites y que todos los .htmlarchivos que no están en ese directorio están disponibles para ser rastreados. Leí esto como "rastrear todos los archivos .html pero no rastrear ningún contenido en el directorio / norobots /".

Esperemos que el agente de usuario de su bot contenga una URL donde puedan encontrar más información sobre sus hábitos de rastreo y realizar solicitudes de eliminación o darle comentarios sobre cómo quieren que se interprete su robots.txt.

John Conde
fuente
1
Sus respuestas probablemente coincidan con la intención, excepto la última, que encuentro algo cuestionable. En esos casos específicos, puedo codificar los robots que manejan correctamente, pero hay otros casos ambiguos que no se determinan tan fácilmente. Más, estoy buscando una solución general. Y sí, nuestra cadena de agente de usuario tiene un enlace a nuestra página de preguntas frecuentes. Y aunque podemos describir cómo manejamos robots.txt, sería mejor para todos los interesados ​​si no tuviéramos que hacerlo. Es decir, si todos manejan las cosas de la misma manera. Pero ese no parece ser el caso.
Jim Mischel
Lo anterior es cómo Googlebot maneja sus ejemplos, ya que se pueden probar en su herramienta de prueba de robots.txt (Herramientas para webmasters> URL bloqueadas). A Google no le importa si pones primero Allows o Disallows, pero tiene un algoritmo que determina la especificidad, lo que conduce a algunos resultados no obvios. Por ejemplo, si reemplaza '/*.html$' con '/*myfile.html$' en el tercer ejemplo, entonces 'myfile.html' está permitido en lugar de bloquearse O si pierde el '/' final ' / norobots / ', los archivos .html también están permitidos.
pelms
¡Ajá! Según Wikipedia, Google solo mira el número de caracteres para determinar qué directiva usar y, en el caso de un "sorteo", va con "Permitir".
pelms