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.

Başa dön

Dil Gereksinimleri

Bu dokümandaki "MUST" (YAPILMALI), "MUST NOT" (YAPILMAMALI), "REQUIRED" (ZORUNLU), "SHALL" (YAPILACAK), "SHALL NOT" (YAPILMAYACAK), "SHOULD" (YAPILMASI GEREKİR), "SHOULD NOT" (YAPILMAMASI GEREKİR), "RECOMMENDED" (ÖNERİLİR), "MAY" (YAPILABİLİR) ve "OPTIONAL" (İSTEĞE BAĞLI) anahtar kelimeleri RFC 2119'da açıklandığı şekilde yorumlanmalıdır.

Başa dön

Temel 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.
  • kullanıcı aracısı (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.

Başa dön

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 vb. için) bu yönergelerin uygulanması gerekmez.

Başa dön

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 dosyasına (ve web sitelerinin taranmasına) ilişkin genel olarak kabul edilen protokoller, "http" ve "https"dir. http ve https'de, robots.txt dosyası bir HTTP koşullu olmayan GET isteği kullanılarak getirilir.

Google'a özel: Google, FTP sitelerine ilişkin 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ın barındırıldığı ana makine, protokol ve bağlantı noktası numarası için geçerlidir.

Not: robots.txt dosyasının URL'si de, diğer URL'ler gibi büyük/küçük harfe duyarlıdır.

Başa dön

Geçerli robots.txt URL'lerine ilişkin örnekler:

robots.txt URL'siGeçerli Geçerli değilYorumlar
http://example.com/robots.txt http://example.com/
http://example.com/folder/file
http://other.example.com/
https://example.com/
http://example.com:8181/
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.
http://www.example.com/robots.txt http://www.example.com/ http://example.com/
http://shop.www.example.com/
http://www.shop.example.com/
Bir alt alan adındaki robots.txt dosyası yalnızca söz konusu alt alan adı için geçerlidir.
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 http://www.müller.eu/
http://www.xn--mller-kva.eu/
http://www.muller.eu/ IDN'ler (Uluslararası Hale Getirilmiş Alan Adı), punycode versiyonların eşdeğeridir. Ayrıca bkz. RFC 3492.
ftp://example.com/robots.txt ftp://example.com/ 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 http://212.96.82.21/ http://example.com/ (212.96.82.21'de barındırılsa bile) 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).
http://example.com:80/robots.txt http://example.com:80/
http://example.com/
http://example.com:81/ Standart bağlantı noktası numaraları, (http için 80, https için 443, ftp için 21), varsayılan ana makine adlarına eşdeğerdir. Ayrıca bkz. [portnumbers].
http://example.com:8181/robots.txt http://example.com:8181/ http://example.com/ 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.

Başa dön

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.
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)
Yönlendirmeler genellikle geçerli bir sonuç bulununcaya (veya bir döngü olduğu anlaşılıncaya) kadar izlenir. Sınırlı sayıda yönlendirme atlamasını izledikten sonra (HTTP/1.0 için RFC 1945 en fazla 5 atlamaya izin verir) durur ve durumu bir 404 olarak değerlendiririz. İzin verilmeyen URL'lere yapılan robots.txt yönlendirmelerinin nasıl işlendiği tanımlanmamıştır ve bu tür yönlendirmeler yapılması önerilmez. 2xx (çerçeveler, JavaScript veya meta yenileme türü yönlendirmeler) döndüren HTML içeriğine dayalı robots.txt dosyası mantıksal yönlendirmelerinin nasıl işlendiği tanımlanmamıştır ve bu tür yönlendirmeler yapılması önerilmez.
4xx (istemci hataları)
Google, tüm 4xx hatalarını aynı şekilde değerlendirir ve geçerli herhangi bir robots.txt dosyasının bulunmadığını varsayar. Herhangi bir kısıtlamanın olmadığı varsayılır. Bu, tarama için "tam izindir". Not: Bu, 401 "Yetkilendirilmemiş" ve 403 "Yasak" HTTP sonuç kodlarını içerir.
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. Taramanın geçici olarak askıya alınması için bir 503 HTTP sonuç kodunun sunulması önerilir. Bir kalıcı sunucu hatasının nasıl işlendiği tanımlanmamıştır.

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 / kapanan bağlantılar, HTTP öbekleme hataları gibi DNS veya ağ sorunlarından dolayı getirilemeyen robots.txt dosyalarının nasıl işlendiği tanımlanmamıştır.
Önbelleğe alma
Bir robots.txt isteği genellikle en fazla bir gün 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.

Başa dön

Dosya biçimi

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

Yalnızca geçerli kayıtlar dikkate alınır, diğer tüm içerik yoksayı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) yoksayılır.

Her kayıt; 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 kaydın sonuna kadar olan tüm içerik yorum olarak değerlendirilir ve yoksayılır. Genel biçim, "<field>:<value><#optional-comment>" ("<alan>:<değer><#isteğe-bağlı-yorum>") şeklindedir. Kaydın başındaki ve sonundaki boşluk yoksayı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 hatalar / yazım hataları olan <field> öğelerinin (ör. "user-agent" yerine "useragent") nasıl işlendiği tanımlanmamıştır ve bazı kullanıcı aracıları tarafından doğru yönergeler olarak yorumlanabilir.

Her tarayıcı bir maksimum dosya boyutu uygulayabilir. Maksimum dosya boyutundan sonraki içerik yoksayılabilir. Google şu anda 500 kb'lık bir dosya sınırı uygulamaktadır.

Başa dön

Resmi sözdizimi / tanım

Bu, alternatifleri belirtmek için "|" karakterinin kullanılması dışında RFC 822 kurallarının kullanıldığı, Backus-Naur Formu'na (BNF) benzer bir açıklamadır. Hazır değerler "" içine alınır, parantez işaretleri "(" ve ")" öğeleri gruplamak için kullanılır, isteğe bağlı öğeler [köşeli parantezler] içinde belirtilir ve öğelerin başında, izleyen öğenin n veya daha fazla tekrarının olduğunu belirten <n>* kodu bulunabilir; varsayılan n değeri 0'dır.

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)

"absoluteURI", "CTL", "CR", "LF", "LWS" için sözdizimi, RFC 1945'te tanımlanmıştır. "path" için sözdizimi RFC 1808'de tanımlanmıştır.

Başa dön

Kayıtların gruplandırılması

Kayıtlar, <field> öğesinin türüne göre farklı kategorilere ayrılır.

  • grup-başlangıcı
  • grup-üyesi
  • grup-dışı
  • Grup-başlangıcı bir kayıttan, sonraki grup-başlangıcı kayda kadar olan tüm grup-üyesi kayıtlar, bir kayıt grubu olarak değerlendirilir. Tek grup-başlangıcı alan öğesi user-agent'tır. Doğrudan birbirini izleyen birden çok grup-başlangıcı satırının ardından, son grup-başlangıcı satırını izleyen grup-üyesi kayıtları gelir. Başında grup-başlangıcı kaydı bulunmayan grup-üyesi kayıtlar yoksayılır. Tüm grup-dışı kayıtlar, tüm gruplardan bağımsız olarak geçerlidir.

    Bu dokümanın ilerleyen kısımlarında her biri ayrıntılı bir şekilde açıklanacak olan geçerli <field> öğeleri şunlardır:

    • user-agent (grup-başlangıcı)
    • disallow (yalnızca bir grup-üyesi kaydı olarak geçerlidir)
    • allow (yalnızca bir grup-üyesi kaydı olarak geçerlidir)
    • sitemap (grup-dışı kayıt)
    • Diğer tüm <field> öğeleri yoksayılabilir.

      user-agent grup-başlangıcı öğesi, tarayıcının hangi grup için geçerli olduğunu belirtmek amacıyla kullanılır. Belirli bir tarayıcı için, yalnızca bir kayıt grubu geçerlidir. Öncelik sırası, bu dokümanın ilerleyen kısımlarında ele alınacaktır.

      Örnek gruplar:

      user-agent: a
      disallow: /c
      
      user-agent: b
      disallow: /d
      
      user-agent: e
      user-agent: f
      disallow: /g
      

      Üç ayrı grup belirtilmiştir; "a" için bir grup, "b" için bir başka grup ve "e" ile "f" için üçüncü bir grup. Her bir grubun kendi grup-üyesi kaydı vardır. İsteğe bağlı olarak okunabilirliği iyileştirmek amacıyla boşluk (boş satır) kullanılabileceğini unutmayın.

      Başa dön

      User-agent'lar (Kullanıcı aracıları) için öncelik sırası

      Belirli bir tarayıcı için yalnızca bir grup-üyesi kayıt grubu geçerlidir. Tarayıcının, eşleşen en ayrıntılı user-agent'a sahip grubu bularak doğru kayıt grubunu belirlemesi gerekir. Diğer tüm kayıt grupları tarayıcı tarafından yoksayılır. User-agent, büyük/küçük harfe duyarlı değildir. 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.

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

      Google tarayıcıları ve user-agent (kullanıcı aracısı) dizeleri konusuna da bakın.

      Başa dön

      Grup-üyesi kayıtları

      Bu bölümde yalnızca genel ve Google'a özel, grup-üyesi kayıt türleri ele alınmaktadır. Bu kayıt türleri, tarayıcılar için "yönergeler" olarak da adlandırılır. Bu yönergeler, "directive: [path]" şeklinde 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. [path] değeri içermeyen yönergeler yoksayı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. Başında sağa eğik çizgi bulunmayan bir path değerine rastlanırsa orada olduğu varsayılabilir. 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 (reddet)

      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 yoksayı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 yoksayılır.

      Kullanım:

      allow: [path]
      

      Başa dön

      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.

      Not: "AJAX-Tarama" URL'leri, tarandıkları sürümde belirtilmelidir. Making AJAX Applications Crawlable (AJAX Uygulamalarını Taranabilir Yapma) konusunda hazırlanmış dokümanlarımıza da bakın.

      Google, Bing, Yahoo ve Ask, path değerleri için sınırlı bir "joker karakter" biçimini destekler. Desteklenen biçimler şunlardır:

      1. * işareti, geçerli herhangi bir karakterin 0 veya daha fazla örneğini belirtir
      2. $ işareti, URL'nin sonunu belirtir

      Örnek path eşleşmeleri

      pathEşleşir EşleşmezYorumlar
      /geçerli herhangi bir URL  Root ve alt düzey URL'lerle eşleşir
      /*/ karakterine eşdeğer / karakterine eşdeğer "/" karakterine eşdeğerdir; bunu izleyen joker karakter yoksayılır.
      /fish/fish
      /fish.html
      /fish/salmon.html
      /fishheads
      /fishheads/yummy.html
      /fish.php?id=herhangi bir değer
      /Fish.asp
      /catfish
      /?id=fish
      Büyük/küçük harfe duyarlı eşleşmeye dikkat edin.
      /fish*/fish
      /fish.html
      /fish/salmon.html
      /fishheads
      /fishheads/yummy.html
      /fish.php?id=herhangi bir değer
      /Fish.asp
      /catfish
      /?id=fish
      "/balik" path değeriyle eşdeğerdir. Bunu izleyen joker karakter yoksayılır.
      /fish//fish/
      /fish/?id=herhangi bir değer
      /fish/salmon.htm
      /fish
      /fish.html
      /Fish/Salmon.asp
      İzleyen sağa eğik çizgi, bu öğenin bu klasördeki her şeyle eşleştiği anlamına gelir.
      fish//fish/ ile değeriyle eşdeğerdir /fish/ ile değeriyle eşdeğerdir /fish/ ile değeriyle eşdeğerdir
      /*.php/filename.php
      /folder/filename.php
      /folder/filename.php?parametreler
      /folder/any.php.file.html
      /filename.php/
      / (/index.php ile eşleşse bile)
      /windows.PHP
       
      /*.php$/filename.php
      /folder/filename.php
      /filename.php?parametreler
      /filename.php/
      /filename.php5
      /windows.PHP
       
      /fish*.php/fish.php
      /fishheads/catfish.php?parametreler
      /Fish.PHP  

      Başa dön

      Google tarafından desteklenen grup-dışı-üye kayıtları

      site haritası

      Google, Ask, Bing, Yahoo tarafından desteklenir; sitemaps.org'da tanımlanmıştır.

      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 kayıtları olarak bunlar, belirli bir user-agent'a bağlanmaz ve reddedildikleri durumlar dışında tüm tarayıcılar tarafından izlenebilir.

      Başa dön

      Grup-üyesi kayıtlar 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 karakterli kuralların öncelik sırası tanımlanmamıştır.

      Örnek durumlar:

      URLallow:disallow:Karar Yorumlar
      http://example.com/page /p /izin ver 
      http://example.com/folder/page /folder/ /folderizin ver 
      http://example.com/page.htm /page /*.htmtanımlanmamıştır 
      http://example.com/ /$ /izin ver 
      http://example.com/page.htm /$ /disallow (reddet) 

      Başa dön

       

Şunun hakkında geri bildirim gönderin...