it-swarm.com.de

Google crawlt keine CDN-Dateien

Ich habe festgestellt, dass Google Webmaster-Tools viele blockierte Ressourcen auf meiner Website meldet. Im Moment sind alle "blockierten Ressourcen" .css, .js und Images (.jpg, .png), die ich über Cloudfront CDN versorge.

Ich habe viel Zeit damit verbracht, zu testen und herauszufinden, warum Google diese Dateien nicht crawlt, und habe den Status "Ressourcenblockierung" gemeldet.

Zur Zeit diene ich diese Dateien von verschiedenen Hostnamen wie: cdn1.example.com, cdn2.example.com, ...

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

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

Momentan sieht meine robots.txt so 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 wurden:

  • 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 nichts gefunden, was damit zusammenhängen könnte (ich habe die Option "Viewer-Zugriff einschränken (signierte URLs oder signierte Cookies verwenden)" nicht verwendet und nie verwendet).

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

Kann sich jemand einen Grund vorstellen, warum Googlebot für das Crawlen von in Amazon CloudFront gehosteten Dateien gesperrt ist?

11
tonelot

Die Lösung scheint also zu sein, dass Amazon Cloudfront auch meinen robots.txt auswertet und irgendwie andere Syntaxregeln von Google verwendet.

Die Arbeitsversion meines robots.txt ist 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, der besagt, dass dies nicht genau dieselben Funktionen wie zuvor ausführt. Tatsächlich habe ich alle Leerzeilen, Platzhalter und "Erlauben" -Anweisungen entfernt. Das heißt, das Endergebnis ist nicht dasselbe ... aber ich denke, es ist nah genug für mich. Beispielsweise werden Tag-Seiten nicht ausgeschlossen, wenn sie als Abfragezeichenfolge übergeben werden ...

Drei wichtige Hinweise:

  1. Wenn Sie dies testen, vergessen Sie nicht, robots.txt in der Cloudfront-Distribution für jede Iteration ungültig zu machen. Nur zu überprüfen, ob Sie bedient werden, reicht nicht aus.

  2. Ich konnte nirgendwo eine Definition der robot.txt -Syntax finden, die von Amazon Cloudfront verstanden wird. Also war es Versuch und Irrtum.

  3. Verwenden Sie zum Testen der Ergebnisse das Tool "Abrufen und Rendern" des Google-Webmasters und seines Testers für mobile Geräte ( https://www.google.com/webmasters/tools/mobile-friendly/ ).

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

Mir ist nie in den Sinn gekommen, dass Cloudfront meine robots.txt -Syntax als zweites erraten könnte.

6
tonelot

Erstellen Sie eine robots.txt in einem Bucket.

Erstellen Sie ein anderes Origin für Ihre Cloudfront-Distribution.

Setzen Sie die Priorität Ihres Buckets höher als die Ihrer Website.

Invalidieren Sie die robots.txt Ihrer Site in Cloudfront.

Danach liest Google beim Crawlen Ihrer Website die Website robots.txt und sieht die verschiedenen robots.txt, wenn Sie Links von Ihrer CD folgen.

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

Verwenden von:

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

Sollten Sie nur lokale Bilder blockieren, müssen Sie dies auch auf dem CDN tun.

Möglicherweise liegt ein Problem mit der Header-Antwort vor, und Sie sollten eine der Dateien auf dem CDN mit einem CURL versehen. 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
1
Simon Hayter

Fand das Problem heraus: CloudFront liest die robots.txt und verhindert, dass der Inhalt bereitgestellt wird, analysiert jedoch, wie unterschiedlich sich die Roboter von denen unterscheiden sollten.

Zum Beispiel der folgende Inhalt auf robots.txt:

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

Wenn Googlebot es selbst abruft, indiziert es es. Wenn CloudFront es liest, berücksichtigt es nicht die 'Allow'-Direktive und verbietet es, irgendetwas in */wp-contents/themes/ zu liefern.

Kurze Antwort: Überprüfen Sie die robots.txt auf Ihrer CloudFront-Distribution, es könnte das Problem sein. Invalidiere und aktualisiere es mit einer korrigierten Version und es sollte funktionieren!

1
snagnever