Google, robots.txt spesifikasyonunu nasıl yorumluyor?
Google'ın otomatik tarayıcıları, Robot Hariç Tutma Protokolü'nü (REP) destekler. Yani Google'ın tarayıcıları, bir siteyi taramadan önce sitenin robots.txt dosyasını indirip ayrıştırarak sitenin hangi bölümlerinin taranabileceği bilgisine ulaşır. REP, Google'ın kullanıcılar tarafından yönetilen tarayıcılarına (örneğin, feed abonelikleri) veya kullanıcı güvenliğini artırmak için kullanılan tarayıcılara (örneğin, kötü amaçlı yazılım analizi) uygulanamaz.
Bu sayfada, Google'ın REP'i nasıl yorumladığını açıklanır. Orijinal standart için RFC 9309'a göz atın.
Robots.txt dosyası nedir?
Tarayıcıların sitenizin belirli bölümlerine erişmesini istemiyorsanız bunu sağlayacak kurallarla bir robots.txt dosyası oluşturabilirsiniz. Robots.txt dosyası, hangi tarayıcıların sitenizin hangi bölümlerine erişebileceğiyle ilgili kurallar içeren basit bir metin dosyasıdır. Örneğin, example.com için robots.txt dosyası aşağıdaki gibi görünebilir:
# 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
Robots.txt kullanmaya yeni başlıyorsanız önce Robots.txt dosyasına giriş sayfamızı inceleyin. robots.txt dosyası oluşturmayla ilgili ipuçlarını da bulabilirsiniz.
Dosya konumu ve geçerlilik aralığı
Robots.txt dosyasını, desteklenen bir protokol üzerinde sitenin en üst düzey dizinine yerleştirmelisiniz. Robots.txt dosyasının URL'si de diğer URL'ler gibi büyük/küçük harfe duyarlıdır. Google Arama'nın desteklediği protokoller HTTP, HTTPS ve FTP'dir. Tarayıcılar, HTTP ve HTTPS üzerinde robots.txt dosyasını koşullu olmayan GET
isteğiyle getirir, FTP'de ise anonim girişle standart RETR (RETRIEVE)
komutunu kullanır.
Robots.txt dosyasında listelenen kurallar, yalnızca robots.txt dosyasının barındırıldığı ana makine, protokol ve bağlantı noktası numarası için geçerlidir.
Geçerli robots.txt URL'leri için örnekler
Aşağıdaki tabloda robots.txt URL örnekleri ve bunların geçerli olduğu URL yolları yer almaktadır. Birinci sütunda robots.txt dosyasının URL'si, ikinci sütunda ise robots.txt dosyasının hangi alanlarda geçerli olup hangilerinde uygulanmayacağı belirtilir.
Robots.txt URL örnekleri | |
---|---|
https://example.com/robots.txt |
Bu, genel kullanımdır. Diğer alt alan adları, protokoller veya bağlantı noktası numaraları için geçerli değildir. Aynı ana makine, protokol ve bağlantı noktası numarasında bulunan tüm alt dizinlerdeki dosyaların tamamı için geçerlidir. Geçerli:
|
https://www.example.com/robots.txt |
Bir alt alan adındaki robots.txt dosyası yalnızca söz konusu alt alan adı için geçerlidir.
Geçerli
Geçerli değil:
|
https://example.com/folder/robots.txt |
Geçerli bir robots.txt dosyası değildir. Tarayıcılar, alt dizinlerdeki robots.txt dosyalarını kontrol etmez. |
https://www.exämple.com/robots.txt |
IDN'ler (Uluslararası Hale Getirilmiş Alan Adı), punycode versiyonların eşdeğeridir. Ayrıca bkz. RFC 3492. Geçerli:
Geçerli değil:
|
ftp://example.com/robots.txt |
Geçerli:
Geçerli değil:
|
https://212.96.82.21/robots.txt |
Ana makine adıyla aynı IP adresine sahip bir robots.txt dosyası, ana makine adı olarak yalnızca söz konusu IP adresinin taranması için geçerli olur. Söz konusu IP adresinde barındırılan tüm web siteleri için otomatik olarak geçerli olmaz (bununla birlikte, robots.txt dosyasının paylaşılması mümkündür. Bu durumda, robots.txt dosyası, paylaşılan ana makine adı altında da kullanılabilir).
Geçerli:
Geçerli değil:
|
https://example.com:443/robots.txt |
Standart bağlantı noktası numaraları (HTTP için Geçerli:
Geçerli değil:
|
https://example.com:8181/robots.txt |
Standart olmayan bağlantı noktası numaralarındaki robots.txt dosyaları, yalnızca bu bağlantı noktası numaraları üzerinden kullanıma sunulan içerik için geçerlidir.
Geçerli:
Geçerli değil:
|
Hataların ve HTTP durum kodlarının işlenmesi
Bir robots.txt dosyası istenirken, sunucunun yanıtındaki HTTP durum kodu, robots.txt dosyasının Google'ın tarayıcıları tarafından nasıl kullanılacağına etki eder. Aşağıdaki tabloda Googlebot’un, robots.txt dosyalarını farklı HTTP durum kodlarında nasıl işlediği özetlenmektedir.
Hataların ve HTTP durum kodlarının işlenmesi | |
---|---|
2xx (success) |
Başarılı sinyali taşıyan HTTP durum kodları, Google'ın tarayıcılarını robots.txt dosyasını sunucu tarafından sağlandığı haliyle işlemeye sevk eder. |
3xx (redirection) |
Google, RFC 1945 tarafından tanımlandığı gibi en az beş yönlendirme atlamasını izler ve ardından durup bunu robots.txt için bir Google, robots.txt dosyalarındaki mantıksal yönlendirmeleri (çerçeveler, JavaScript veya meta-refresh türü yönlendirmeler) takip etmez. |
4xx (client errors) |
Google tarayıcıları, |
5xx (server errors) |
Sunucu, Google'ın robots.txt isteğine belirli bir yanıt veremediği için Google, Taramayı geçici olarak askıya almanız gerekirse sitedeki tüm URL'ler için
Bir sitenin eksik sayfalar için |
Diğer hatalar | Zaman aşımları, geçersiz yanıtlar, sıfırlanan veya kesintiye uğrayan bağlantılar ve HTTP öbekleme hataları gibi DNS veya ağ sorunlarından dolayı getirilemeyen robots.txt dosyaları, sunucu hatası olarak değerlendirilir. |
Önbelleğe alma
Google, robots.txt dosyasının içeriğini genellikle 24 saate kadar önbellekte tutar ancak önbellekteki sürümün yenilenmesi mümkün değilse (örneğin, zaman aşımı veya 5xx
hataları nedeniyle) içeriği daha uzun süre önbellekte tutabilir. Önbelleğe alınan yanıt, farklı tarayıcılar tarafından paylaşılabilir.
Google, max-age önbellek kontrolü HTTP üstbilgilerine dayanarak önbellek ömrünü uzatabilir veya kısaltabilir.
Dosya biçimi
Robots.txt dosyası, UTF-8 kodlamalı düz metin dosyası olmalı ve satırlar CR
, CR/LF
veya LF
ifadeleriyle ayrılmalıdır.
Google, robots.txt dosyasının başındaki Unicode bayt sırası işareti (BOM) dahil olmak üzere robots.txt dosyalarındaki geçersiz satırları yoksayar ve yalnızca geçerli satırları kullanır. Örneğin, indirilen içerik robots.txt kuralları yerine HTML biçimindeyse Google, içeriği ayrıştırıp kuralları çıkarmaya çalışır ve geri kalan her şeyi yoksayar.
Benzer şekilde, robots.txt dosyasının karakter kodlaması UTF-8 değilse Google, UTF-8 aralığı dışındaki karakterleri yoksayabilir ve bu durumda robots.txt kurallarını geçersiz olarak algılayabilir.
Google şu anda robots.txt dosyaları için 500 kibibaytlık (KiB) bir boyut sınırlaması uygulamaktadır. Maksimum dosya boyutundan sonraki içerik yoksayılır. Aşırı büyük bir robots.txt dosyasına neden olacak kuralları birleştirerek robots.txt dosyasının boyutunu küçültebilirsiniz. Örneğin, hariç tutulan malzemeyi ayrı bir dizine yerleştirin.
Söz dizimi
Geçerli robots.txt satırlarında bir adet alan, bir adet iki nokta üst üste ve bir adet değer bulunur. Boşluklar isteğe bağlıdır ancak dosyanın kolay okunabilmesi için önerilir. Satırın başındaki ve sonundaki boşluk yoksayılır. Yorum eklemek için, yorumunuzun başına #
karakterini ekleyin. #
karakterinden sonra gelen her şeyin yoksayılacağını unutmayın. Genel biçim şöyledir:
<field>:<value><#optional-comment>
.
Google, aşağıdaki alanları destekler:
user-agent
: Kuralların hangi tarayıcıya uygulanacağını belirtir.allow
: Taranabilecek bir URL yolunu belirtir.disallow
: Taranamayacak bir URL yolunu belirtir.sitemap
: Site haritasının tam URL'sini belirtir.
allow
ve disallow
alanları ayrıca kurallar (diğer adıyla yönergeler) olarak da adlandırılır. Bu kurallar her zaman rule: [path]
biçiminde belirtilir. Burada [path]
değeri isteğe bağlıdır. Varsayılan değer, belirtilen tarayıcılar için herhangi bir tarama kısıtlaması olmamasıdır. Tarayıcılar, [path]
içermeyen kuralları yoksayar.
[path]
değeri belirtilirse, robots.txt dosyasının getirildiği web sitesinin kök dizininin devamı olarak işlenir (aynı protokol, bağlantı noktası numarası, ana makine ve alan adları kullanılır).
Kök dizinini belirtmek için path değeri /
karakteriyle başlamalıdır. Bu değer büyük/küçük harfe duyarlıdır. Path değerlerine dayalı URL eşleşmesi hakkında daha fazla bilgi edinin.
user-agent
user-agent
satırı, kuralların hangi tarayıcıya uygulanacağını belirtir. Robots.txt dosyanızda kullanabileceğiniz kullanıcı aracısı dizelerinin kapsamlı bir listesini Google tarayıcıları ve kullanıcı aracısı dizeleri konusunda bulabilirsiniz.
user-agent
satırının değeri büyük/küçük harfe duyarlı değildir.
disallow
disallow
kuralında, tarayıcıların erişmemesi gereken yollar belirtilir. Bu yollar, disallow
kuralının birlikte gruplandırıldığı user-agent
satırında tanımlanır.
Tarayıcılar, path değeri içermeyen kuralları yoksayar.
Google, taranmasına izin verilmeyen sayfaların içeriğini dizine ekleyemese de URL'yi dizine ekleyip arama sonuçlarında snippet olmadan gösterebilir. Dizine eklemeyi nasıl engelleyeceğinizi öğrenin.
disallow
kuralının değeri büyük/küçük harfe duyarlıdır.
Kullanım:
disallow: [path]
allow
allow
kuralı, belirtilen tarayıcılar tarafından erişilebilecek path değerlerini belirtir. Herhangi bir path değeri belirtilmediğinde kural yoksayılır.
allow
kuralının değeri büyük/küçük harfe duyarlıdır.
Kullanım:
allow: [path]
sitemap
Google, Bing ve diğer büyük arama motorları, sitemaps.org tarafından tanımlandığı şekliyle robots.txt dosyasındaki sitemap
alanını destekler.
sitemap
alanının değeri büyük/küçük harfe duyarlıdır.
Kullanım:
sitemap: [absoluteURL]
[absoluteURL]
satırı bir site haritasının veya site haritası dizin dosyasının konumunu işaret eder.
Protokol ve ana makine de dahil olmak üzere bu tam nitelikli bir URL olmalıdır ve URL kodlamalı olması gerekmez. URL'nin, robots.txt dosyasıyla aynı ana makinede olması gerekmez. Birden fazla sitemap
alanı belirtebilirsiniz. Sitemap alanı, belirli bir kullanıcı aracısına bağlı değildir ve taranmasına izin verildiği sürece tüm tarayıcılar tarafından takip edilebilir.
Örneğin:
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
Satırların ve kuralların gruplandırılması
Her bir tarayıcı için user-agent
satırlarını tekrar ederek birden fazla kullanıcı aracısına uygulanan kuralları birlikte gruplandırabilirsiniz.
Örneğin:
user-agent: a disallow: /c user-agent: b disallow: /d user-agent: e user-agent: f disallow: /g user-agent: h
Bu örnekte dört farklı kural grubu belirtilmiştir:
- Kullanıcı aracısı "a" için bir grup.
- Kullanıcı aracısı "b" için bir grup.
- Hem "e" hem de "f" kullanıcı aracıları için bir grup.
- Kullanıcı aracısı "h" için bir grup.
Grup kavramının teknik açıklamasını REP'in 2.1 bölümünde bulabilirsiniz.
Kullanıcı aracıları için öncelik sırası
Belirli bir tarayıcı için yalnızca bir grup geçerlidir. Google'ın tarayıcıları, robots.txt dosyasının içinde tarayıcının kullanıcı aracısıyla eşleşen en ayrıntılı kullanıcı aracısının olduğu grubu bularak doğru kural grubunu belirler. Diğer gruplar yoksayılır. Eşleşmeyen metnin tamamı yoksayılır (örneğin, googlebot/1.2
ve googlebot*
, googlebot
ile eş değerdir). Robots.txt dosyasındaki grupların sıralamasının bir önemi yoktur.
Kullanıcı aracısı için tanımlanan birden fazla belirli grup varsa belirli kullanıcı aracısı için geçerli olan gruplardaki tüm kurallar kendi içinde tek bir grupta birleştirilir. Kullanıcı aracısına özel gruplar ile genel gruplar (*
) birleştirilmez.
Örnekler
user-agent
alanlarının eşleşmesi
user-agent: googlebot-news (group 1) user-agent: * (group 2) user-agent: googlebot (group 3)
Tarayıcılar ilgili grubu şu şekilde seçer:
Tarayıcı başına izlenen grup | |
---|---|
Googlebot News |
googlebot-news , en ayrıntılı grup olduğu için 1. grubu takip eder.
|
Googlebot (web) | googlebot , 3. grubu takip eder. |
Googlebot Storebot |
Storebot-Google , belirli bir Storebot-Google grubu olmadığı için 2. grubu takip eder.
|
Googlebot News (görseller taranırken) |
googlebot-news , görselleri tararken 1. grubu takip eder.
googlebot-news , görselleri Google Görseller için taramadığından yalnızca 1. grubu takip eder.
|
Otherbot (web) | Diğer Google tarayıcıları 2. grubu takip eder. |
Otherbot (news) |
Haber içeriklerini tarayan ancak googlebot-news olarak tanımlanmayan diğer Google tarayıcıları, 2. grubu takip eder. İlgili bir tarayıcı için bir giriş olsa bile, yalnızca özel olarak eşleştiğinde geçerli olur.
|
Kuralların gruplandırılması
Robots.txt dosyasında belirli bir kullanıcı aracısıyla ilgili birden fazla grup varsa Google'ın tarayıcıları, kendi içlerinde grupları birleştirir. Örneğin:
user-agent: googlebot-news disallow: /fish user-agent: * disallow: /carrots user-agent: googlebot-news disallow: /shrimp
Tarayıcılar, kuralları kendi içlerinde kullanıcı aracısı bazında gruplandırır. Örneğin:
user-agent: googlebot-news disallow: /fish disallow: /shrimp user-agent: * disallow: /carrots
allow
, disallow
ve user-agent
dışındaki kurallar robots.txt ayrıştırıcı tarafından yoksayılır. Yani, aşağıdaki robots.txt snippet'i bir grup olarak değerlendirilir. Bu nedenle hem user-agent
a
hem de b
, disallow: /
kuralından etkilenir:
user-agent: a sitemap: https://example.com/sitemap.xml user-agent: b disallow: /
Tarayıcılar, robots.txt kurallarını işlerken sitemap
satırını yoksayar.
Örneğin, tarayıcılar önceki robots.txt snippet'ini şu şekilde anlar:
user-agent: a user-agent: b disallow: /
Path değerlerine dayalı URL eşleşmesi
Google, bir kuralın sitedeki belirli bir URL için geçerli olup olmadığını belirlerken allow
ve disallow
kurallarındaki path değerini temel alır. Bunun için kural, tarayıcının getirmeye çalıştığı URL'deki path bileşeniyle karşılaştırılır.
Bir path değerindeki 7 bit olmayan ASCII karakterler, UTF-8 karakterleri veya RFC 3986'ya uygun şekilde yüzdeyle çıkış yapılmış UTF-8 kodlamalı karakterler olarak eklenebilir.
Google, Bing ve diğer büyük arama motorları, path değerleri için sınırlı bir joker karakter biçimini destekler. Bu joker karakterler şunlardır:
*
işareti, geçerli herhangi bir karakterin 0 veya daha fazla örneğini belirtir.$
işareti, URL'nin sonunu belirtir.
Aşağıdaki tabloda, farklı joker karakterlerin ayrıştırmayı nasıl etkilediği gösterilmektedir:
Örnek path eşleşmeleri | |
---|---|
/ |
Kök ve alt düzey URL'lerle eşleşir. |
/* |
/ etiketine eş değer. Sondaki joker karakter yok sayılır. |
/$ |
Yalnızca kökle eşleşir. Alt düzey URL'lerin taranmasına izin verilir. |
/fish |
Eşleşen:
Eşleşmez:
|
/fish* |
Eşleşen:
Eşleşmez:
|
/fish/ |
Eşleşen:
Eşleşmez:
|
/*.php |
Eşleşen:
Eşleşmez:
|
/*.php$ |
Eşleşen:
Eşleşmez:
|
/fish*.php |
Sırasıyla Eşleşen:
Eşleşmez:
|
Kuralların öncelik sırası
Tarayıcılar, robots.txt kurallarıyla URL'leri eşleştirirken kural yolunun uzunluğuna göre en ayrıntılı kuralı kullanır. Joker karakter içerenler de dahil olmak üzere çakışan kurallar söz konusu olduğunda Google, en az kısıtlayıcı olan kuralı kullanır.
Aşağıdaki örneklerde, Google'ın tarayıcılarının belirli bir URL'ye hangi kuralı uygulayacağı gösterilmektedir.
Örnek durumlar: | |
---|---|
https://example.com/page |
allow: /p disallow: /
Geçerli kural: Daha ayrıntılı olduğu için |
https://example.com/folder/page |
allow: /folder disallow: /folder
Geçerli kural: Google çakışan kurallar söz konusu olduğunda en az kısıtlayıcı olan kuralı kullandığı için |
https://example.com/page.htm |
allow: /page disallow: /*.htm
Geçerli kural: Kural yolu daha uzun olup URL'deki daha fazla karakterle eşleştiği için daha ayrıntılı olan |
https://example.com/page.php5 |
allow: /page disallow: /*.ph
Geçerli kural: Google çakışan kurallar söz konusu olduğunda en az kısıtlayıcı olan kuralı kullandığı için |
https://example.com/ |
allow: /$ disallow: /
Geçerli kural: Daha ayrıntılı olduğu için |
https://example.com/page.htm |
allow: /$ disallow: /
Geçerli kural: |