Spesifikasi robots.txt

Abstrak

Dokumen ini menjelaskan cara Google menangani file robots.txt yang memungkinkan Anda mengontrol cara crawler situs Google meng-crawl dan mengindeks situs yang dapat diakses secara publik.

Bahasa Persyaratan

Kata kunci "MUST" (harus), "MUST NOT" (tidak boleh), "REQUIRED" (wajib), "SHALL" (seharusnya), "SHALL NOT" (seharusnya tidak), "SHOULD" (sebaiknya), "SHOULD NOT" (sebaiknya tidak), "RECOMMENDED" (disarankan), "MAY" (mungkin), dan "OPTIONAL" (opsional) dalam dokumen ini akan diinterpretasikan seperti yang dijelaskan dalam RFC 2119.

Definisi dasar

Definisi
Crawler Crawler merupakan layanan atau agen yang meng-crawl situs. Pada umumnya, crawler secara otomatis dan berulang mengakses URL host yang diketahui mengekspos konten yang dapat diakses menggunakan browser web standar. Saat URL baru ditemukan (melalui berbagai cara, misalnya dari link pada halaman hasil crawling yang ada atau dari file Peta situs), URL baru juga di-crawl dengan cara yang sama.
Agen pengguna Cara untuk mengidentifikasi crawler atau kumpulan crawler tertentu.
Perintah Daftar pedoman yang dapat diterapkan untuk crawler atau kelompok crawler yang ditetapkan dalam file robots.txt.
URL Uniform Resource Locators (Lokator Sumber Seragam) seperti yang didefinisikan di RFC 1738.
Khusus Google Elemen ini bersifat khusus untuk penerapan robot.txt oleh Google dan mungkin tidak relevan bagi pihak lain.

Status berlaku

Pedoman yang ditetapkan dalam dokumen ini diikuti oleh semua crawler otomatis di Google. Ketika agen mengakses URL atas nama pengguna (misalnya, untuk penerjemahan, berlangganan feed secara manual, analisis perangkat malware, dll.), pedoman ini tidak perlu diterapkan.

Lokasi file & rentang validitas

File robots.txt harus berada dalam direktori level atas host serta dapat diakses melalui protokol dan nomor port yang tepat. Umumnya protokol yang diterima untuk robots.txt (dan crawling situs web) adalah "http" dan "https". Di http dan https, file robots.txt diambil menggunakan permintaan GET non-kondisional HTTP.

Khusus Google: Google juga menerima dan mengikuti file robots.txt untuk situs FTP. File robots.txt berbasis FTP diakses via protokol FTP, menggunakan proses login anonim.

Perintah yang tercantum dalam file robots.txt hanya berlaku untuk host, protokol, dan nomor port tempat file dihosting.

Contoh URL robots.txt yang valid

Contoh URL Robots.txt
http://example.com/robots.txt Valid untuk:
  • http://example.com/
  • http://example.com/folder/file
Tidak valid untuk:
  • http://other.example.com/
  • https://example.com/
  • http://example.com:8181/
http://www.example.com/robots.txt

Valid untuk: http://www.example.com/

Tidak valid untuk:

  • http://example.com/
  • http://shop.www.example.com/
  • http://www.shop.example.com/
http://example.com/folder/robots.txt Bukan file robots.txt yang valid. Crawler tidak akan memeriksa file robots.txt di subdirektori.
http://www.müller.eu/robots.txt Valid untuk:
  • http://www.müller.eu/
  • http://www.xn--mller-kva.eu/

Tidak valid untuk: http://www.muller.eu/

ftp://example.com/robots.txt

Valid untuk: ftp://example.com/

Tidak valid untuk: http://example.com/

Khusus Google: Kami menggunakan robots.txt untuk fasilitas FTP.

http://212.96.82.21/robots.txt

Valid untuk: http://212.96.82.21/

Tidak valid untuk: http://example.com/ (meskipun dihosting di 212.96.82.21)

http://example.com:80/robots.txt

Valid untuk:

  • http://example.com:80/
  • http://example.com/

Tidak valid untuk: http://example.com:81/

http://example.com:8181/robots.txt

Valid untuk: http://example.com:8181/

Tidak valid untuk: http://example.com/

Menangani kode hasil HTTP

Umumnya ada tiga hasil yang berbeda saat file robots.txt diambil:

  • sepenuhnya diizinkan: Semua konten dapat di-crawl.
  • sepenuhnya dilarang: Tidak ada konten yang dapat di-crawl.
  • diizinkan sesuai kondisi: Perintah dalam robots.txt menentukan kemampuan untuk meng-crawl konten tertentu.
Menangani kode hasil HTTP
2xx (berhasil) Kode hasil HTTP yang menunjukkan keberhasilan crawling yang "diizinkan sesuai kondisi".
3xx (pengalihan) Umumnya pengalihan akan diikuti sampai hasil valid dapat ditemukan (atau diketahui ada perputaran). Kami akan mengikuti jumlah yang terbatas atas lompatan pengalihan (RFC 1945 untuk HTTP/1.0 memungkinkan hingga maksimal 5 lompatan) lalu berhenti dan memperlakukannya sebagai 404. Penanganan pengalihan robots.txt untuk URL yang dilarang belum ditentukan dan tidak disarankan. Penanganan pengalihan logis untuk file robots.txt yang berbasis di konten HTML yang mengembalikan 2xx (bingkai, JavaScript, atau pengalihan jenis pemuatan ulang meta) belum ditentukan dan tidak disarankan.
4xx (error klien) Google memperlakukan semua error 4xx dengan cara yang sama dan menganggap tidak ada file robots.txt yang valid. Dan akan diasumsikan bahwa tidak ada batasan. Ini adalah "sepenuhnya diizinkan" untuk crawling.
5xx (error server)

Error server dilihat sebagai error sementara yang menyebabkan "sepenuhnya dilarang" untuk crawling. Permintaan ini akan dicoba lagi sampai diperoleh kode hasil HTTP yang bukan error server. Error 503 (Layanan Tidak Tersedia) akan menyebabkan percobaan ulang yang cukup sering. Untuk menangguhkan crawling sementara waktu, sebaiknya berikan kode hasil HTTP 503. Penanganan error server permanen belum ditentukan.

Khusus Google: Jika kami dapat menentukan bahwa suatu situs salah dikonfigurasi dengan mengembalikan 5xx dan bukan 404 untuk halaman yang tidak ada, kami akan memperlakukan error 5xx dari situs tersebut sebagai 404.

Permintaan gagal atau data tidak lengkap Penanganan file robots.txt yang tidak dapat diambil karena masalah DNS atau jaringan misalnya waktu tunggu habis, respons tidak valid, sambungan disetel ulang/terputus, error pemotongan HTTP, dll. belum ditentukan.
Menyimpan ke cache Pada umumnya permintaan robots.txt disimpan dalam cache maksimal selama satu hari, namun juga dapat disimpan dalam cache lebih lama jika pemuatan ulang versi yang disimpan dalam cache tidak dapat dilakukan (misalnya, karena waktu tunggu habis atau error 5xx). Respons yang disimpan dalam cache dapat dibagikan dengan crawler lain. Google dapat menambah atau mengurangi masa cache berdasarkan header HTTP max-age Cache-Control.

Format file

Format file yang diharapkan adalah teks biasa yang dienkode dalam UTF-8. File ini terdiri dari rekaman (baris) yang dipisah oleh CR, CR/LF, atau LF.

Hanya rekaman valid yang akan dipertimbangkan; semua konten lain akan diabaikan. Misalnya, jika dokumen yang dihasilkan adalah halaman HTML, hanya baris teks valid yang akan dimasukkan dalam akun, sisanya akan dihapus tanpa peringatan atau error.

Jika enkode karakter digunakan dan menyebabkan penggunaan karakter yang bukan bagian dari UTF-8, konten file dapat diurai dengan cara yang salah.

Unikode opsional BOM (tanda urutan byte) di awal file robots.txt akan diabaikan.

Setiap rekaman terdiri dari bidang, titik dua, dan nilai. Spasi bersifat opsional (namun disarankan agar mudah terbaca). Komentar dapat disertakan di lokasi mana pun pada file menggunakan karakter "#"; semua konten setelah awal komentar hingga akhir rekaman akan diperlakukan sebagai komentar dan diabaikan. Format umumnya adalah <field>:<value><#optional-comment>. Spasi di awal dan di akhir rekaman akan diabaikan.

Elemen <field> peka terhadap huruf besar dan kecil. Elemen <value> mungkin peka huruf besar kecil, tergantung elemen <field>.

Penanganan elemen <field> dengan error sederhana/salah eja misalnya "useragent" bukan "user-agent") belum ditentukan dan dapat diinterpretasikan sebagai perintah yang benar oleh beberapa agen pengguna.

Ukuran file maksimum mungkin diberlakukan per crawler. Konten yang lebih besar dari ukuran file maksimum mungkin diabaikan. Google saat ini memberlakukan batas ukuran 500 kilobyte (KB).

Sintaks formal/definisi

Ini merupakan deskripsi seperti Backus-Naur Form (BNF), yang menggunakan konvensi RFC 822, kecuali jika "|" digunakan untuk menunjukkan alternatif. Literal diberi kutipan dengan "", tanda kurung "(" dan ")" digunakan untuk mengelompokkan elemen, elemen opsional diapit di dalam [kurung kotak], dan elemen dapat diawali dengan <n>* untuk menentukan pengulangan elemen selanjutnya sebanyak n atau lebih; default n adalah 0.

robotstxt = *entries
entries = *( ( <1>*startgroupline
  *(groupmemberline | nongroupline | comment)
  | nongroupline
  | comment) )
startgroupline = [LWS] "user-agent" [LWS] ":" [LWS] agentvalue [comment] EOL
groupmemberline = [LWS] (
  pathmemberfield [LWS] ":" [LWS] pathvalue
  | othermemberfield [LWS] ":" [LWS] textvalue) [comment] EOL
nongroupline = [LWS] (
  urlnongroupfield [LWS] ":" [LWS] urlvalue
  | othernongroupfield [LWS] ":" [LWS] textvalue) [comment] EOL
comment = [LWS] "#" *anychar
agentvalue = textvalue

pathmemberfield = "disallow" | "allow"
othermemberfield = ()
urlnongroupfield = "sitemap"
othernongroupfield = ()

pathvalue = "/" path
urlvalue = absoluteURI
textvalue = *(valuechar | SP)
valuechar = <any UTF-8 character except ("#" CTL)>
anychar = <any UTF-8 character except CTL>
EOL = CR | LF | (CR LF)

Sintaks untuk "absoluteURI", "CTL", "CR", "LF", "LWS" didefinisikan dalam RFC 1945. Sintaks untuk "path" didefinisikan dalam RFC 1808.

Mengelompokkan rekaman

Rekaman dikelompokkan ke dalam jenis yang berbeda berdasarkan jenis elemen <field>:

  • start-of-group (awal grup)
  • group-member (anggota grup)
  • non-group (bukan grup)

Semua rekaman group-member setelah rekaman start-of-group hingga rekaman start-of-group berikutnya diperlakukan sebagai grup rekaman. Satu-satunya elemen bidang start-of-group adalah user-agent. Beberapa baris start-of-group berturut-turut akan mengikuti rekaman group-member yang mengikuti baris start-of-group akhir. Rekaman group-member yang tidak diawali dengan start-of-group akan diabaikan. Semua rekaman non-group bersifat valid terlepas dari semua grup.

Elemen <field> yang valid, yang akan dijelaskan lebih jauh satu per satu dalam dokumen ini adalah:

  • user-agent (start of group)
  • disallow (hanya valid sebagai rekaman group-member)
  • allow (hanya valid sebagai rekaman group-member)
  • sitemap (rekaman non-group)

Semua elemen <field> lainnya mungkin diabaikan.

Elemen start-of-group user-agent digunakan untuk menentukan untuk crawler mana grup tersebut valid. Hanya satu grup rekaman yang valid untuk satu crawler tertentu. Kita akan membahas urutan prioritas di dokumen ini nanti.

Grup contoh:

user-agent: a
disallow: /c

user-agent: b
disallow: /d

user-agent: e
user-agent: f
disallow: /g

Ada tiga grup berbeda yang ditentukan, satu untuk "a" dan satu untuk "b" serta satu grup untuk "e" dan "f". Setiap grup memiliki rekaman group-member masing-masing. Ingatlah penggunaan opsional spasi (baris kosong) agar lebih mudah terbaca.

Urutan prioritas untuk agen pengguna

Hanya satu grup rekaman group-member yang valid untuk satu crawler tertentu. Crawler perlu menentukan grup rekaman yang tepat dengan mencari grup dengan agen pengguna paling spesifik yang masih cocok. Semua rekaman grup lainnya akan diabaikan oleh crawler. Agen pengguna tidak peka huruf besar kecil. Semua teks yang tidak cocok akan diabaikan (misalnya, baik googlebot/1.2 dan googlebot* setara dengan googlebot). Urutan grup dalam file robots.txt tidak relevan.

Contoh

Diasumsikan file robots.txt berikut:

user-agent: googlebot-news
(group 1)

user-agent: *
(group 2)

user-agent: googlebot
(group 3)

Berikut cara crawler memilih grup yang relevan:

Grup rekaman yang diikuti per crawler
Googlebot Berita Grup rekaman yang diikuti adalah grup 1. Hanya grup paling spesifik yang diikuti, semua grup lain akan diabaikan.
Googlebot (web) Grup rekaman yang diikuti adalah grup 3.
Googlebot Gambar Grup rekaman yang diikuti adalah grup 3. Tidak ada grup googlebot-images spesifik, sehingga grup yang lebih umum akan diikuti.
Googlebot Berita (saat meng-crawl gambar) >Grup rekaman yang diikuti adalah grup 1. Gambar ini di-crawl untuk dan oleh Googlebot Berita, oleh karena itu hanya grup Googlebot Berita yang diikuti.
Bot lain (web) Grup rekaman yang diikuti adalah grup 2.
Bot lain (Berita) Grup rekaman yang diikuti adalah grup 2. Meskipun ada entri untuk crawler terkait, entri hanya valid jika cocok secara khusus.

Lihat juga Crawler Google dan string agen pengguna.

Rekaman group-member (anggota grup)

Hanya jenis rekaman group-member umum dan khusus Google yang dicakup dalam bagian ini. Jenis rekaman ini juga disebut "perintah" untuk crawler. Perintah ini ditentukan dalam bentuk directive: [path], dan [path] bersifat opsional. Secara default, tidak ada batasan crawling untuk crawler yang ditentukan. Perintah tanpa [path] akan diabaikan.

Nilai [path], jika ditentukan, harus terlihat relatif dari akar situs tempat file robots.txt diambil (menggunakan protokol, nomor port, host, dan nama domain yang sama). Nilai path (lokasi) harus diawali dengan "/" untuk menentukan akar. Lokasi membedakan huruf besar/kecil. Informasi selengkapnya dapat ditemukan di bagian "Pencocokan URL berdasarkan nilai lokasi" di bawah.

disallow

Perintah disallow menentukan lokasi yang tidak boleh diakses oleh crawler yang ditetapkan. Jika tidak ada lokasi yang ditentukan, perintah akan diabaikan.

Penggunaan:

disallow: [path]

allow

Perintah allow menentukan lokasi yang dapat diakses oleh crawler yang ditetapkan. Jika tidak ada lokasi yang ditetapkan, perintah akan diabaikan.

Penggunaan:

allow: [path]

Pencocokan URL berdasarkan nilai lokasi

Nilai lokasi digunakan sebagai dasar dalam menentukan apakah aturan berlaku untuk URL khusus di suatu situs atau tidak. Dengan pengecualian karakter pengganti, lokasi digunakan untuk mencocokkan awal URL (dan URL valid apa pun yang diawali dengan lokasi yang sama). Karakter yang bukan ASCII 7-bit di dalam lokasi dapat disertakan sebagai karakter UTF-8 atau sebagai karakter yang dienkode UTF-8 percent-escaped sesuai RFC 3986.

Google, Bing, Yahoo, dan Ask mendukung bentuk "karakter pengganti" yang terbatas untuk nilai lokasi. Berikut formatnya:

  • * menentukan 0 atau instance karakter valid lainnya.
  • $ menentukan akhir URL.
Contoh kecocokan lokasi
/ Cocok dengan akar dan URL tingkat yang lebih rendah
/* Setara dengan /. Karakter pengganti terakhir diabaikan.
/fish

Cocok dengan:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

Tidak cocok:

  • /Fish.asp
  • /catfish
  • /?id=fish
/fish*

Setara dengan /fish. Karakter pengganti terakhir diabaikan.

Cocok dengan:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

Tidak cocok:

  • /Fish.asp
  • /catfish
  • /?id=fish
/fish/

Garis miring di belakangnya menunjukkan ini cocok dengan semua yang ada dalam folder.

Cocok dengan:

  • /fish/
  • /fish/?id=anything
  • /fish/salmon.htm

Tidak cocok:

  • /fish
  • /fish.html
  • /Fish/Salmon.asp
/*.php

Cocok dengan:

  • /filename.php
  • /folder/filename.php
  • /folder/filename.php?parameters
  • /folder/any.php.file.html
  • /filename.php/

Tidak cocok:

  • / (meskipun memetakan ke /index.php)
  • /windows.PHP
/*.php$

Cocok dengan:

  • /filename.php
  • /folder/filename.php

Tidak cocok:

  • /filename.php?parameters
  • /filename.php/
  • /filename.php5
  • /windows.PHP
/fish*.php

Cocok dengan:

  • /fish.php
  • /fishheads/catfish.php?parameters

Tidak cocok dengan: /Fish.PHP

Rekaman non-group-member (bukan anggota grup) yang didukung Google

sitemap

Didukung oleh Google, Ask, Bing, Yahoo; didefinisikan di sitemaps.org.

Penggunaan:

sitemap: [absoluteURL]

[absoluteURL] mengarah ke Peta Situs, File Indeks Peta Situs, atau URL yang setara. URL tidak harus berada dalam host yang sama seperti file robots.txt. Beberapa entri sitemap juga dapat muncul. Sebagai non-group-member, rekaman ini tidak terikat dengan agen pengguna apa pun dan dapat diikuti oleh semua crawler, selama tidak dilarang.

Urutan prioritas untuk rekaman group-member (anggota grup)

Pada tingkat group-member, khususnya untuk perintah allow dan disallow, aturan paling spesifik berdasarkan panjang entri [path] akan mengalahkan aturan yang kurang spesifik (lebih pendek). Urutan prioritas untuk aturan dengan karakter pengganti belum ditentukan.

Contoh situasi
http://example.com/page

Izinkan: /p

Jangan izinkan: /

Putusan: izinkan

http://example.com/folder/page

Izinkan: /folder

Jangan izinkan: /folder

Putusan: izinkan

http://example.com/page.htm

Izinkan: /page

Jangan izinkan: /*.htm

Putusan: tidak ditentukan

http://example.com/

Izinkan: /$

Jangan izinkan: /

Putusan: izinkan

http://example.com/page.htm

Izinkan: /$

Jangan izinkan: /

Putusan: dilarang

Kirim masukan tentang...

Penelusuran
Penelusuran