Google tidak merayapi file CDN

11

Saya perhatikan bahwa Alat Webmaster Google melaporkan banyak sumber daya yang diblokir di situs web saya. Saat ini semua "sumber daya yang diblokir" adalah .css, .js, dan gambar (.jpg, .png) yang saya layani dari Cloudfront CDN.

Saya telah menghabiskan banyak waktu pengujian dan mencoba mencari tahu mengapa google tidak merayapi file-file ini dan melaporkan status "blok sumber daya".

Saat ini saya melayani file-file ini dari beberapa nama host seperti: cdn1.example.com, cdn2.example.com,…

cdn1, cdn2 dan yang lainnya adalah CNAME untuk nama distribusi cloudfront.

Pengujian: Saya sudah mencoba menggunakan langsung distribusi cloudfront (tidak ada CNAME) tetapi masalahnya tetap ada.

Saat ini robots.txt saya terlihat seperti ini:

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

Dan contoh file diblokir dalam satu halaman contoh:

  • 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/responsif .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

Saya bahkan sudah mencoba mengizinkan semuanya dalam robots.txt tetapi saya selalu memiliki hasil yang sama.

Saya juga telah melihat dengan hati-hati pada pengaturan CloudFront di Amazon dan tidak melihat apa pun yang dapat dikaitkan (Saya tidak menggunakan dan tidak pernah menggunakan opsi: "Batasi Akses Penampil (Gunakan URL yang Ditandatangani atau Cookie yang Ditandatangani)".

Saat ini saya telah menghabiskan banyak waktu untuk menyelidiki hal ini dan tidak memiliki ide lagi.

Adakah yang bisa memikirkan alasan mengapa Googlebot akan diblokir dari merayapi file yang dihosting di Amazon CloudFront?

tonelot
sumber
Sudahkah Anda memeriksa tajuk respons HTTP dari "sumber daya yang diblokir" ini? Kesalahan apa tepatnya yang dilaporkan GWT? Jika mereka diblokir oleh robots.txt maka itu harus melaporkan ini.
MrWhite
Komentar kecil tentang file robots.txt Anda ... URL diawali dengan yang dicocokkan secara default, jadi tidak perlu ada *di akhir "awalan" URL. /test*sama dengan /test.
MrWhite
Hai, saya tidak dapat memeriksa tajuk, karena saya tidak tahu apa yang didapat dari googlebot. Saya baru saja mendapatkan pesan: "Googlebot tidak bisa mendapatkan semua sumber daya untuk halaman ini. Berikut daftar:" dan kemudian daftar semua file yang di-host CDN (js, css dan gambar) dengan "Alasan": "Diblokir".
tonelot
Karena saya meminta untuk "mengambil dan membuat" Saya juga melihat bahwa rendering tidak memiliki gaya dan gambar ....
tonelot
Juga, terima kasih atas catatan pada sintaks robots.txt.
tonelot

Jawaban:

7

Jadi, solusinya tampaknya Amazon cloudfront juga mengevaluasi saya robots.txtdan entah bagaimana menggunakan aturan sintaksis yang berbeda dari google.

Versi kerja saya robots.txtadalah sebagai berikut:

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

Catatan yang sangat penting untuk mengatakan bahwa ini tidak menjalankan fungsi yang sama persis seperti sebelumnya. Bahkan, saya mengeluarkan semua baris kosong, wildcard dan arahan "izinkan". Berarti hasil akhirnya tidak sama ... tapi saya pikir cukup dekat untuk saya. Misalnya itu tidak mengecualikan halaman tag ketika dikirimkan dalam string kueri ...

Tiga catatan penting:

  1. Jika Anda mengujinya dengan ini jangan lupa membatalkan robots.txtvalidasi dalam distribusi cloudfront untuk setiap iterasi. Hanya memeriksa Anda dilayani versi terakhir tidak cukup.

  2. Saya tidak dapat menemukan definisi robot.txtsintaks yang dipahami oleh amazon cloudfront. Jadi, itu coba-coba.

  3. Untuk menguji hasil, gunakan alat "ambil dan render" dari google webmaster dan penguji ramah seluler mereka ( https://www.google.com/webmasters/tools/mobile-friendly/ )

Saya tidak mengerti mengapa cloudfront memvalidasi dan mengevaluasi saya robots.txt. File ini adalah "kesepakatan" dengan saya dan perayap yang datang ke situs saya. Amazon tidak memiliki bisnis di tengah. Bercak dengan saya robots.txtbenar-benar bodoh.

Tidak pernah terlintas dalam pikiran saya bahwa cloudfront bisa menjadi yang kedua menebak robots.txtsintaksis saya .

tonelot
sumber
2

Buat robots.txt dalam ember.

Buat asal lain untuk distribusi cloudfront Anda.

Tetapkan prioritas bucket Anda lebih tinggi daripada situs web Anda.

Validasikan robots.txt situs Anda di Cloudfront.

Setelah melakukan hal di atas, Google akan membaca situs robots.txt ketika merayapi situs Anda dan akan melihat robots.txt yang berbeda ketika mengikuti tautan dari cdn Anda.

Parminder Singh Chahal
sumber
1

Google tidak memblokir sumber daya eksternal agar tidak diindeks menggunakan robots.txt di root situs utama. Menggunakan sub domain, cdn atau lainnya digolongkan sebagai domain eksternal karenanya satu-satunya cara untuk memblokir konten adalah dengan menggunakan respons header pada file yang dilayani oleh CDN itu sendiri, atau dengan menggunakan robots.txt pada cdn atau sub domain .

Menggunakan:

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

Jika hanya memblokir gambar yang bersifat lokal, Anda harus melakukan hal yang sama pada CDN.

Kemungkinannya adalah masalah respons tajuk dan Anda harus melakukan 'CURL' pada salah satu file di CDN. Seharusnya terlihat seperti:

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

Hal-hal yang harus diperhatikan adalah:

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
X-Robots-Tag: googlebot: noindex
Simon Hayter
sumber
Hai, Terima kasih atas jawaban Anda. Tapi masalah saya bukan bagaimana mencegah gambar diindeks. Untuk menghindari kebingungan, saya mengeluarkannya dari robots.txt dan hasilnya sama. Googlebot terus mengeluh itu diblokir pada file yang saya host di cloudfront dan saya tidak tahu mengapa. Ada ide lagi? Terima kasih atas perhatian Anda, miguel
tonelot
Anda salah mengerti, saya tahu Anda tidak ingin itu diblokir ... karenanya mengapa saya katakan di bagian bawah untuk memastikan bahwa tanggapan header Anda TIDAK melakukan tag-X-robot, Anda juga mengatakan check the robots.txt on your CloudFront distributionsaya mengatakan ini juga! Satu-satunya cara untuk memblokir gambar yang diindeks pada CDN adalah x-robots-tag dan robots.txt pada CDN itu sendiri, lagi-lagi disebutkan.
Simon Hayter
1

Mengetahui masalahnya: CloudFront membaca robots.txt dan mencegah penyajian konten, tetapi mengurai beberapa perbedaan dari robot yang seharusnya, saya kira.

Misalnya, konten berikut di robots.txt:

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

Ketika Googlebot mendapatkannya sendiri, indeks itu; Ketika CloudFront membacanya, itu tidak mempertimbangkan arahan 'Izinkan', dan melarang untuk melayani apa pun di dalamnya */wp-contents/themes/.

Jawaban singkat: periksa robots.txt pada distribusi CloudFront Anda, mungkin itu masalahnya. Batalkan dan perbarui dengan versi yang diperbaiki dan itu akan berfungsi!

snagnever
sumber
Cloudfront tidak "membaca" robots.txt juga tidak "mempertimbangkan" isinya, atau "mencegah" apa pun. Ingatlah bahwa apa yang Anda dapatkan dari cloudfront ketika Anda mengambil objek tidak memberi tahu Anda tentang apa yang akan didapatkan seseorang dari lokasi tepi lain, jika tepiannya lebih cepat dari yang sebelumnya. Selain itu, wildcard terkemuka mungkin merupakan resep untuk perilaku tak terduga, karena pengecualian robot "standar" tidak terstandarisasi dengan baik.
Michael - sqlbot
"CloudFront membaca robots.txt" - Apakah ini file robots.txt yang dihosting di CloudFront sendiri? "Wildcard terkemuka" juga tampaknya tidak perlu, jika URL-nya mirip dengan yang dinyatakan dalam pertanyaan.
MrWhite
Hai. Jelas cloudfront sedang membaca robots.txt saya. Dan juga pasti tidak menerima sintaks yang sama dengan google. Saya telah menguji mengambil robots.txt dan tidak melihat hasil karena saya tidak meminta dan membatalkan di cloudfront. Diasumsikan itu tidak perlu karena saya sedang dilayani versi terbaru. Pengujian membutuhkan waktu lama karena setiap perubahan memerlukan permintaan pembatalan yang membutuhkan waktu selamanya untuk diselesaikan. saya akan kembali dalam beberapa jam dengan versi yang berfungsi. Saya tidak tahu mengapa "kecerdasan" semacam ini diperlukan..tapi itu ada di sana dan saya pikir seharusnya tidak. miguel
tonelot
Hadiah robots.txt yang sama pada apache saya adalah yang dimiliki cloudfront. Saya menentukannya secara empiris.
snagnever