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.

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.

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.
Kullanıcı aracısı 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 vb. 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 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.

Geçerli robots.txt URL'lerine dair örnekler

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

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

Geçersiz:

  • 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çersiz: http://www.muller.eu/

ftp://example.com/robots.txt

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

Geçersiz: 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çersiz: 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çersiz: http://example.com:81/

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

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

Geçersiz: 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) 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".
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ıliş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 alınıyor 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.

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> biçiminedir. 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 kilobaytlık (KB) bir boyut sınırlaması uygulamaktadır.

Resmi söz dizimi / 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öz dizimi, RFC 1945'te tanımlanmıştır. "path" için söz dizimi RFC 1808'de tanımlanmıştır.

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. Each group has its own group-member record. İsteğe bağlı olarak okunabilirliği iyileştirmek amacıyla boşluk (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-ü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ı başına izlenen kayıt grubu
Googlebot Haberler İzlenen kayıt grubu 1. gruptur. Yalnızca en ayrıntılı şekilde belirtilmiş grup izlenir, diğer tüm gruplar yoksayılır.
Googlebot (web) İzlenen kayıt grubu 3. gruptur.
Googlebot Görseller İzlenen kayıt grubu 3. gruptur. Belirli bir googlebot-images grubu olmadığından daha genel olan grup izlenir.
Googlebot News (görseller taranırken) > İzlenen kayıt grubu 1. gruptur. Bu görseller, Googlebot Haberler için ve bu tarayıcı tarafından tarandığından yalnızca Googlebot Haberler grubu izlenir.
Otherbot (web) İzlenen kayıt grubu 2. gruptur.
Otherbot (News) İzlenen kayıt grubu 2. gruptur. İ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 kullanıcı aracısı dizeleri konusuna da bakı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. 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]

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, Yahoo ve Ask, path değerleri için sınırlı bir "joker karakter" biçimini destekler. Bunlar şu şekildedir:

  • * işareti, geçerli herhangi bir karakterin 0 veya daha fazla örneğini belirtir designates 0 or more instances of any valid character
  • $ işareti, URL'nin sonunu belirtir
Örnek path eşleşmeleri
/ Root ve alt düzey URL'lerle eşleşir
/* / karakterine eşdeğerdir. 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 karakterine eşdeğerdir. 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 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.

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
http://example.com/page

İzin ver: /p

İzin verme: /

Sonuç: izin ver

http://example.com/folder/page

İzin ver: /folder

İzin verme: /folder

Sonuç: izin ver

http://example.com/page.htm

İzin ver: /page

İzin verme: /*.htm

Sonuç: belirsiz

http://example.com/

İzin ver: /$

İzin verme: /

Sonuç: izin ver

http://example.com/page.htm

İzin ver: /$

İzin verme: /

Sonuç: izin verme

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