robots.txt Spesifikasyonları

Özet

Bu dokümanda, Google'ın, robots.txt dosyasını nasıl işlediği ayrıntılı bir şekilde açıklanmaktadır. Robots.txt dosyası, Google web sitesi tarayıcılarının herkesin erişebildiği web sitelerini nasıl tarayacağını ve dizine ekleyeceğini kontrol etmenize olanak tanır.

Değişiklikler

1 Temmuz 2019'da Google tarafından yapılan duyuruyla robots.txt protokolü bir internet standardı olma yolunda çalışmaya başladı. Bu değişiklikler, bu dokümanda yer almaktadır.

Temel tanımlar

Tanımlar
Tarayıcı Tarayıcı, web sitelerini tarayan bir hizmet veya aracıdır. Genel olarak bir tarayıcı, standart web tarayıcılarıyla erişilebilen içeriğin sunulduğu bir ana makinenin bilinen URL'lerine erişir. Bu erişim, otomatik ve tekrar eden bir şekildedir. Taranmış mevcut sayfalardaki bağlantılar veya Site Haritası dosyaları gibi çeşitli araçlarla yeni URL'ler bulundukça, bu URL'ler de aynı şekilde taranır.
User-agent Belirli bir tarayıcıyı veya tarayıcı grubunu tanımlamak için kullanılan bir araç.
Yönergeler Robots.txt dosyasında, bir tarayıcı veya tarayıcı grubu için belirlenen geçerli yönergelerin listesi.
URL RFC 1738'de tanımlandığı şekliyle Unfied Resource Locators (Tek Tip Kaynak Konum Belirleyicileri).
Google'a özel Bu öğeler, Google'ın robots.txt uygulamasına özeldir ve başka taraflar için geçerli olmayabilir.

Uygulanabilirlik

Bu dokümanda belirtilen yönergeler, Google'daki tüm otomatik tarayıcılar tarafından uygulanır. Bir aracı, bir kullanıcı adına URL'lere eriştiğinde (örneğin, çeviri, manuel olarak abone olunan feed'ler, kötü amaçlı yazılım analizi için) bu yönergelerin uygulanması gerekmez.

Dosya konumu ve geçerlilik aralığı

Robots.txt dosyası, ana makinenin en üst düzey dizininde olmalı, uygun protokol ve bağlantı noktası numarasıyla dosyaya erişilebilmelidir. Robots.txt için genel olarak kabul edilen protokoller tüm URI tabanlı protokolleri ve özellikle Google Arama için (örneğin, web sitelerinin taranması) "http" ve "https"yi içerir. http ve https'de, robots.txt dosyası bir HTTP koşullu olmayan GET isteği kullanılarak getirilir.

Google'a özel: Google, FTP sitelerine ait robots.txt dosyalarını da kabul eder ve uygular. FTP tabanlı robots.txt dosyalarına anonim giriş bilgileri kullanılarak FTP protokolü aracılığıyla erişilir.

robots.txt dosyasında listelenen yönergeler, yalnızca dosyanıR 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

Robots.txt URL örnekleri
http://example.com/robots.txt Geçerli:
  • http://example.com/
  • http://example.com/folder/file
Geçerli değil:
  • http://other.example.com/
  • https://example.com/
  • http://example.com:8181/
http://www.example.com/robots.txt

Geçerli: http://www.example.com/

Geçerli değil:

  • http://example.com/
  • http://shop.www.example.com/
  • http://www.shop.example.com/
http://example.com/folder/robots.txt Geçerli bir robots.txt dosyası değildir! Tarayıcılar, alt dizinlerdeki robots.txt dosyalarını kontrol etmez.
http://www.müller.eu/robots.txt Geçerli:
  • http://www.müller.eu/
  • http://www.xn--mller-kva.eu/

Geçerli değil:http://www.muller.eu/

ftp://example.com/robots.txt

Geçerli: ftp://example.com/

Geçerli değil:http://example.com/

Google'a özel: robots.txt dosyasını FTP kaynakları için de kullanırız.

http://212.96.82.21/robots.txt

Geçerli: http://212.96.82.21/

Geçerli değil: http://example.com/ (212.96.82.21 adresinde barındırılsa bile)

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

Geçerli:

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

Geçerli değil:http://example.com:81/

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

Geçerli: http://example.com:8181/

Geçerli değil:http://example.com/

HTTP sonuç kodlarını işleme

robots.txt dosyalarının getirilmesi genellikle üç farklı sonuç doğurur:

  • tam izin: Tüm içerik taranabilir.
  • tam reddetme: Hiçbir içerik taranamaz.
  • koşullu izin: Belirli bir içeriğin taranma iznini robots.txt dosyasındaki yönergeler belirler.
HTTP sonuç kodlarını işleme
2xx (başarılı) "Koşullu izin" verilen bir taramanın başarıyla gerçekleştirildiğini gösteren HTTP sonuç kodları.
3xx (yönlendirme) Google, HTTP/1.0 için RFC 1945 tarafından tanımlandığı gibi en az beş yönlendirme atlamasını izler ve ardından, durup bunu bir 404 olarak işler. İzin verilmeyen URL'lere robots.txt yönlendirmelerinin işlenmesi önerilmez; henüz bir kural getirilmediğinden yönlendirmeler en az beş atlama için izlenir ve herhangi bir robots.txt bulunamazsa Google, bunu robots.txt dosyası için 404 olarak işler. Robots.txt dosyası mantıksal yönlendirmelerinin 2xx döndüren HTML içeriğine (çerçeveler, JavaScript veya meta yenileme türü yönlendirmeler) dayalı olarak işlenmesi önerilmez ve geçerli kuralları bulmak için ilk sayfanın içeriği kullanılır.
4xx (istemci hataları) Tüm 4xx hataları aynı şekilde değerlendirilir ve geçerli herhangi bir robots.txt dosyasının bulunmadığı varsayılır. Herhangi bir kısıtlamanın olmadığı varsayılır. Bu, tarama için "tam izindir".
5xx (sunucu hatası)

Sunucu hataları, taramayı "tam reddetme" ile sonuçlanan geçici hatalar olarak görülür. İstek, sunucu hatası olmayan bir HTTP sonuç kodu alınıncaya kadar yeniden denenir. Oldukça sık gerçekleştirilen yeniden deneme, bir 503 (Hizmet Kullanılamıyor) hatasıyla sonuçlanır. Robots.txt dosyasına 30 günden uzun süredir ulaşılamıyorsa robots.txt dosyasının önbelleğe alınmış son kopyası kullanılır. Bu kopya mevcut değilse Google, herhangi bir tarama kısıtlamasının olmadığını varsayar. Taramanın geçici olarak askıya alınması için bir 503 HTTP sonuç kodunun sunulması önerilir.

Google'a özel: Bir sitenin eksik sayfaları için 404 kodu döndürmek yerine 5xx kodları döndürecek şekilde yanlış yapılandırıldığını belirleyebilirsek söz konusu siteden gelen 5xx hatasını, 404 kodu olarak değerlendiririz.

Başarısız istekler veya eksik veriler Zaman aşımları, geçersiz yanıtlar, sıfırlanan veya kapanan bağlantılar ve HTTP öbekleme hataları gibi DNS veya ağ sorunlarından dolayı getirilemeyen robots.txt dosyalarının işlenmesi sunucu hatası olarak değerlendirilir.
Önbelleğe alma Bir robots.txt içeriği genellikle en fazla 24 saat süreyle önbellekte tutulur, ancak önbelleğe alınan sürümü yenilemenin artık mümkün olmadığı durumlarda (örneğin, zaman aşımları veya 5xx hataları nedeniyle) bu süre daha uzun olabilir. Önbelleğe alınan yanıt, farklı tarayıcılar tarafından paylaşılabilir. Google, max-age Önbellek Kontrolü HTTP üst bilgilerine dayanarak önbellek ömrünü uzatabilir veya kısaltabilir.

Dosya biçimi

Beklenen dosya biçimi, UTF-8 olarak kodlanmış düz metindir. Dosya, CR, CR/LF veya LF ile ayrılmış satırlardan oluşur.

Yalnızca geçerli satırlar dikkate alınır, diğer tüm içerik yok sayılır. Örneğin, sonuçta oluşturulan doküman, bir HTML sayfasıysa yalnızca geçerli metin satırları dikkate alınır. Geri kalan kısım uyarı veya hata bildirimi vermeksizin silinir.

UTF-8'in alt grubunda yer almayan karakterlerin kullanılmasına neden olacak bir karakter kodlaması yapılması, dosyanın içeriğinin yanlış bir şekilde ayrıştırılmasıyla sonuçlanabilir.

Robots.txt dosyasının başında isteğe bağlı olarak kullanılan Unicode BOM (bayt sırası işareti) yok sayılır.

Her geçerli satır; bir adet alan, bir adet iki nokta üst üste ve bir adet değerden oluşur. Boşluklar isteğe bağlıdır (ancak okunabilirliği iyileştirmek için önerilir). Dosyanın herhangi bir yerine "#" karakteri kullanılarak yorum eklenebilir. Bir yorumun başlangıcından satırın sonuna kadar olan tüm içerik yorum olarak değerlendirilir ve yok sayılır. Genel biçim şöyledir: <field>:<value><#optional-comment>. Satırın başındaki ve sonundaki boşluk yok sayılır.

<field> öğesi büyük/küçük harfe duyarlı değildir. <value> öğesi, <field> öğesine bağlı olarak büyük/küçük harfe duyarlı olabilir.

Basit veya yazım hataları olan <field> öğelerinin (ör. "user-agent" yerine "useragent") işlenmesi desteklenmez.

Her tarayıcı bir maksimum dosya boyutu uygulayabilir. Maksimum dosya boyutundan sonraki içerik yok sayılır. Google şu anda 500 kibibaytlık (KiB) bir boyut sınırlaması uygulamaktadır. Robots.txt dosyasının boyutunu küçültmek için aşırı büyük bir robots.txt dosyasına neden olacak yönergeleri birleştirin. Örneğin, hariç tutulan malzemeyi ayrı bir dizine yerleştirin.

Resmi söz dizimi / tanım

RFC 5234'te açıklandığı gibi bir Artırılmış Backus-Naur Formu'nu (ABNF) burada bulabilirsiniz

robotstxt = *(group / emptyline)
group = startgroupline                    ; We start with a user-agent
        *(startgroupline / emptyline)     ; ... and possibly more user-agents
        *(rule / emptyline)               ; followed by rules relevant for UAs

startgroupline = *WS "user-agent" *WS ":" *WS product-token EOL

rule = *WS ("allow" / "disallow") *WS ":" *WS (path-pattern / empty-pattern) EOL

; parser implementors: add additional lines you need (for example, Sitemaps), and
; be lenient when reading lines that don’t conform. Apply Postel’s law.

product-token = identifier / "*"
path-pattern = "/" *(UTF8-char-noctl)    ; valid URI path pattern; see 3.2.2
empty-pattern = *WS

identifier = 1*(%x2d / %x41-5a / %x5f / %x61-7a)
comment = "#" *(UTF8-char-noctl / WS / "#")
emptyline = EOL
EOL = *WS [comment] NL         ; end-of-line may have optional trailing comment
NL = %x0D / %x0A / %x0D.0A
WS = %x20 / %x09

; UTF8 derived from RFC3629, but excluding control characters
UTF8-char-noctl = UTF8-1-noctl / UTF8-2 / UTF8-3 / UTF8-4
UTF8-1-noctl    = %x21 / %x22 / %x24-7F  ; excluding control, space, '#'
UTF8-2          = %xC2-DF UTF8-tail
UTF8-3          = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
                  %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4          = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
                  %xF4 %x80-8F 2( UTF8-tail )
UTF8-tail       = %x80-BF

Satırları ve kuralları gruplama

Bir veya daha fazla kullanıcı aracısını bir veya daha fazla kural izler. Grup, bir kullanıcı aracısı satırı veya dosya sonuna göre sonlandırılır. Son grupta hiç kural olmayabilir. Bu, dolaylı olarak her şeye izin verildiği anlamına gelir.

Örnek gruplar:

user-agent: a
disallow: /c

user-agent: b
disallow: /d

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

user-agent: h

Birbirinden ayrı dört farklı grup belirtilmiştir:

  • "a" için bir grup
  • "b" için bir grup
  • Hem "e" hem de "f" için bir grup
  • "h" için bir grup

Son grup ("h" grubu) dışında her grubun kendi grup üyesi satırı vardır. Son grup ("h" grubu) boştur. İsteğe bağlı olarak okunabilirliği iyileştirmek amacıyla boşluk ve boş satır kullanılabileceğini unutmayın.

Kullanıcı aracıları için öncelik sırası

Belirli bir tarayıcı için yalnızca bir grup geçerlidir. Tarayıcının, eşleşen en ayrıntılı kullanıcı aracısına sahip grubu bularak doğru satır grubunu belirlemesi gerekir. Diğer tüm gruplar tarayıcı tarafından yok sayılır. Kullanıcı aracı, büyük/küçük harfe duyarlıdır. Eşleşmeyen metnin tamamı yok sayı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.

Belirli bir kullanıcı aracısı için tanımlanan birden fazla grup varsa belirli bir kullanıcı aracı için geçerli olan gruplardaki tüm kurallar tek bir grupta birleştirilir.

Örnekler

1. Örnek

Şu robots.txt dosyasını ele alalım:

      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 Haberler İzlenen grup 1. gruptur. Yalnızca en ayrıntılı belirtilmiş grup izlenir, diğer tüm gruplar yok sayılır.
Googlebot (web) İzlenen grup 3. gruptur.
Googlebot Images İzlenen grup 3. gruptur. Belirli bir googlebot-images grubu olmadığından daha genel olan grup izlenir.
Googlebot News (görseller taranırken) >İzlenen grup 1. gruptur. Bu görseller, Googlebot News için ve bu tarayıcı tarafından tarandığından yalnızca Googlebot News grubu izlenir.
Otherbot (web) İzlenen grup 2. gruptur.
Otherbot (News) İzlenen grup 2. gruptur. İlgili bir tarayıcı için bir giriş olsa bile, yalnızca özel olarak eşleştiğinde geçerli olur.

2. Örnek

Şu robots.txt dosyasını ele alalım:

      user-agent: googlebot-news
      disallow: /fish

      user-agent: *
      disallow: /carrots

      user-agent: googlebot-news
      disallow: /shrimp
    

Tarayıcılar, belirli bir kullanıcı aracısıyla alakalı grupları şu şekilde birleştirir:

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

      user-agent: *
      disallow: /carrots
    

Google tarayıcıları ve kullanıcı aracısı dizeleri konusuna da bakın.

Grup üyesi kuralları

Bu bölümde yalnızca standart grup üyesi kuralları ele alınmıştır. Bu kurallar, tarayıcılar için "yönergeler" olarak da adlandırılır. Bu yönergeler, directive: [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. Bir [path] içermeyen yönergeler yok sayılır.

[path] değeri belirtilirse bu değer, robots.txt dosyasının (aynı protokol, bağlantı noktası numarası, ana makine ve alan adları kullanılarak) getirildiği web sitesinin root dizinine göre değerlendirilir. Path değeri, root dizinini belirtmek için "/" karakteri ile başlamalıdır. Path değeri, büyük/küçük harfe duyarlıdır. Aşağıdaki "Path değerlerine dayalı URL eşleşmesi" bölümünde daha fazla bilgi bulabilirsiniz.

disallow

disallow yönergesi, belirtilen tarayıcılar tarafından erişilmemesi gereken path değerlerini belirtir. Herhangi bir path değeri belirtilmediğinde yönerge yok sayılır.

Kullanım:

disallow: [path]

izin ver

allow yönergesi, belirtilen tarayıcılar tarafından erişilebilecek path değerlerini belirtir. Herhangi bir path değeri belirtilmediğinde yönerge yok sayılır.

Kullanım:

allow: [path]

Path değerlerine dayalı URL eşleşmesi

Path değeri, bir kuralın bir sitede belirli bir URL için geçerli olup olmadığını belirlemekte kullanılan kriterdir. Joker karakterler haricinde path değeri, bir URL'nin başlangıcıyla (ve aynı yolla başlayan geçerli URL'lerle) eşleştirme için kullanı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ı, yol değerleri için sınırlı bir "joker karakter" "biçimini destekler. Desteklenen biçimler şunlardır:

  • ** işareti, geçerli herhangi bir karakterin 0 veya daha fazla örneğini belirtir.
  • $ işareti, URL'nin sonunu belirtir.
Örnek path eşleşmeleri
/ Root ve alt düzey URL'lerle eşleşir
/* / karakterine eş değer. Sondaki joker karakter yok sayılır.
/fish

Eşleşir:

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

Eşleşmez:

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

/fish etiketine eş değer. Sondaki joker karakter yok sayılır.

Eşleşir:

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

Eşleşmez:

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

İzleyen sağa eğik çizgi, bu öğenin bu klasördeki her şeyle eşleştiği anlamına gelir.

Eşleşir:

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

Eşleşmez:

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

Eşleşir:

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

Eşleşmez:

  • / (/index.php ile eşleşse bile)
  • /windows.PHP
/*.php$

Eşleşir:

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

Eşleşmez:

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

Eşleşir:

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

Eşleşmez:/Fish.PHP

Google tarafından desteklenen grup-dışı-üye satırları

Google, Bing ve diğer büyük arama motorları sitemaps.org tarafından tanımlandığı şekliyle sitemap kullanımını destekler.

Kullanım:

sitemap: [absoluteURL]

[absoluteURL] bir Site Haritası, Site Haritası Dizin dosyası veya eş değer URL'yi işaret eder. URL'nin robots.txt dosyasıyla aynı ana makinede olması gerekmez. Birden çok sitemap girişi olabilir. Grup-dışı-üye satırları olarak bunlar, belirli bir user-agent'a bağlanmaz ve reddedildikleri durumlar dışında tüm tarayıcılar tarafından izlenebilir.

Grup-üyesi satırlar için öncelik sırası

Grup-üyesi düzeyinde, özellikle allow ve disallow yönergeleri için [path] girişinin uzunluğuna dayalı en ayrıntılı kural daha az ayrıntılı (daha kısa) olan kurala üstün gelir. Joker karakter içerenler de dahil olmak üzere çakışan kurallar söz konusu olduğunda, en az kısıtlayıcı olan kural kullanılır.

Örnek durumlar:
http://example.com/page

allow: /p

disallow: /

Karar: allow

http://example.com/folder/page

allow: /folder

disallow: /folder

Karar: allow

http://example.com/page.htm

allow: /page

disallow: /*.htm

Karar: undefined

http://example.com/

allow: /$

disallow: /

Karar: allow

http://example.com/page.htm

allow: /$

disallow: /

Karar: disallow

Robots.txt işaretlemesini test etme

Google, robots.txt işaretlemesini test etmek için iki seçenek sunar:

  1. Search Console'daki robots.txt Test Aracı.
  2. Google Arama'da da kullanılan Google'ın açık kaynak robots.txt kitaplığı.