Cara Google menafsirkan spesifikasi robots.txt

Crawler otomatis Google mendukung Protokol Pengecualian Robot (REP). Artinya, sebelum meng-crawl situs, crawler Google mendownload dan mengurai file robots.txt situs untuk mengekstrak informasi tentang bagian situs mana yang boleh di-crawl. REP tidak berlaku untuk crawler Google yang dikontrol oleh pengguna (misalnya langganan feed), atau crawler yang digunakan untuk meningkatkan keamanan pengguna (misalnya analisis malware).

Halaman ini menjelaskan penafsiran Google terkait REP. Untuk mengetahui standar asli, lihat RFC 9309.

Apa itu file robots.txt

Jika Anda tidak ingin crawler mengakses bagian situs Anda, Anda dapat membuat file robots.txt dengan aturan sesuai kebutuhan. File robots.txt adalah file teks sederhana yang berisi aturan mengenai bagian situs mana saja yang dapat diakses oleh crawler. Misalnya, file robots.txt untuk example.com mungkin akan terlihat seperti ini:

# This robots.txt file controls crawling of URLs under https://example.com.
# All crawlers are disallowed to crawl files in the "includes" directory, such
# as .css, .js, but Google needs them for rendering, so Googlebot is allowed
# to crawl them.
User-agent: *
Disallow: /includes/

User-agent: Googlebot
Allow: /includes/

Sitemap: https://example.com/sitemap.xml

Jika Anda baru mengenalnya, mulai pelajari robots.txt dengan membaca pengantar robots.txt. Anda juga dapat menemukan tips untuk membuat file robots.txt.

Lokasi file dan rentang validitas

Anda harus meletakkan file robots.txt di direktori tingkat atas situs, pada protokol yang didukung. URL untuk file robots.txt (seperti URL lainnya) peka huruf besar/kecil. Untuk Google Penelusuran, protokol yang didukung adalah HTTP, HTTPS, dan FTP. Pada HTTP dan HTTPS, crawler mengambil file robots.txt dengan permintaan GET non-kondisional HTTP; pada FTP, crawler menggunakan perintah RETR (RETRIEVE) standar dengan login secara anonim.

Aturan yang dicantumkan pada file robots.txt hanya berlaku untuk host, protokol, dan nomor port tempat file robots.txt dihosting.

Contoh URL robots.txt yang valid

Tabel berikut berisi contoh URL robots.txt dan jalur URL yang valid. Kolom satu berisi URL file robots.txt, dan kolom dua berisi domain tempat file robots.txt tersebut akan berlaku dan tidak berlaku.

Contoh URL robots.txt
https://example.com/robots.txt

File ini merupakan kasus umum. File tersebut tidak valid untuk subdomain, protokol, atau nomor port lain. File ini valid untuk semua file di semua subdirektori di host, protokol, dan nomor port yang sama.

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

Robots.txt di subdomain hanya valid untuk subdomain tersebut.

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

Tidak valid untuk:

  • https://example.com/
  • https://shop.www.example.com/
  • https://www.shop.example.com/
https://example.com/folder/robots.txt Bukan file robots.txt yang valid. Crawler tidak memeriksa keberadaan file robots.txt di subdirektori.
https://www.exämple.com/robots.txt

IDN setara dengan versi punycode miliknya. Lihat juga RFC 3492.

Valid untuk:
  • https://www.exämple.com/
  • https://xn--exmple-cua.com/

Tidak valid untuk: https://www.example.com/

ftp://example.com/robots.txt

Valid untuk: ftp://example.com/

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

https://212.96.82.21/robots.txt

Robots.txt dengan alamat IP sebagai nama host hanya valid untuk crawling alamat IP tersebut sebagai nama host. Robots.txt ini tidak otomatis valid untuk semua situs yang dihosting di alamat IP tersebut (meskipun ada kemungkinan file robots.txt digunakan bersama, yang dalam hal ini juga akan tersedia pada nama host yang digunakan bersama).

Valid untuk: https://212.96.82.21/

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

https://example.com:443/robots.txt

Nomor port standar (80 untuk HTTP, 443 untuk HTTPS, 21 untuk FTP) setara dengan nama host default-nya.

Valid untuk:

  • https://example.com:443/
  • https://example.com/

Tidak valid untuk: https://example.com:444/

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

File robots.txt di nomor port non-standar hanya valid untuk konten yang disediakan melalui nomor port tersebut.

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

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

Penanganan kode status HTTP dan error

Saat meminta file robots.txt, kode status HTTP dari respons server memengaruhi bagaimana file robots.txt akan digunakan oleh crawler Google. Tabel berikut merangkum cara Googlebot memperlakukan file robots.txt untuk kode status HTTP yang berbeda.

Penanganan kode status HTTP dan error
2xx (success) Kode status HTTP yang menunjukkan keberhasilan meminta crawler Google memproses file robots.txt seperti yang disediakan oleh server.
3xx (redirection)

Google mengikuti setidaknya lima lompatan pengalihan seperti yang didefinisikan oleh RFC 1945, lalu berhenti dan memperlakukannya sebagai 404 untuk robots.txt. Hal ini juga berlaku untuk URL yang dilarang dalam rantai pengalihan, karena crawler tidak dapat mengambil aturan yang disebabkan oleh pengalihan.

Google tidak mengikuti pengalihan logis di file robots.txt (pengalihan jenis frame, JavaScript, atau refresh meta).

4xx (client errors)

Crawler Google memperlakukan semua error 4xx, kecuali 429, seolah-olah file robots.txt yang valid tidak ada. Artinya, Google akan berasumsi bahwa tidak ada batasan crawl.

5xx (server errors)

Karena server tidak dapat memberikan respons yang pasti untuk permintaan robots.txt Google, Google untuk sementara waktu menafsirkan error server 5xx dan 429 seolah-olah situs dilarang sepenuhnya. Google akan mencoba meng-crawl file robots.txt sampai memperoleh kode status HTTP non-error-server. Error 503 (service unavailable) menyebabkan percobaan ulang yang cukup sering. Jika robots.txt tidak dapat dijangkau selama lebih dari 30 hari, Google akan menggunakan salinan robots.txt yang terakhir di-cache. Jika tidak tersedia, Google akan berasumsi bahwa tidak ada batasan crawl.

Jika Anda harus menangguhkan crawling untuk sementara, sebaiknya tayangkan kode status HTTP 503 untuk setiap URL di situs.

Jika kami dapat menyimpulkan bahwa konfigurasi situs tidak benar sehingga menampilkan 5xx alih-alih kode status 404 untuk halaman yang tidak ada, kami akan memperlakukan error 5xx dari situs tersebut sebagai 404. Misalnya, jika pesan error di halaman yang menampilkan kode status 5xx adalah "Halaman tidak ditemukan", kami akan menafsirkan kode status tersebut sebagai 404 (not found).

Error lainnya File robots.txt yang tidak dapat diambil karena masalah jaringan atau DNS, seperti waktu tunggu habis, respons tidak valid, koneksi direset atau terputus, dan error pemotongan HTTP, akan diperlakukan sebagai error server.

Menyimpan ke cache

Google biasanya meng-cache konten file robots.txt hingga 24 jam, tetapi dapat meng-cache-nya lebih lama dalam situasi ketika pemuatan ulang versi yang di-cache tidak memungkinkan (misalnya karena waktu tunggu habis atau error 5xx). Respons yang di-cache dapat digunakan bersama dengan crawler lain. Google dapat menambah atau mengurangi masa aktif cache berdasarkan header HTTP max-age Cache-Control.

Format file

File robots.txt harus berupa file teks biasa berenkode UTF-8 dan setiap baris harus dipisahkan dengan CR, CR/LF, atau LF.

Google mengabaikan baris yang tidak valid dalam file robots.txt, termasuk Byte Order Mark (BOM) Unicode di awal file robots.txt, dan hanya menggunakan baris yang valid. Misalnya, jika konten yang didownload adalah HTML, bukan aturan robots.txt, Google akan mencoba mengurai konten dan mengekstrak aturan, lalu mengabaikan yang lain.

Demikian pula jika encoding karakter file robots.txt bukan UTF-8, Google dapat mengabaikan karakter yang bukan bagian dari rentang UTF-8. Keadaan ini berpotensi membuat aturan robots.txt tidak valid.

Saat ini, Google menerapkan batas maksimal ukuran file robots.txt sebesar 500 kibibyte (KiB). Konten yang melampaui ukuran file maksimum akan diabaikan. Anda dapat mengurangi ukuran file robots.txt dengan menggabungkan aturan yang menyebabkan ukuran file robots.txt terlalu besar. Misalnya, tempatkan materi yang dikecualikan di direktori terpisah.

Sintaksis

Baris robots.txt yang valid terdiri dari sebuah kolom, sebuah titik dua, dan sebuah nilai. Spasi bersifat opsional, tetapi direkomendasikan untuk meningkatkan keterbacaan. Spasi di awal dan di akhir baris akan diabaikan. Untuk menyertakan komentar, awali komentar Anda dengan karakter #. Perlu diperhatikan bahwa apa pun setelah karakter # akan diabaikan. Format umumnya adalah <field>:<value><#optional-comment>.

Google mendukung kolom berikut:

  • user-agent: mengidentifikasi crawler mana yang akan menerima penerapan aturan.
  • allow: jalur URL yang boleh di-crawl.
  • disallow: jalur URL yang tidak boleh di-crawl.
  • sitemap: URL lengkap peta situs.

Kolom allow dan disallow juga disebut dengan aturan (atau perintah). Aturan tersebut selalu ditentukan dalam bentuk rule: [path] dengan [path] yang bersifat opsional. Secara default, tidak ada pembatasan crawling untuk crawler yang ditentukan. Crawler akan mengabaikan aturan tanpa [path].

Nilai [path], jika ditentukan, berkaitan dengan root situs dari tempat file robots.txt diambil (menggunakan protokol, nomor port, host, dan nama domain yang sama). Nilai jalur harus diawali dengan / untuk menentukan root dan nilainya bersifat peka huruf besar/kecil. Pelajari lebih lanjut Pencocokan URL berdasarkan nilai jalur.

user-agent

Baris user-agent mengidentifikasi crawler mana yang akan menerima penerapan aturan. Lihat String agen pengguna dan crawler Google untuk mengetahui daftar lengkap string agen pengguna yang dapat Anda gunakan dalam file robots.txt.

Nilai baris user-agent tidak peka huruf besar/kecil.

disallow

Aturan disallow menentukan jalur yang tidak boleh diakses oleh crawler yang diidentifikasi oleh baris user-agent yang dikelompokkan dengan aturan disallow. Crawler akan mengabaikan aturan tanpa jalur.

Google tidak dapat mengindeks konten halaman yang tidak boleh di-crawl, tetapi masih dapat mengindeks URL dan menampilkannya di hasil penelusuran tanpa cuplikan. Pelajari cara memblokir pengindeksan.

Nilai aturan disallow peka huruf besar/kecil.

Penggunaan:

disallow: [path]

allow

Aturan allow menentukan jalur yang dapat diakses oleh crawler yang ditetapkan. Jika tidak ada jalur yang ditetapkan, aturan akan diabaikan.

Nilai aturan allow peka huruf besar/kecil.

Penggunaan:

allow: [path]

sitemap

Google, Bing, dan mesin telusur utama lainnya mendukung kolom sitemap di robots.txt, seperti yang didefinisikan oleh sitemaps.org.

Nilai kolom sitemap peka huruf besar/kecil.

Penggunaan:

sitemap: [absoluteURL]

Baris [absoluteURL] mengarah ke lokasi peta situs atau file indeks peta situs. Harus berupa URL yang sepenuhnya memenuhi syarat, termasuk protokol dan host, serta tidak harus berupa URL yang dienkode. URL tidak harus berada di host yang sama dengan file robots.txt. Anda dapat menentukan beberapa kolom sitemap. Kolom peta situs tidak terikat dengan agen pengguna mana pun dan dapat diikuti oleh semua crawler, selama tidak ada larangan crawling.

Contoh:

user-agent: otherbot
disallow: /kale

sitemap: https://example.com/sitemap.xml
sitemap: https://cdn.example.org/other-sitemap.xml
sitemap: https://ja.example.org/テスト-サイトマップ.xml

Pengelompokan baris dan aturan

Anda dapat mengelompokkan aturan yang berlaku untuk beberapa agen pengguna dengan mengulangi baris user-agent untuk setiap crawler.

Contoh:

user-agent: a
disallow: /c

user-agent: b
disallow: /d

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

user-agent: h

Dalam contoh ini, ada empat grup aturan yang berbeda:

  • Satu grup untuk agen pengguna "a".
  • Satu grup untuk agen pengguna "b".
  • Satu grup untuk agen pengguna "e" dan "f".
  • Satu grup untuk agen pengguna "h".

Untuk deskripsi teknis grup, lihat bagian 2.1 REP.

Urutan prioritas untuk agen pengguna

Hanya satu grup yang valid untuk crawler tertentu. Crawler Google menentukan grup aturan yang tepat dengan menelusuri file robots.txt untuk menemukan grup yang memiliki agen pengguna paling spesifik dan cocok dengan agen pengguna crawler. Grup lain akan diabaikan. Semua teks yang tidak cocok akan diabaikan (misalnya googlebot/1.2 dan googlebot* setara dengan googlebot). Urutan grup dalam file robots.txt tidak relevan.

Jika ada lebih dari satu grup khusus yang dideklarasikan untuk agen pengguna, semua aturan dari grup yang berlaku untuk agen pengguna tertentu akan digabungkan secara internal menjadi satu grup. Grup khusus agen pengguna dan grup global (*) tidak digabungkan.

Contoh

Pencocokan kolom user-agent

user-agent: googlebot-news
(group 1)

user-agent: *
(group 2)

user-agent: googlebot
(group 3)

Berikut cara crawler memilih grup yang relevan:

Grup yang diikuti per crawler
Googlebot-News googlebot-news mengikuti grup 1, karena grup 1 adalah grup yang paling spesifik.
Googlebot (web) googlebot mengikuti grup 3.
Googlebot Storebot Storebot-Google mengikuti grup 2, karena tidak ada grup Storebot-Google yang spesifik.
Googlebot-News (saat meng-crawl gambar) Saat meng-crawl gambar, googlebot-news mengikuti grup 1. googlebot-news tidak meng-crawl gambar dari Google Gambar, jadi googlebot-news hanya mengikuti grup 1.
Otherbot (web) Crawler Google lain mengikuti grup 2.
Otherbot (berita) Crawler Google lain yang meng-crawl konten berita, tetapi tidak mengidentifikasi diri sebagai googlebot-news, mengikuti grup 2. Meskipun jika ada entri untuk crawler terkait, entri hanya valid jika benar-benar cocok.

Pengelompokan aturan

Jika ada beberapa grup dalam file robots.txt yang relevan untuk agen pengguna tertentu, crawler Google menggabungkan grup-grup tersebut secara internal. Contoh:

user-agent: googlebot-news
disallow: /fish

user-agent: *
disallow: /carrots

user-agent: googlebot-news
disallow: /shrimp

Crawler mengelompokkan aturan secara internal berdasarkan agen pengguna, misalnya:

user-agent: googlebot-news
disallow: /fish
disallow: /shrimp

user-agent: *
disallow: /carrots

Aturan selain allow, disallow, dan user-agent akan diabaikan oleh parser robots.txt. Artinya, cuplikan robots.txt berikut diperlakukan sebagai satu grup, sehingga user-agent a dan b terpengaruh oleh aturan disallow: /:

user-agent: a
sitemap: https://example.com/sitemap.xml

user-agent: b
disallow: /

Saat memproses aturan robots.txt, crawler akan mengabaikan baris sitemap. Misalnya, seperti inilah crawler akan memahami cuplikan robots.txt sebelumnya:

user-agent: a
user-agent: b
disallow: /

Pencocokan URL berdasarkan nilai jalur

Google menggunakan nilai jalur di aturan allow dan disallow sebagai dasar dalam menentukan apakah suatu aturan berlaku untuk URL khusus di suatu situs atau tidak. Tindakan ini berfungsi dengan membandingkan aturan dengan komponen jalur URL yang akan diambil crawler. Karakter ASCII yang bukan 7 bit di dalam jalur dapat disertakan sebagai karakter UTF-8 atau sebagai karakter yang dienkode UTF-8 percent-escaped berdasarkan RFC 3986.

Google, Bing, dan mesin telusur utama lainnya mendukung bentuk terbatas karakter pengganti untuk nilai jalur. Karakter pengganti ini adalah:

  • * menentukan 0 atau lebih instance karakter valid apa pun.
  • $ menentukan akhir URL.

Tabel berikut menunjukkan pengaruh berbagai karakter pengganti terhadap penguraian:

Contoh kecocokan jalur
/ Cocok dengan root dan URL level lebih rendah.
/* Setara dengan /. Karakter pengganti di akhir diabaikan.
/$ Hanya cocok dengan root. Setiap URL level lebih rendah diizinkan untuk crawling.
/fish

Cocok dengan jalur apa pun yang diawali dengan /fish. Perlu diketahui bahwa pencocokan ini peka huruf besar/kecil.

Cocok dengan:

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

Tidak cocok dengan:

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

Setara dengan /fish. Karakter pengganti di akhir diabaikan.

Cocok dengan:

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

Tidak cocok dengan:

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

Cocok dengan apa pun di folder /fish/.

Cocok dengan:

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

Tidak cocok dengan:

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

Cocok dengan jalur apa pun yang berisi .php.

Cocok dengan:

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

Tidak cocok dengan:

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

Cocok dengan jalur apa pun yang diakhiri dengan .php.

Cocok dengan:

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

Tidak cocok dengan:

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

Cocok dengan jalur apa pun yang berisi /fish dan .php, dengan urutan seperti itu.

Cocok dengan:

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

Tidak cocok dengan: /Fish.PHP

Urutan prioritas untuk aturan

Saat mencocokkan aturan robots.txt dengan URL, crawler menggunakan aturan paling spesifik berdasarkan panjang jalur aturan. Jika terdapat aturan yang bertentangan, termasuk aturan yang menggunakan karakter pengganti, Google menggunakan aturan yang paling longgar.

Contoh berikut menunjukkan aturan mana yang akan diterapkan oleh crawler Google pada URL yang ditentukan.

Contoh situasi
https://example.com/page
allow: /p
disallow: /

Aturan yang berlaku: allow: /p, karena aturan ini lebih spesifik.

https://example.com/folder/page
allow: /folder
disallow: /folder

Aturan yang berlaku: allow: /folder, karena untuk aturan yang bertentangan, Google menggunakan aturan yang paling longgar.

https://example.com/page.htm
allow: /page
disallow: /*.htm

Aturan yang berlaku: disallow: /*.htm, karena jalur aturan lebih panjang dan cocok dengan lebih banyak karakter di URL, sehingga aturan ini lebih spesifik.

https://example.com/page.php5
allow: /page
disallow: /*.ph

Aturan yang berlaku: allow: /page, karena untuk aturan yang bertentangan, Google menggunakan aturan yang paling longgar.

https://example.com/
allow: /$
disallow: /

Aturan yang berlaku: allow: /$, karena aturan ini lebih spesifik.

https://example.com/page.htm
allow: /$
disallow: /

Aturan yang berlaku: disallow: /, karena aturan allow hanya berlaku untuk URL root.