Google crawlt keine CDN-Dateien

11

Ich habe festgestellt, dass die Google Webmaster-Tools viele blockierte Ressourcen auf meiner Website melden. Im Moment sind alle "blockierten Ressourcen" .css, .js und Bilder (.jpg, .png), die ich von Cloudfront CDN aus bediene.

Ich habe viel Zeit damit verbracht, zu testen und herauszufinden, warum Google diese Dateien nicht crawlt und einen "Ressourcenblock" -Status meldet.

Derzeit stelle ich diese Dateien von verschiedenen Hostnamen wie cdn1.example.com, cdn2.example.com,…

cdn1, cdn2 und die anderen sind CNAME für den Cloudfront-Distributionsnamen.

Test: Ich habe versucht, die Cloudfront-Distribution (kein CNAME) direkt zu verwenden, aber das Problem besteht weiterhin.

Derzeit sieht meine robots.txt folgendermaßen aus:

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

Und Beispiele für Dateien, die auf einer Beispielseite blockiert sind:

  • 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

Ich habe sogar versucht, alles in robots.txt zuzulassen, aber ich habe immer das gleiche Ergebnis.

Ich habe mir auch die CloudFront-Einstellungen in Amazon genau angesehen und festgestellt, dass nichts damit zu tun hat (ich verwende die Option "Viewer-Zugriff einschränken (signierte URLs oder signierte Cookies verwenden) nicht und habe sie nie verwendet").

Im Moment habe ich viel Zeit damit verbracht, mich damit zu beschäftigen und habe keine Ideen mehr.

Kann sich jemand einen Grund vorstellen, warum Googlebot daran gehindert wird, in Amazon CloudFront gehostete Dateien zu crawlen?

Tonelot
quelle
Haben Sie die HTTP-Antwortheader dieser "blockierten Ressourcen" untersucht? Welchen genauen Fehler meldet GWT? Wenn sie von robots.txt blockiert wurden, sollte dies gemeldet werden.
MrWhite
Kleinere Kommentare zu Ihrer robots.txt-Datei ... URLs werden standardmäßig mit Präfixen abgeglichen, sodass *am Ende der URL "Präfix" nie ein Präfix erforderlich ist . /test*ist das gleiche wie /test.
MrWhite
Hallo, ich kann die Header nicht untersuchen, da ich nicht weiß, was Googlebot bekommt. Ich erhalte nur die Meldung: "Googlebot konnte nicht alle Ressourcen für diese Seite abrufen. Hier ist eine Liste:" und dann die Liste aller von CDN gehosteten Dateien (js, css und images) mit dem "Grund": "Blockiert".
Tonelot
Da ich nach "Abrufen und Rendern"
frage,
Vielen Dank auch für den Hinweis zur robots.txt-Syntax.
Tonelot

Antworten:

7

Die Lösung scheint also zu sein, dass Amazon Cloudfront auch meine auswertet robots.txtund irgendwie andere Syntaxregeln als Google verwendet.

Die Arbeitsversion von my robots.txtist die folgende:

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

Ein sehr wichtiger Hinweis, dass dies nicht genau die gleichen Funktionen wie zuvor ausführt. Tatsächlich habe ich alle Leerzeilen, Platzhalter und "Zulassen" -Anweisungen entfernt. Das bedeutet, dass das Endergebnis nicht dasselbe ist ... aber ich denke, es ist nah genug für mich. Beispielsweise werden Tag-Seiten nicht ausgeschlossen, wenn sie in einer Abfragezeichenfolge übergeben werden ...

Drei wichtige Hinweise:

  1. Wenn Sie damit testen, vergessen Sie nicht, die robots.txtCloudfront-Verteilung für jede Iteration ungültig zu machen . Nur zu überprüfen, ob Ihnen die letzte Version zugestellt wird, reicht nicht aus.

  2. Ich konnte nirgendwo eine Definition der robot.txtSyntax finden, die von Amazon Cloudfront verstanden wird. Es war also Versuch und Irrtum.

  3. Verwenden Sie zum Testen der Ergebnisse das Tool "Abrufen und Rendern" von Google Webmaster und dessen mobilfreundlichem Tester ( https://www.google.com/webmasters/tools/mobile-friendly/ ).

Ich verstehe nicht, warum Cloudfront meine validiert und bewertet robots.txt. Diese Datei ist ein "Deal" mit mir und den Crawlern, die auf meine Site kommen. Amazon hat kein Geschäft in der Mitte. Mit mir zu spielen robots.txtist einfach nur dumm.

Mir ist nie in den Sinn gekommen, dass Cloudfront meine robots.txtSyntax erraten könnte .

Tonelot
quelle
2

Erstellen Sie eine robots.txt in einem Bucket.

Erstellen Sie einen anderen Ursprung für Ihre Cloudfront-Distribution.

Stellen Sie die Priorität Ihres Buckets höher ein als Ihre Website.

Ungültigmachen Sie die robots.txt Ihrer Site in Cloudfront.

Nachdem Sie die oben genannten Schritte ausgeführt haben, liest Google beim Crawlen Ihrer Website die Websites robots.txt und zeigt die verschiedenen robots.txt an, wenn Sie Links von Ihrer CDN folgen.

Parminder Singh Chahal
quelle
1

Google verhindert nicht, dass externe Ressourcen mithilfe einer robots.txt im Stammverzeichnis der Hauptwebsite indiziert werden. Bei Verwendung einer Subdomäne wird eine CDN oder eine andere als externe Domäne klassifiziert. Die einzige Möglichkeit, den Inhalt zu blockieren, besteht darin, eine Header-Antwort auf die vom CDN selbst bereitgestellte Datei oder eine robots.txt auf der CDN- oder Subdomäne zu verwenden .

Verwenden von:

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

Wenn nur lokale Bilder blockiert werden sollen, müssen Sie dies auch auf dem CDN tun.

Es besteht die Möglichkeit, dass es sich um ein Header-Antwortproblem handelt, und Sie sollten eine 'CURL' für eine der Dateien auf dem CDN ausführen. Es sollte ungefähr so ​​aussehen:

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

Dinge, auf die Sie achten sollten, sind:

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
X-Robots-Tag: googlebot: noindex
Simon Hayter
quelle
Hallo, danke für deine Antwort. Mein Problem ist jedoch nicht, wie ich verhindern kann, dass Bilder indiziert werden. Um Verwirrung zu vermeiden, habe ich das aus der robots.txt genommen und die Ergebnisse sind die gleichen. Googlebot beschwert sich immer wieder, dass es für Dateien blockiert ist, die ich in der Cloud hoste, und ich weiß nicht warum. Noch mehr Ideen? Vielen Dank für Ihre Aufmerksamkeit, Miguel
Tonelot
Sie vermissen verstanden, ich weiß, dass Sie nicht wollen, dass es blockiert wird ... daher habe ich unten gesagt, um sicherzustellen, dass Ihre Header-Antwort KEIN X-Robots-Tag ist, und Sie sagen auch, dass check the robots.txt on your CloudFront distributionich das auch gesagt habe! Die einzige Möglichkeit, Bilder zu blockieren, die auf dem CDN indiziert werden, ist das x-robots-Tag und eine robots.txt auf dem CDN selbst, die erneut erwähnt werden.
Simon Hayter
1

Das Problem wurde herausgefunden: Der CloudFront liest die robots.txt und verhindert das Bereitstellen des Inhalts, analysiert jedoch einige Unterschiede zu den Robotern.

Zum Beispiel den folgenden Inhalt auf robots.txt:

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

Wenn Googlebot es selbst erhält, indiziert es es. Wenn CloudFront es liest, berücksichtigt es die 'Allow'-Direktive nicht und verbietet, irgendetwas darin bereitzustellen */wp-contents/themes/.

Kurze Antwort: Überprüfen Sie die robots.txt in Ihrer CloudFront-Distribution. Möglicherweise liegt das Problem darin. Ungültig machen und mit einer korrigierten Version aktualisieren und es sollte funktionieren!

Snagnever
quelle
Cloudfront "liest" weder robots.txt noch "berücksichtigt" es seinen Inhalt und "verhindert" nichts. Denken Sie daran, dass das, was Sie von der Cloudfront erhalten, wenn Sie ein Objekt abrufen, nichts darüber aussagt, was jemand, der von einem anderen Randstandort bedient wird, erhalten würde, wenn sein Rand früher oder später zwischengespeichert würde als Ihr Rand. Auch die führenden Platzhalter sind wahrscheinlich ein Rezept für unerwartetes Verhalten, da der Roboterausschluss "Standard" nicht gut standardisiert ist.
Michael - sqlbot
"CloudFront liest die robots.txt" - Ist dies eine robots.txt-Datei, die auf CloudFront selbst gehostet wird? Der "führende Platzhalter" scheint ebenfalls unnötig zu sein, wenn die URLs den in der Frage angegebenen entsprechen.
MrWhite
Hallo. Auf jeden Fall liest Cloudfront meine robots.txt. Und akzeptiert definitiv nicht die gleiche Syntax wie Google. Ich hatte bereits getestet, wie die robots.txt herausgenommen wurde, und sah keine Ergebnisse, da ich sie nicht angefordert und in der Cloud nicht ungültig gemacht hatte. Vorausgesetzt, es war nicht notwendig, weil mir die neueste Version serviert wurde. Das Testen dauert lange, da für jede Änderung eine Ungültigkeitsanforderung erforderlich ist, deren Abschluss ewig dauert. Ich werde in ein paar Stunden mit einer funktionierenden Version zurückkommen. Ich weiß nicht, warum diese Art von "Schlauheit" benötigt wird ... aber es ist da und ich denke, es sollte nicht. Miguel
Tonelot
Die gleiche robots.txt, die auf meinem Apache vorhanden ist, ist die, die Cloudfront hat. Ich habe es empirisch ermittelt.
Snagnever