Google no rastrea archivos CDN

11

Me di cuenta de que Google Webmaster Tools informa muchos recursos bloqueados en mi sitio web. En este momento, todos los "recursos bloqueados" son .css, .js e imágenes (.jpg, .png) que sirvo desde Cloudfront CDN.

He pasado mucho tiempo probando e intentando descubrir por qué Google no rastrea estos archivos e informa un estado de "bloqueo de recursos".

Actualmente sirvo estos archivos de varios nombres de host como: cdn1.example.com, cdn2.example.com, ...

cdn1, cdn2 y los demás son CNAME para el nombre de distribución de cloudfront.

Prueba: he intentado usar directamente la distribución en la nube (sin CNAME) pero el problema persiste.

Actualmente mi robots.txt se ve así:

# Google AdSense
User-agent: Mediapartners-Google
Disallow:

#Google images
User-agent: Googlebot-Image
Disallow: /

User-agent: *
Disallow: /homepage
Disallow: /index.php*
Disallow: /uncategorized*
Disallow: /tag/*
Disallow: *feed
Disallow: */page/*
Disallow: *author*
Disallow: *archive*
Disallow: */category*
Disallow: *tag=*
Disallow: /test*
Allow: /

Y ejemplos de archivos bloqueados en una página de ejemplo:

  • cdn1.example.com/wp-content/plugins/wp-forecast/wp-forecast-default.css

  • cdn9.example.com/wp-content/plugins/bwp-minify/min/?f=wp-content/themes/magazine/css/font-awesome.min.css,wp-content/themes/magazine/css/responsive .css

  • cdn5.example.com/wp-content/themes/magazine/images/nobg.png

  • cdn6.example.com/wp-content/plugins/floating-social-bar/images/fsb-sprite.png

  • cdn5.example.com/wp-content/uploads/2013/11/Design-Hotel-3-80x80.jpg

  • cdn5.example.com/wp-content/uploads/2013/11/Marta-Hotel-7-270x225.jpg

Incluso he intentado permitir todo en robots.txt, pero siempre tengo el mismo resultado.

También he estado mirando cuidadosamente la configuración de CloudFront en Amazon y no veo nada que pueda estar relacionado (no uso y nunca usé la opción: "Restringir el acceso al visor (usar URL firmadas o cookies firmadas)".

En este momento he pasado mucho tiempo investigando esto y no tengo más ideas.

¿Alguien puede pensar en una razón por la cual Googlebot no podría rastrear archivos alojados en Amazon CloudFront?

tonelot
fuente
¿Ha examinado los encabezados de respuesta HTTP de estos "recursos bloqueados"? ¿Qué error exacto informa GWT? Si fueron bloqueados por robots.txt, debería informar esto.
MrWhite
Comentarios menores sobre su archivo robots.txt ... Las URL tienen un prefijo coincidente de manera predeterminada, por lo que nunca es necesario tenerlo *al final del "prefijo" de la URL. /test*es el mismo que /test.
MrWhite
Hola, no puedo examinar los encabezados, porque no sé qué está obteniendo googlebot. Acabo de recibir el mensaje: "Googlebot no pudo obtener todos los recursos para esta página. Aquí hay una lista:" y luego la lista de todos los archivos alojados en CDN (js, css e imágenes) con la "Razón": "Bloqueado".
tonelot
Desde que estoy pidiendo a "obtención y procesamiento" También veo que la prestación carece de los estilos y las imágenes ....
tonelot
Además, gracias por la nota sobre la sintaxis de robots.txt.
tonelot

Respuestas:

7

Entonces, la solución parece ser que Amazon Cloudfront también evalúa mi robots.txty de alguna manera usa diferentes reglas de sintaxis de Google.

La versión de trabajo de my robots.txtes la siguiente:

User-agent: Googlebot-Image
Disallow: /
User-agent: *
Disallow: /homepage
Disallow: /uncategorized
Disallow: /page
Disallow: /category
Disallow: /author
Disallow: /feed
Disallow: /tags
Disallow: /test

Una nota muy importante para decir que esto no está realizando exactamente las mismas funciones que antes. De hecho, eliminé todas las líneas en blanco, comodines y directivas de "permitir". Lo que significa que el resultado final no es el mismo ... pero creo que está lo suficientemente cerca para mí. Por ejemplo, no excluye las páginas de etiquetas cuando se pasan en la cadena de consulta ...

Tres notas importantes:

  1. Si está probando con esto, no olvide invalidar robots.txten la distribución en la nube para cada iteración. Simplemente comprobar que te están sirviendo la última versión no es suficiente.

  2. No pude encontrar en ninguna parte una definición de la robot.txtsintaxis entendida por Amazon Cloudfront. Entonces, fue prueba y error.

  3. Para probar los resultados, use la herramienta "buscar y procesar" de Google Webmaster y su probador amigable para dispositivos móviles ( https://www.google.com/webmasters/tools/mobile-friendly/ )

No entiendo por qué Cloudfront está validando y evaluando mi robots.txt. Este archivo es un "trato" conmigo y con los rastreadores que vienen a mi sitio. Amazon no tiene negocios en el medio. Jugar con mi robots.txtes simplemente estúpido.

Nunca se me ocurrió que Cloudfront podría ser una segunda adivinanza de mi robots.txtsintaxis.

tonelot
fuente
2

Crea un archivo robots.txt en un cubo.

Cree otro origen para su distribución en la nube.

Establezca la prioridad de su cubo más alta que su sitio web.

Invalide el archivo robots.txt de su sitio en Cloudfront.

Después de hacer lo anterior, Google leerá los sitios robots.txt cuando rastree su sitio y podrá ver los diferentes robots.txt cuando siga los enlaces de su cdn.

Parminder Singh Chahal
fuente
1

Google no bloquea la indexación de recursos externos mediante el uso de un archivo robots.txt en la raíz del sitio principal. Al usar un subdominio, un cdn u otro se clasifica como un dominio externo, por lo tanto, la única forma de bloquear el contenido es usando una respuesta de encabezado en el archivo servido por la propia CDN, o usando un robots.txt en el cdn o subdominio .

Utilizando:

#Google images
User-agent: Googlebot-Image
Disallow: /

Solo debe bloquear las imágenes que son locales, deberá hacer lo mismo en el CDN.

Lo más probable es que sea un problema de respuesta de encabezado y debe hacer un 'CURL' en uno de los archivos en el CDN. Debería verse algo así como:

HTTP/1.0 200 OK
Cache-Control: max-age=86400, public
Date: Thu, 10 May 2012 07:43:51 GMT
ETag: b784a8d162cd0b45fcb6d8933e8640b457392b46
Last-Modified: Tue, 08 May 2012 16:46:33 GMT
X-Powered-By: Express
Age: 7
Content-Length: 0
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: V_da8LHRj269JyqkEO143FLpm8kS7xRh4Wa5acB6xa0Qz3rW3P7-Uw==,iFg6qa2KnhUTQ_xRjuhgUIhj8ubAiBrCs6TXJ_L66YJR583xXWAy-Q==
Via: 1.0 d2625240b33e8b85b3cbea9bb40abb10.cloudfront.net (CloudFront)
Connection: close

Las cosas a tener en cuenta son:

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
X-Robots-Tag: googlebot: noindex
Simon Hayter
fuente
Hola, gracias por su respuesta. Pero mi problema no es cómo evitar que las imágenes se indexen. Para evitar confusiones, saqué eso del archivo robots.txt y los resultados son los mismos. Googlebot sigue quejándose de que está bloqueado en los archivos que alojo en Cloudfront y no sé por qué. ¿Alguna idea más? Gracias por su atención, miguel
tonelot
Echas de menos la comprensión, sé que no quieres que se bloquee ... de ahí que haya dicho en la parte inferior para asegurarte de que tu respuesta de encabezado NO esté haciendo una etiqueta X-robots, ¡también dices check the robots.txt on your CloudFront distributionque dije esto también! La única forma de bloquear las imágenes que se indexan en la CDN es x-robots-tag y un robots.txt en la propia CDN, nuevamente mencionado.
Simon Hayter
1

Descubrí el problema: CloudFront lee el archivo robots.txt y evita servir el contenido, pero supongo que analiza de alguna manera lo diferente de lo que deberían hacer los robots, supongo.

Por ejemplo, el siguiente contenido en robots.txt:

Disallow: */wp-contents/ Allow: */wp-contents/themes/

Cuando Googlebot lo consigue, lo indexa; Cuando CloudFront lo lee, no considera la directiva 'Permitir' y prohíbe servir cualquier cosa dentro */wp-contents/themes/.

Respuesta corta: verifique el archivo robots.txt en su distribución de CloudFront, podría ser el problema. Invalidar y actualizar con una versión corregida y debería funcionar!

nunca
fuente
Cloudfront no "lee" el archivo robots.txt ni "considera" su contenido ni "impide" nada. Recuerde que lo que obtiene de Cloudfront cuando obtiene un objeto no le dice nada acerca de lo que recibiría alguien de otra ubicación de borde, si su borde se almacena en caché antes o después de lo que hizo el suyo. Además, los comodines principales son probablemente una receta para un comportamiento inesperado, ya que el "estándar" de exclusión de robots no está bien estandarizado.
Michael - sqlbot
"CloudFront lee el archivo robots.txt": ¿se trata de un archivo robots.txt alojado en CloudFront? El "comodín principal" también parece ser innecesario, si las URL son similares a las indicadas en la pregunta.
MrWhite
Hola. Definitivamente Cloudfront está leyendo mi robots.txt. Y definitivamente tampoco está aceptando la misma sintaxis que google. Ya había probado sacar el robots.txt y no vi resultados porque no solicité e invalidación en cloudfront. Supuse que no era necesario porque me estaban sirviendo la última versión. La prueba lleva mucho tiempo porque cada cambio requiere una solicitud de invalidación que tarda una eternidad en completarse. Volveré en unas horas con una versión que funcione. No sé por qué se necesita este tipo de "inteligencia" ... pero está ahí y creo que no debería. miguel
tonelot
El mismo archivo robots.txt presente en mi apache es el que tiene Cloudfront. Lo determiné empíricamente.
snagnever