Apa cara yang tepat untuk menangani Bolehkan dan Larang di robots.txt?

8

Saya menjalankan crawler Web skala besar. Kami berusaha sangat keras untuk mengoperasikan perayap dalam standar komunitas yang diterima, dan itu termasuk menghormati robots.txt. Kami mendapat sedikit keluhan tentang perayap, tetapi ketika kami melakukannya sebagian besar tentang penanganan kami atas robots.txt. Paling sering Webmaster membuat kesalahan di robots.txt dan kami dengan baik menunjukkan kesalahannya. Namun secara berkala kami mengalami area abu-abu yang melibatkan penanganan Allowdan Disallow.

The robots.txt Halaman tidak mencakup Allow. Saya telah melihat halaman lain, beberapa di antaranya mengatakan bahwa crawler menggunakan aturan "pencocokan pertama", dan yang lain tidak menentukan. Itu menyebabkan beberapa kebingungan. Misalnya, halaman Google tentang robots.txt yang digunakan untuk memiliki contoh ini:

User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html

Jelas, aturan "pencocokan pertama" di sini tidak akan berfungsi karena perayap akan melihat Disallowdan pergi, tidak pernah merayapi file yang secara khusus diizinkan.

Kita berada di tempat yang jelas jika kita mengabaikan semua Allowbaris, tetapi kemudian kita mungkin tidak merangkak sesuatu yang kita boleh jelajahi. Kami akan kehilangan banyak hal.

Kami telah sukses besar dengan memeriksa Allowterlebih dahulu, dan kemudian memeriksa Disallow, gagasan yang Allowdimaksudkan lebih spesifik daripada Disallow. Itu karena, secara default (yaitu dengan tidak adanya instruksi yang bertentangan), semua akses diperbolehkan. Tapi kemudian kita menemukan sesuatu seperti ini:

User-agent: *
Disallow: /norobots/
Allow: /

Maksudnya di sini sudah jelas, tetapi itu Allow: /akan menyebabkan bot yang memeriksa Allowterlebih dahulu untuk berpikir ia dapat merayapi apa pun di situs.

Bahkan itu bisa diselesaikan dalam kasus ini. Kami dapat membandingkan pencocokan Allowdengan pencocokan Disallowdan menentukan bahwa kami tidak diizinkan untuk merayapi apa pun di / norobots /. Tapi itu rusak ketika berhadapan dengan wildcard:

User-agent: *
Disallow: /norobots/
Allow: /*.html$

Pertanyaannya, kemudian, apakah bot diizinkan merangkak /norobots/index.html?

The "pencocokan pertama" aturan menghilangkan semua ambiguitas, tapi saya sering melihat situs yang menunjukkan sesuatu seperti contoh Google tua, menempatkan lebih spesifik Allow setelah itu Disallow. Sintaks itu membutuhkan lebih banyak pemrosesan oleh bot dan mengarah ke ambiguitas yang tidak dapat diselesaikan.

Pertanyaan saya, lalu, apakah cara yang benar untuk melakukan sesuatu? Apa yang diharapkan oleh Webmaster dari bot yang berperilaku baik ketika menangani robots.txt?

Jim Mischel
sumber
Cukup memproses semua arahan secara berurutan (atas ke bawah) akan menghapus semua ambiguitas (termasuk pemrosesan pola URL wildcard , yang secara resmi "tidak ditentukan"). Namun, bot mesin pencari utama (Googlebot, Bingbot, dll.) Tidak berfungsi seperti itu, jadi itu tidak bisa diterapkan.
MrWhite

Jawaban:

4

Satu catatan yang sangat penting: Biarkan pernyataan harus datang sebelum para Larang pernyataan, tidak peduli seberapa spesifik pernyataan Anda. Jadi, dalam contoh ketiga Anda - tidak, bot tidak akan merangkak /norobots/index.html.

Secara umum, sebagai aturan pribadi, saya menempatkan pernyataan allow terlebih dahulu dan kemudian saya daftarkan halaman dan folder yang tidak diizinkan.

Vergil Penkov
sumber
Jadi Anda merekomendasikan agar saya mengikuti standar "aturan pencocokan pertama"? Yaitu, bot membaca robots.txt dan mengambil Allow atau Disallow pertama yang cocok dengan url yang dimaksud?
Jim Mischel
1
Tapi tahukah Anda kalau itu interpretasi yang biasa diterima dari robots.txt? Artinya, jika saya menerapkan standar "aturan pencocokan pertama", apakah itu yang diharapkan sebagian besar Webmaster?
Jim Mischel
4
Deskripsi Izinkan dalam artikel Wikipedia tentang robots.txt - en.wikipedia.org/wiki/Robots_exclusion_standard#Allow_directive - (dan beberapa situs lainnya) mengatakan bahwa "aturan pencocokan pertama" adalah standar. Karena itu 100% tidak ambigu dan mudah diimplementasikan dan terbukti benar, itulah yang saya lakukan.
Jim Mischel
1
Terima kasih telah menjawab pertanyaan Anda sendiri :) Saya tidak yakin bagaimana harus menjawab. Saya tidak tahu tentang metode yang diterima secara umum, namun itulah cara saya menggunakannya sejak saya mulai bekerja sebagai pakar SEO dan selalu bekerja dengan benar.
Vergil Penkov
1
Urutan pernyataan Allow and Disallow tidak membuat perbedaan untuk Googlebot yang melihat kekhususan sebagai gantinya. Bing juga tetapi tidak tahu tentang mesin pencari lain jadi jika ragu-ragu menempatkan Izinkan dulu saya kira.
Pelms
2

Inilah pendapat saya tentang apa yang saya lihat dalam ketiga contoh itu.

Contoh 1
Saya akan mengabaikan seluruh /folder1/direktori kecuali yang myfile.htmlberkas. Karena mereka secara eksplisit mengizinkannya, saya akan berasumsi bahwa itu lebih mudah untuk memblokir seluruh direktori dan secara eksplisit mengizinkan satu file yang bertentangan dengan daftar setiap file yang mereka inginkan telah diblokir. Jika direktori itu berisi banyak file dan subdirektori, file robots.txt bisa menjadi sangat sulit.

Contoh 2
Saya akan berasumsi /norobots/direktori ini terlarang dan semua yang lain tersedia untuk dijelajahi. Saya membaca ini sebagai "crawl everything kecuali direktori / norobots /".

Contoh 3
Mirip dengan contoh 2, saya akan menganggap /norobots/direktori tersebut terlarang dan semua .htmlfile yang tidak ada dalam direktori tersebut tersedia untuk dirayapi. Saya membaca ini sebagai "crawl all .html file tetapi tidak merangkak konten apa pun di direktori / norobots /".

Semoga agen pengguna bot Anda berisi URL tempat mereka dapat menemukan informasi lebih lanjut tentang kebiasaan perayapan Anda dan membuat permintaan penghapusan atau memberi Anda umpan balik tentang bagaimana mereka ingin robot.txt mereka ditafsirkan.

John Conde
sumber
1
Jawaban Anda mungkin cocok dengan niat, kecuali untuk yang terakhir, yang menurut saya agak dipertanyakan. Dalam kasus-kasus tertentu saya dapat kode robot menangani dengan benar, tetapi ada kasus ambigu lainnya yang tidak mudah ditentukan. Terlebih lagi, saya mencari solusi umum. Dan, ya, string agen-pengguna kami memiliki tautan ke halaman FAQ kami. Dan meskipun kita dapat menjelaskan bagaimana kita menangani robots.txt, akan lebih baik bagi semua yang peduli jika kita tidak perlu melakukannya. Yaitu, jika semua orang menangani hal-hal dengan cara yang sama. Tapi sepertinya tidak demikian.
Jim Mischel
Di atas adalah cara Googlebot menangani contoh Anda karena dapat diuji pada alat pengujian robots.txt mereka (Alat Webmaster> URL yang Diblokir). Google tidak keberatan apakah Anda mengutamakan Allows atau Disallows tetapi memiliki algoritma yang menentukan spesifisitas, yang mengarah pada beberapa hasil yang tidak jelas. Misalnya, jika Anda mengganti '/*.html$' dengan '/*myfile.html$' pada contoh ke-3, maka 'myfile.html' diizinkan daripada diblokir ATAU jika Anda kehilangan jejak '/' dari ' / norobots / ', file .html juga diperbolehkan.
Pelms
Aha! Menurut Wikipedia, Google hanya melihat jumlah karakter untuk menentukan arahan mana yang harus digunakan dan dalam kasus 'menggambar' sesuai dengan 'Izinkan'.
Pelms