Google n'analyse pas les fichiers CDN

11

J'ai remarqué que Google Webmaster Tools signale un grand nombre de ressources bloquées sur mon site Web. À l'heure actuelle, toutes les «ressources bloquées» sont les .css, .js et les images (.jpg, .png) que je sers depuis Cloudfront CDN.

J'ai passé beaucoup de temps à tester et à essayer de comprendre pourquoi Google n'explore pas ces fichiers et signale un état de "bloc de ressources".

Actuellement, je sers ces fichiers à partir de plusieurs noms d'hôtes comme: cdn1.example.com, cdn2.example.com,…

cdn1, cdn2 et les autres sont des CNAME au nom de distribution cloudfront.

Test: j'ai essayé d'utiliser directement la distribution cloudfront (pas de CNAME) mais le problème persiste.

Actuellement, mon robots.txt ressemble à ceci:

# 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: /

Et des exemples de fichiers bloqués dans une page d'exemple:

  • 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

J'ai même essayé de tout autoriser dans le fichier robots.txt mais j'ai toujours le même résultat.

J'ai également examiné attentivement les paramètres CloudFront d'Amazon et je ne vois rien qui puisse être lié (je n'utilise pas et n'ai jamais utilisé l'option: "Restreindre l'accès au visualiseur (utiliser des URL signées ou des cookies signés)").

En ce moment, j'ai passé beaucoup de temps à étudier cela et je n'ai plus d'idées.

Quelqu'un peut-il penser à une raison pour laquelle Googlebot ne serait pas autorisé à analyser des fichiers hébergés dans Amazon CloudFront?

tonelot
la source
Avez-vous examiné les en-têtes de réponse HTTP de ces «ressources bloquées»? Quelle erreur exacte GWT rapporte-t-elle? S'ils ont été bloqués par robots.txt, cela devrait le signaler.
MrWhite
Petit commentaire sur votre fichier robots.txt ... Les URL sont des préfixes correspondant par défaut, donc il n'est jamais nécessaire d'avoir *à la fin de l'URL "préfixe". /test*est le même que /test.
MrWhite
Salut, je ne peux pas examiner les en-têtes, car je ne sais pas ce que googlebot obtient. Je reçois juste le message: "Googlebot n'a pas pu obtenir toutes les ressources pour cette page. Voici une liste:" puis la liste de tous les fichiers hébergés CDN (js, css et images) avec la "Raison": "Bloqué".
tonelot
Depuis que je demande "aller chercher et rendre" je vois aussi que le rendu manque de styles et d'images ....
tonelot
Merci aussi pour la note sur la syntaxe robots.txt.
tonelot

Réponses:

7

Ainsi, la solution semble être qu'Amazon cloudfront évalue également mon robots.txtet utilise en quelque sorte des règles de syntaxe différentes de Google.

La version de travail de my robots.txtest la suivante:

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

Une note très importante pour dire que cela ne remplit pas exactement les mêmes fonctions qu'auparavant. En fait, j'ai supprimé toutes les lignes vierges, les caractères génériques et les directives "allow". Ce qui signifie que le résultat final n'est pas le même ... mais je pense que c'est assez proche pour moi. Par exemple, il n'exclut pas les pages de balises lorsqu'il est passé dans la chaîne de requête ...

Trois notes importantes:

  1. Si vous testez avec cela, n'oubliez pas d'invalider la robots.txtdistribution cloudfront pour chaque itération. Il ne suffit pas de vérifier que la dernière version vous est envoyée.

  2. Je n'ai trouvé nulle part une définition de la robot.txtsyntaxe comprise par amazon cloudfront. C'était donc un essai et une erreur.

  3. Pour tester les résultats, utilisez l'outil "récupérer et afficher" de Google Webmaster et de leur testeur mobile ( https://www.google.com/webmasters/tools/mobile-friendly/ )

Je ne comprends pas pourquoi cloudfront valide et évalue mon robots.txt. Ce fichier est un "accord" avec moi et les robots d'exploration qui viennent sur mon site. Amazon n'a rien à faire au milieu. Jouer avec moi robots.txtest tout simplement stupide.

Il ne m'est jamais venu à l'esprit que cloudfront pourrait être en train de deviner ma robots.txtsyntaxe.

tonelot
la source
2

Créez un fichier robots.txt dans un compartiment.

Créez une autre origine pour votre distribution cloudfront.

Définissez la priorité de votre bucket plus haut que votre site Web.

Invalidez le fichier robots.txt de votre site sur Cloudfront.

Après avoir fait ce qui précède, Google lira les sites robots.txt lors de l'exploration de votre site et pourra voir les différents robots.txt en suivant les liens de votre cdn.

Parminder Singh Chahal
la source
1

Google ne bloque pas l'indexation des ressources externes via l'utilisation d'un fichier robots.txt à la racine du site principal. En utilisant un sous-domaine, un cdn ou autre est classé comme un domaine externe, la seule façon de bloquer le contenu est d'utiliser une réponse d'en-tête sur le fichier servi par le CDN lui-même, ou en utilisant un robots.txt sur le cdn ou le sous-domaine .

En utilisant:

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

Si vous ne devez bloquer que les images locales, vous devrez faire de même sur le CDN.

Les chances sont que c'est un problème de réponse d'en-tête et vous devriez faire un 'CURL' sur l'un des fichiers sur le CDN. Cela devrait ressembler à quelque chose comme:

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

Les choses à surveiller sont:

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
X-Robots-Tag: googlebot: noindex
Simon Hayter
la source
Bonjour, merci pour votre réponse. Mais mon problème n'est pas de savoir comment empêcher les images d'être indexées. Pour éviter toute confusion, je l'ai retiré du fichier robots.txt et les résultats sont les mêmes. Googlebot continue de se plaindre qu'il est bloqué sur les fichiers que j'héberge sur cloudfront et je ne sais pas pourquoi. Avez-vous d'autres idées? Merci pour votre attention, miguel
tonelot
Vous manquez de comprendre, je sais que vous ne voulez pas qu'il soit bloqué ... d'où la raison pour laquelle j'ai dit en bas pour vous assurer que votre réponse d'en-tête ne fait PAS de tag X-robots, vous dites également que check the robots.txt on your CloudFront distributionje l'ai dit aussi! Le seul moyen de bloquer les images indexées sur le CDN est le x-robots-tag et un robots.txt sur le CDN lui-même, encore une fois mentionnés.
Simon Hayter
1

J'ai découvert le problème: le CloudFront lit le fichier robots.txt et empêche de diffuser le contenu, mais il analyse la différence par rapport à ce que les robots devraient, je suppose.

Par exemple, le contenu suivant sur robots.txt:

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

Lorsque Googlebot l'obtient lui-même, il l'indexe; Lorsque CloudFront le lit, il ne prend pas en compte la directive «Allow» et interdit de servir quoi que ce soit à l'intérieur */wp-contents/themes/.

Réponse courte: vérifiez le fichier robots.txt sur votre distribution CloudFront, cela pourrait être le problème. Invalidez-le et mettez-le à jour avec une version corrigée et cela devrait fonctionner!

snagnever
la source
Cloudfront ne "lit" pas robots.txt ni ne "considère" son contenu, ni "empêche" quoi que ce soit. N'oubliez pas que ce que vous obtenez de cloudfront lorsque vous récupérez un objet ne vous dit rien sur ce que quelqu'un servirait à partir d'un autre emplacement périphérique obtiendrait, si son bord était mis en cache plus tôt ou plus tard que le vôtre. De plus, les caractères génériques principaux sont probablement une recette pour un comportement inattendu, car l'exclusion "standard" des robots n'est pas bien standardisée.
Michael - sqlbot
"CloudFront lit le fichier robots.txt" - S'agit-il d'un fichier robots.txt hébergé sur CloudFront lui-même? Le "caractère générique" semblerait également inutile, si les URL ressemblent à celles indiquées dans la question.
MrWhite
Salut. Certainement cloudfront lit mon robots.txt. Et n'accepte pas non plus la même syntaxe que google. J'avais déjà testé la suppression du fichier robots.txt et je n'ai vu aucun résultat car je n'ai pas demandé et invalidé dans cloudfront. J'ai supposé que ce n'était pas nécessaire parce que la dernière version m'était servie. Les tests prennent beaucoup de temps car chaque modification nécessite une demande d'invalidation qui prend une éternité pour se terminer. je reviendrai dans quelques heures avec une version fonctionnelle. Je ne sais pas pourquoi ce genre d '"intelligence" est nécessaire ... mais il est là et je pense qu'il ne devrait pas. miguel
tonelot
Le même robots.txt présent sur mon apache est celui que cloudfront a obtenu. Je l'ai déterminé empiriquement.
snagnever