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?
*
am Ende der URL "Präfix" nie ein Präfix erforderlich ist ./test*
ist das gleiche wie/test
.Antworten:
Die Lösung scheint also zu sein, dass Amazon Cloudfront auch meine auswertet
robots.txt
und irgendwie andere Syntaxregeln als Google verwendet.Die Arbeitsversion von my
robots.txt
ist die folgende: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:
Wenn Sie damit testen, vergessen Sie nicht, die
robots.txt
Cloudfront-Verteilung für jede Iteration ungültig zu machen . Nur zu überprüfen, ob Ihnen die letzte Version zugestellt wird, reicht nicht aus.Ich konnte nirgendwo eine Definition der
robot.txt
Syntax finden, die von Amazon Cloudfront verstanden wird. Es war also Versuch und Irrtum.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 spielenrobots.txt
ist einfach nur dumm.Mir ist nie in den Sinn gekommen, dass Cloudfront meine
robots.txt
Syntax erraten könnte .quelle
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.
quelle
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:
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:
Dinge, auf die Sie achten sollten, sind:
quelle
check the robots.txt on your CloudFront distribution
ich 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.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!
quelle