Spesifikasi robots.txt

Abstrak

Dokumen ini menjelaskan cara Google menangani file robots.txt yang memungkinkan Anda mengontrol cara perayap situs web Google merayapi dan mengindeks situs web yang dapat diakses secara publik.

Kembali ke atas

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.

Kembali ke atas

Definisi dasar

  • perayap: Perayap merupakan layanan atau agen yang merayapi situs web. Pada umumnya, perayap secara otomatis dan rekursif mengakses URL host yang diketahui mengekspos konten yang dapat diakses menggunakan browser web standar. Saat URL baru ditemukan (melalui berbagai cara, misalnya dari tautan pada laman hasil perayapan yang ada atau dari file Peta situs), URL baru juga dirayapi dengan cara yang sama.
  • agen pengguna: cara untuk mengidentifikasi perayap atau kumpulan perayap tertentu.
  • perintah: daftar pedoman yang dapat diterapkan untuk perayap atau kelompok perayap yang ditetapkan dalam file robots.txt.
  • URL: Uniform Resource Locators/Pelokasi Sumber Daya 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.

Kembali ke atas

Keberlakuan

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

Kembali ke atas

Lokasi file & rentang validitas

File robots.txt harus dalam direktori tingkat atas host serta dapat diakses melalui protokol dan nomor port yang tepat. Umumnya protokol yang diterima untuk robots.txt (dan perayapan 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 masuk anonim.

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

Catatan: URL untuk file robots.txt - seperti URL lainnya - peka huruf besar kecil.

Kembali ke atas

Contoh URL robots.txt yang valid:

URL robots.txtValid untuk Tidak valid untukKomentar
http://example.com/robots.txt http://example.com/
http://example.com/folder/file
http://other.example.com/
https://example.com/
http://example.com:8181/
Ini merupakan kasus umum. Ini tidak valid untuk subdomain, protokol, atau nomor port lain. Ini valid untuk semua file di semua subdirektori pada host, protokol, dan nomor port yang sama.
http://www.example.com/robots.txt http://www.example.com/ http://example.com/
http://shop.www.example.com/
http://www.shop.example.com/
Robots.txt di subdomain hanya valid untuk subdomain tersebut.
http://example.com/folder/robots.txt bukan file robots.txt yang valid!   Perayap tidak akan memeriksa file robots.txt di subdirektori.
http://www.müller.eu/robots.txt http://www.müller.eu/
http://www.xn--mller-kva.eu/
http://www.muller.eu/ IDN setara dengan versi punycode miliknya. Lihat juga RFC 3492.
ftp://example.com/robots.txt ftp://example.com/ http://example.com/ Khusus Google: Kami menggunakan robots.txt untuk sumber daya FTP.
http://212.96.82.21/robots.txt http://212.96.82.21/ http://example.com/ (bahkan jika dihosting di 212.96.82.21) Robots.txt yang menggunakan alamat IP sebagai nama host hanya valid untuk perayapan alamat IP sebagai nama host tersebut. Ini tidak akan otomatis valid untuk semua situs web yang dihosting di alamat IP tersebut (meskipun file robot.txt dapat dibagikan, yang dalam kasus ini juga akan tersedia pada nama host yang dibagikan).
http://example.com:80/robots.txt http://example.com:80/
http://example.com/
http://example.com:81/ Nomor port standar (80 untuk http, 443 untuk https, 21 untuk ftp) setara dengan nama host default-nya. Lihat juga [portnumbers].
http://example.com:8181/robots.txt http://example.com:8181/ http://example.com/ File robots.txt pada nomor port nonstandar hanya valid untuk konten yang disediakan melalui nomor port tersebut.

Kembali ke atas

Menangani kode hasil HTTP

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

  • sepenuhnya diizinkan: Semua konten dapat dirayapi.
  • sepenuhnya dilarang: Tidak ada konten yang dapat dirayapi.
  • diizinkan sesuai kondisi: Perintah dalam robots.txt menentukan kemampuan untuk merayapi konten tertentu.
2xx (berhasil)
kode hasil HTTP yang menunjukkan keberhasilan perayapan 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 maks. 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 penyegaran meta) belum ditentukan dan tidak disarankan.
4xx (kesalahan klien)
Google memperlakukan semua kesalahan 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 perayapan. Catatan: hal ini meliputi kode hasil HTTP 401 "Tidak diotorisasi" dan 403 "Dilarang".
5xx (kesalahan server)
Kesalahan server dilihat sebagai kesalahan sementara yang menyebabkan "sepenuhnya dilarang" untuk perayapan. Permintaan ini akan dicoba lagi sampai diperoleh kode hasil HTTP yang bukan kesalahan server. Kesalahan 503 (Layanan Tidak Tersedia) akan menyebabkan percobaan ulang yang cukup sering. Untuk sementara menangguhkan perayapan, sebaiknya berikan kode hasil HTTP 503. Penanganan kesalahan server permanen belum ditentukan.

Khusus Google: Jika kami dapat menentukan bahwa suatu situs salah dikonfigurasi dengan mengembalikan 5xx dan bukan 404 untuk laman yang tidak ada, kami akan memperlakukan kesalahan 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, kesalahan pemotongan HTTP, dll. belum ditentukan.
Penyimpanan dalam cache
Pada umumnya permintaan robots.txt disimpan dalam cache maksimal selama satu hari, namun juga dapat disimpan dalam cache lebih lama jika penyegaran versi yang disimpan dalam cache tidak dapat dilakukan (misalnya, karena waktu tunggu habis atau kesalahan 5xx). Respons yang disimpan dalam cache dapat dibagikan dengan perayap lain. Google dapat menambah atau mengurangi masa cache berdasarkan header HTTP Cache-Control max-age.

Kembali ke atas

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 laman HTML, hanya baris teks valid yang akan dimasukkan dalam akun, sisanya akan dihapus tanpa peringatan atau kesalahan.

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 huruf besar kecil. Elemen <value> mungkin peka huruf besar kecil, tergantung elemen <field>.

Penanganan elemen <field> dengan kesalahan 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 perayap. Konten yang lebih besar dari ukuran file maksimum mungkin diabaikan. Google saat ini memberlakukan batas ukuran sebesar 500 kb.

Kembali ke atas

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" (jalur) didefinisikan dalam RFC 1808.

Kembali ke atas

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> valid, yang akan dirinci 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 perayap manakah grup tersebut valid. Hanya satu grup rekaman yang valid untuk satu perayap 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.

      Kembali ke atas

      Urutan prioritas untuk agen pengguna

      Hanya satu grup rekaman group-member yang valid untuk satu perayap tertentu. Perayap perlu menentukan grup rekaman yang tepat dengan mencari grup dengan agen pengguna paling spesifik yang masih cocok. Semua rekaman grup lainnya akan diabaikan oleh perayap. 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 perayap memilih grup yang relevan:

      Nama perayapGrup rekaman yang diikuti Komentar
      Googlebot Berita (grup 1) Hanya grup paling spesifik yang diikuti, semua grup lain akan diabaikan.
      Googlebot (web) (grup 3) 
      Googlebot Gambar (grup 3) Tidak ada grup googlebot gambar spesifik, sehingga grup yang lebih generik akan diikuti.
      Googlebot Berita (saat merayapi gambar) (grup 1) Gambar ini dirayapi untuk dan oleh Googlebot Berita, oleh karena itu hanya grup Googlebot Berita yang diikuti.
      Bot lain (web)(grup 2) 
      Bot lain (Berita)(grup 2) Meskipun ada entri untuk perayap terkait, entri hanya valid jika cocok secara khusus.

      Lihat juga Perayap Google dan string agen pengguna

      Kembali ke atas

      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 perayap. Perintah ini ditentukan dalam bentuk "directive: [path]" dan [path] bersifat opsional. Secara default, tidak ada batasan perayapan untuk perayap yang ditentukan. Perintah tanpa [path] akan diabaikan.

      Nilai [path], jika ditentukan, harus terlihat relatif dari akar situs web tempat file robots.txt diambil (menggunakan protokol, nomor port, host, dan nama domain yang sama). Nilai path (jalur) harus diawali dengan "/" untuk menentukan akar. Jika ditemukan ada path (jalur) yang tidak diawali dengan garis miring, akar dapat diasumsikan ada di sana. Jalur peka terhadap huruf besar kecil. Informasi selengkapnya dapat ditemukan di bagian "Pencocokan URL berdasarkan nilai jalur" di bawah.

      disallow

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

      Penggunaan:

      disallow: [path]
      

      allow

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

      Penggunaan:

      allow: [path]
      

      Kembali ke atas

      Pencocokan URL berdasarkan nilai jalur

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

      Catatan: URL "AJAX-Crawling" harus ditentukan dalam versi yang dirayapi. Lihat juga dokumentasi kami tentang Membuat Aplikasi AJAX Dapat Dirayapi.

      Google, Bing, Yahoo, dan Ask mendukung bentuk "karakter pengganti" yang terbatas untuk nilai jalur. Konfigurasi baru ini meliputi:

      1. * menentukan 0 atau munculan karakter valid lainnya
      2. $ menentukan akhir URL

      Contoh kecocokan jalur

      [path]Cocok Tidak cocokKomentar
      /URL valid apa pun  Cocok dengan akar dan URL tingkat yang lebih rendah
      /*setara dengan / setara dengan / Setara dengan "/" -- karakter pengganti di belakangnya akan diabaikan.
      /fish/fish
      /fish.html
      /fish/salmon.html
      /fishheads
      /fishheads/yummy.html
      /fish.php?id=anything
      /Fish.asp
      /catfish
      /?id=fish
      Ingat bahwa pencocokan peka huruf besar kecil.
      /fish*/fish
      /fish.html
      /fish/salmon.html
      /fishheads
      /fishheads/yummy.html
      /fish.php?id=anything
      /Fish.asp
      /catfish
      /?id=fish
      Setara dengan "/fish" -- karakter pengganti di belakangnya akan diabaikan.
      /fish//fish/
      /fish/?id=anything
      /fish/salmon.htm
      /fish
      /fish.html
      /Fish/Salmon.asp
      Garis miring di belakangnya menunjukkan ini cocok dengan semua yang ada dalam folder.
      fish/setara dengan /fish/ setara dengan /fish/ setara dengan /fish/
      /*.php/filename.php
      /folder/filename.php
      /folder/filename.php?parameters
      /folder/any.php.file.html
      /filename.php/
      / (meskipun memetakan ke /index.php)
      /windows.PHP
       
      /*.php$/filename.php
      /folder/filename.php
      /filename.php?parameters
      /filename.php/
      /filename.php5
      /windows.PHP
       
      /fish*.php/fish.php
      /fishheads/catfish.php?parameters
      /Fish.PHP  

      Kembali ke atas

      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 perayap, selama tidak dilarang.

      Kembali ke atas

      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] (jalur) akan mengalahkan aturan yang kurang spesifik (lebih pendek). Urutan prioritas untuk aturan dengan karakter pengganti belum ditentukan.

      Contoh situasi:

      URLallow:disallow:Putusan Komentar
      http://example.com/page /p /diizinkan 
      http://example.com/folder/page /folder/ /folderdiizinkan 
      http://example.com/page.htm /page /*.htmbelum ditentukan 
      http://example.com/ /$ /diizinkan 
      http://example.com/page.htm /$ /dilarang 

      Kembali ke atas

       

Kirim masukan tentang...