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 Allow
y 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 Disallow
y desaparecería, nunca rastreando el archivo que estaba específicamente permitido.
Estamos en claro si ignoramos todas las Allow
líneas, pero entonces podríamos no rastrear algo que se nos permite rastrear. Echaremos de menos las cosas.
Hemos tenido un gran éxito comprobando Allow
primero y luego comprobando Disallow
, ya que la idea era que Allow
fuera 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 Allow
primero piense que puede rastrear cualquier cosa en el sitio.
Incluso eso se puede solucionar en este caso. Podemos comparar la coincidencia Allow
con la coincidencia Disallow
y 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?