Webmaster

Robots.txt kullanımı

Robots.txt dosyası nedir

Robots.txt, sitede bulunan ve arama sistemi robotları için tasarlanmış metin dosyasıdır. Web uzmanı bu dosyada sitesinin dizin parametrelerini tüm robotlar için tek seferde belirtebileceği gibi, her arama sistemi için ayrı ayrı da belirtebilir.

Robots.txt nasıl oluşturulur

Herhangi bir metin düzenleyicisi (örneğin, Not Defteri veya WordPad) kullanarak "robots.txt" adında bir dosya oluşturun ve bu dosyayı aşağıda verilen kurallara uygun olarak doldurun. Daha sonra bu dosya sitenizin kök dizinine yüklenmelidir.

robots.txt dosyanızın doğru işleyip işlemediğini denetlemek için, robots.txt dosyası analiz aracı'ndan yararlanın.

User-agent direktifi

Sitenin kök dizininde bulunması gereken robots.txt dosyasını kullanarak, Yandex robotunun sitenize erişimini yönetebilirsiniz. Yandex robotu, aşağıda açıklanan genişletme olanaklarıyla http://www.robotstxt.org/robotstxt.html açıklama standardını destekler.

Yandex robotunda oturuma dayalı çalışma prensibi kullanılır ve her oturumda robotun indirmeyi planladığı sayfaların belirli bir havuzu oluşturulur. Oturum, sitedeki robots.txt dosyasının indirilmesiyle başlar. Böyle bir dosya yoksa, metin dosyası değilse veya robotun sorgusuna '200'den farklı bir HTTP kodu döndürülürse, robotun erişiminin kısıtlı olmadığı kabul edilir. Aynı robots.txt dosyasında 'User-agent:' ile başlayan kayıtların olup olmadığı denetlenir; bu kayıtlar arasında 'Yandex' ya da '*' alt dizeleri aranır (büyük/küçük harfe duyarlı değil) ve 'User-agent: Yandex' bulunması durumunda 'User-agent: *' için yönergeler dikkate alınmaz. 'User-agent: Yandex' ve 'User-agent: *' kayıtları yoksa, robotun erişiminin kısıtlanmadığı kabul edilir.

Aşağıdaki Yandex robotları için ayrı ayrı yönergeler belirtilebilir:

Bunların her biri için geçerli bir kural vardır: Belirli bir robot için yönergeler olduğu anlaşılırsa, 'User-agent: Yandex' ve 'User-agent: *' yönergeleri kullanılmaz.

Örnek:

User-agent: * # Yandex robotları tarafından kullanılmaz
Disallow: /cgi-bin

User-agent: Yandex # Tüm Yandex robotları tarafından kullanılır
Disallow: /*sid= # temel dizinleme robotu hariçtir

User-agent: YandexBot # Yalnızca temel dizinleme robotu tarafından kullanılır
Disallow: /*id=

Disallow ve Allow direktiflerin kullanımı.

Robotun sitenin belirli bölümlerine veya sitenin tümüne erişimini yasaklamak için, 'Disallow' yönergesini kullanın. Örnekler:

User-agent: Yandex 
Disallow: / # Tüm siteye erişimi engeller

User-agent: Yandex 
Disallow: /cgi-bin # '/cgi-bin' ile başlayan
                   #sayfalara erişimi engeller

Not:

'User-agent' ile 'Disallow' ('Allow') yönergeleri arasında ve aynı şekilde 'Disallow' ('Allow') yönergeleri arasında boş satır sonları bulunamaz.

Bunun dışında, standarda uygun olarak, her 'User-agent' yönergesinden önce boş satır sonu eklenmesi önerilir.

'#' işareti açıklamayı belirtmek amacıyla kullanılmaktadır. Bu simgeden sonra ilk satır sonuna kadar olan kısımlar dikkate alınmaz.

Robotun sitenin belirli bölümlerine veya sitenin tümüne erişimine izin vermek için, 'Allow' yönergesini kullanın. Örnekler:

User-agent: Yandex 
Allow: /cgi-bin 
Disallow: /

# '/cgi-bin' ile başlayan 
# sayfalar dışında tümünün indirilmesini yasaklar

Yönergelerin birlikte kullanımı.

Sitenin belirli bir sayfası için birkaç yönerge uygun düşüyorsa, seçili User-agent bloğunda ilk sırada görünen yönerge seçilir. Örnekler:

User-agent: Yandex 
Allow: /cgi-bin 
Disallow: / 

# '/cgi-bin' ile başlayan 
# sayfalar dışında tümünün indirilmesini yasaklar
User-agent: Yandex 
Disallow: / 
Allow: /cgi-bin 

# tüm sitenin indirilmesini yasaklar

Parametreler olmadan Allow-Disallow yönergeleri.

Yönergelerin parametreleri olmadığında aşağıdaki gibi yorumlanır:

User-agent: Yandex 
Disallow: # Allow: / ile aynı şekilde

User-agent: Yandex 
Allow: # dikkate robot

"*" ve "$" gibi özel sembollerin kullanımı.

Allow-Disallow yönergelerinin yolları belirtilirken '*' ve '$' özel karakterleri kullanılabilir ve belirli normal ifadeler bu şekilde verilebilir. '*' özel karakteri, herhangi bir karakter (boş karakter dahil) dizisini ifade eder. Örnekler:

User-agent: Yandex 
Disallow: /cgi-bin/*.aspx # '/cgi-bin/example.aspx' 
                          # ve '/cgi-bin/private/test.aspx' öğelerini yasaklar 
Disallow: /*private # hem '/private',
                    # hem de '/cgi-bin/private' öğesini yasaklar

'$' özel karakteri

Varsayılan olarak, robots.txt dosyasında tanımlanan her kuralın sonuna '*' eklenir. Örneğin:

User-agent: Yandex 
Disallow: /cgi-bin* # '/cgi-bin' ile başlayan 
                    # sayfalara erişimi engeller 
Disallow: /cgi-bin  # aynısı

Kuralın sonundaki '*' karakterini kaldırmak için, '$' özel karakteri kullanılabilir. Örneğin:

User-agent: Yandex 
Disallow: /example$ # '/example' öğesini yasaklar, 
                    # ancak '/example.html' öğesini yasaklamaz
User-agent: Yandex 
Disallow: /example # hem '/example', 
                   # hem de '/example.html' öğesini yasaklar
User-agent: Yandex 
Disallow: /example$ # yalnızca '/example' öğesini yasaklar 
Disallow: /example*$ # 'Disallow: /example' ile aynı 
                     #hem /example.html hem de /example öğesini yasaklar

Sitemap direktifi

Siteniz için sitemaps.xml biçiminde yapı açıklaması kullanıyorsanız ve robotun bunu bilmesini istiyorsanız, sitemaps.xml dosyasının yolunu 'Sitemap' yönerge parametresi olarak belirtin (birkaç dosya varsa, tümünü belirtin). Örnekler:

User-agent: Yandex Allow: / 
Sitemap: http://mysite.ru/site_structure/my_sitemaps1.xml 
Sitemap: http://mysite.ru/site_structure/my_sitemaps2.xml

veya

User-agent: Yandex Allow: /

User-agent: * Disallow: /

Sitemap: http://mysite.ru/site_structure/my_sitemaps1.xml 
Sitemap: http://mysite.ru/site_structure/my_sitemaps2.xml

Robot sitemaps.xml dosyasının yolunu aklında tutar, dosyaları işler ve sonuçları bir sonraki indirme oturumu oluşturulurken kullanır.

Host direktifi

Sitenizde aynalar varsa, özel bir ayna oluşturma robotu bunu belirler ve sitenizin ayna grubunu oluşturur. Aramada yalnızca birincil ayna yer alır. robots.txt dosyasında 'Host' yönergesini kullanarak ve yönerge parametresi olarak da birincil aynanın adını tanımlayarak, tüm aynalar için birincil aynayı belirtebilirsiniz. 'Host' yönergesi belirtilen birincil aynanın seçilmesini garanti etmemekle birlikte, karar verilirken kullanılan algoritma bunu yüksek öncelikli olarak değerlendirir. Örnek:

#Sitenin birincil aynası www.birincil-ayna.ru ise, ayna grubundaki tüm siteler için
#robots.txt dosyası şöyle görünür:

User-Agent: * 
Disallow: /forum 
Disallow: /cgi-bin 
Host: www.birincil-ayna.ru

Önemli: robots.txt dosyasını işlerken standarda tam olarak uymayan robotlarla uyumluluğu sağlamak amacıyla, 'User-Agent' kaydı ile başlayan gruba, 'Disallow'('Allow') yönergesinden hemen sonra 'Host' yönergesinin eklenmesi gerekir. İki nokta üst üste ayrılan etki alanı adı ve bağlantı noktası numarası (varsayılan olarak 80), 'Host' yönergesinin bağımsız değişkenlerini oluşturur.

#Doğru şekilde oluşturulmuş robots.txt dosyası örneği 
#Bu dosyanın işlenmesi sırasında Host yönergesi dikkate alınır

User-Agent: * 
Disallow: 
Host: www.myhost.ru

Yine de, Host yönergesi bölümler arası bir yönerge olması nedeniyle, belirtildiği robots.txt dosyasındaki yerinden bağımsız olarak robot tarafından kullanılacaktır.

Önemli: robots.txt dosyasında yalnızca bir Host yönergesi bulunabilir. Birden fazla yönerge belirtilmesi durumunda, bunların ilki kullanılır.

Örnek:

Host: myhost.ru # kullanılır

User-agent: * 
Disallow: /cgi-bin

User-agent: Yandex 
Disallow: /cgi-bin 
Host: www.myhost.ru # kullanılmaz

Önemli: Host yönergesinin parametresi, uygun bir ana bilgisayar adı (yani, RFC 952 ile uyumlu ve IP adresi değil) ve kabul edilebilir bir bağlantı noktası numarasından oluşmalıdır. Uygun şekilde oluşturulmamış 'Host:' satırları yoksayılır.

# Yoksayılan Host yönergesi örnekleri

Host: www.myhost-.ru 
Host: www.-myhost.ru 
Host: www.myhost.ru:100000 
Host: www.my_host.ru 
Host: .my-host.ru:8000 
Host: my-host.ru. 
Host: my..host.ru 
Host: www.myhost.ru/ 
Host: www.myhost.ru:8080/ 
Host: http://www.myhost.ru 
Host: 213.180.194.129 
Host: www.firsthost.ru,www.secondhost.ru 
Host: www.firsthost.ru www.secondhost.ru

Host yönergesinin kullanımıyla ilgili örnekler:

# etkialanı.myhost.ru adresi 
# www.etkialanı.myhost.ru için birincil aynaysa,

Host yönergesinin 

# uygun kullanımı şöyledir: 

User-Agent: * 
Disallow: 
Host: etkialanı.myhost.ru

# etkialanı.myhost.ru adresi 
# www.etkialanı.myhost.ru için birincil aynaysa, 

Host yönergesinin 

# yanlış kullanımı şöyledir:

User-Agent: * 
Disallow: 
Host: myhost.ru

Crawl-delay direktifi

Sunucu aşırı yüklüyse ve indirme isteklerini işlemeye yetişemiyorsa, "Crawl-delay" yönergesini kullanın. Bu yönerge, bir sayfayı indirme işleminin bitmesi ile sonraki sayfayı indirmeye başlama arasında geçmesi gereken en az süreyi (saniye olarak) arama robotuna belirtmeyi sağlar. robots.txt dosyasını işlerken standarda tam olarak uymayan robotlarla uyumluluğu sağlamak amacıyla, "User-Agent" kaydı ile başlayan gruba, "Disallow" ("Allow") yönergesinden hemen sonra "Crawl-delay" yönergesinin eklenmesi gerekir.

Yandex arama robotu Crawl-Delay için kesirli değerleri (örneğin 0.5) destekler. Böyle bir ayar arama robotunun her yarım saniyede bir sitenize uğramasını garanti etmez, ancak robota daha fazla serbestlik vererek site dolaşımını hızlandırmayı sağlar.

Örnekler:

User-agent: Yandex 
Crawl-delay: 2 # 2 saniyelik zaman aşımı belirtir

User-agent: * 
Disallow: /search 
Crawl-delay: 4.5 # 4.5 saniyelik zaman aşımı belirtir

Clean-param direktifi

Sitenizin sayfa adresleri içeriklerini etkilemeyen dinamik parametreler (örneğin: oturum, kullanıcı, başvuran vs. tanımlayıcıları) içeriyorsa, bunları 'Clean-param' yönergesinin yardımıyla açıklayabilirsiniz. Yandex robotu bu bilgileri kullanarak, yinelenen bilgileri tekrar tekrar yüklemeyecektir. Böylece, sitenizin dolaşılma etkinliği artarken, sunucu üzerindeki yük azalır.

Örneğin, bir sitede aşağıdaki sayfaların bulunduğu varsayalım:

www.site.ru/some_dir/get_book.pl?ref=site_1&book_id=123
www.site.ru/some_dir/get_book.pl?ref=site_2&book_id=123
www.site.ru/some_dir/get_book.pl?ref=site_3&book_id=123

'ref=' parametresi yalnızca, sorgunun hangi kaynaktan yapıldığını izlemek için kullanılır ve içeriği değiştirmez. Her üç adreste de 'book_id=123' kitabını içeren aynı sayfa gösterilir. O halde, robots.txt dosyasında aşağıdaki dize belirtilirse:

Clean-param: ref /some_dir/get_book.pl

Bu şekilde olur:

User-agent: Yandex 
Disallow: 
Clean-param: ref /some_dir/get_book.pl

Yandex robotu sayfanın tüm adreslerini tek bir adreste birleştirir:

www.site.ru/some_dir/get_book.pl?ref=site_1&book_id=123,

Sitede parametre içermeyen bir sayfa varsa:

www.site.ru/some_dir/get_book.pl?book_id=123

Bu durumda, sayfa robot tarafından dizinlendiğinde, tüm sayfalar özellikle bu sayfada birleştirilir. Aşağıdaki sayfaları güncellemeye gerek olmadığından, sitenizin diğer sayfaları daha sık dolaşılır:

www.site.ru/some_dir/get_book.pl?ref=site_2&book_id=123
www.site.ru/some_dir/get_book.pl?ref=site_3&book_id=123

Yönerge kullanımına ilişkin sözdizimi:

Clean-param: p0[&p1&p2&..&pn] [path]

İlk alanda, dikkate alınmaması gereken parametreler '&' ile ayrılarak sıralanır. İkinci alanda, kuralın uygulanacağı sayfaların yol öneki belirtilir.

Önemli: Clean-Param yönergesi bölümler arası bir yönerge olması nedeniyle, robots.txt dosyasının herhangi bir yerinde belirtilebilir. Birkaç yönerge birden belirtilmesi durumunda, robot bunların tümünü dikkate alır.

Not:

Önek, robots.txt dosyasına benzer biçimde bir normal ifade içerebilir, ancak bazı kısıtlamalar vardır: Yalnızca A-Za-z0-9.-/*_ karakterleri kullanılabilir. Bununla birlikte, * karakteri aynı robots.txt dosyasında olduğu gibi yorumlanır. Önekin sonuna her zaman dolaylı olarak bir '*' eklenir. Yani:

Clean-param: s /forum/showthread.php

sözdizimi, s parametresinin, /forum/showthread.php ile başlayan tüm url'ler için önemsiz sayılacağı anlamına gelir. İkinci alanın belirtilmesi zorunlu değildir. Bu durumda kural sitenin tüm sayfalarına uygulanır. Büyük küçük harfler dikkate alınır. Kuralın uzunluğu için 500 karakter sınırlaması vardır. Örneğin:

Clean-param: abc /forum/showthread.php
Clean-param: sid&sort /forumt/*.php
Clean-param: someTrash&otherTrash

Ek örnekler:

#Aşağıdaki türden adresler için: 
www.site1.ru/forum/showthread.php?s=681498b9648949605&t=8243

www.site1.ru/forum/showthread.php?s=1e71c4427317a117a&t=8243

#robots.txt içeriği şöyle olur:

User-agent: Yandex
Disallow: 
Clean-param: s /forum/showthread.php
#Aşağıdaki türden adresler için: 
www.site2.ru/index.php?page=1&sort=3a&sid=2564126ebdec301c607e5df

www.site2.ru/index.php?page=1&sort=3a&sid=974017dcd170d6c4a5d76ae 

#robots.txt içeriği şöyle olur:

User-agent: Yandex
Disallow: 
Clean-param: sid /index.php
#Bu tür parametreler birden fazlaysa: 
www.site1.ru/forum_old/showthread.php?s=681498605&t=8243&ref=1311

www.site1.ru/forum_new/showthread.php?s=1e71c417a&t=8243&ref=9896 

#robots.txt içeriği şöyle olur:

User-agent: Yandex 
Disallow:
Clean-param: s&ref /forum*/showthread.php
#Parametrede birden fazla komut dosyasında kullanılıyorsa: www.site1.ru/forum/showthread.php?s=681498b9648949605&t=8243

www.site1.ru/forum/index.php?s=1e71c4427317a117a&t=8243 

#robots.txt içeriği şöyle olur:

User-agent: Yandex
Disallow: 
Clean-param: s /forum/index.php
Clean-param: s /forum/showthread.php

Ek bilgiler

Bu açıklamada bahsedilmeyen robots.txt yönergeleri, Yandex robotu tarafından desteklenmez. Yukarıda belirtilen robots.txt dosyasının işlenme koşullarının tamamı, standart uygulamanın eklentisidir ve diğer robotlar; örneğin, URL içinde Allow komutunu, '$' ve '*' özel işaretlerini kullanan robots.txt dosyalarını yanlış anlayabilirler.

Farklı robot.txt dosyalarının, Yandex robotu ve genel standardı destekleyen robotu tarafından işlenme örnekleri:

User-agent: Yandex 
Allow: / 
Disallow: / 
# uzantılar olmayan dosyaların tümü yasaklanmıştır çünkü 'Allow: /' yoksayılmıştır,
# uzantıların desteğiyle tümüne izin verilir

User-agent: Yandex 
Disallow: /private*html 
# uzantılar olmadan '/private*html' yasaklanmıştır,
# uzantıların desteğiyle ise şunlar da yasaklanır: '/private*html'
# '/private/test.html', '/private/html/test.aspx' vs.

User-agent: Yandex 
Disallow: /private$ 
# uzantılar olmadan '/private$' ve '/private$test' vs. yasaklanmıştır,
# uzantıların desteğiyle ise sadece '/private' yasaklanır

User-agent: * 
Disallow: / 
User-agent: Yandex 
Allow: / 
# uzantılar olmadan, satır sonu bulunmaması nedeniyle,
# 'User-agent: Yandex' yasaklanırdı ve
# sonuç 'Disallow: /' olurdu; ancak Yandex robotu 
# 'User-agent:' satırının varlığıyla kaydı ayırır,
# Yandex robotu için bu durumda sonuç 'Allow: /' olur.

User-agent: * Disallow: / 
# yorum1... 
# yorum2... 
# yorum3... 
User-agent: Yandex Allow: / 
# önceki örneğe benzer (bkz. üstte)

Robots.txt genişletilmiş biçiminin kullanıldığı örnekler:

User-agent: Yandex 
Allow: /archive 
Disallow: / 
# '/archive' içindeki her şeye izin verir, diğerleri yasaklanır

User-agent: Yandex 
Allow: /obsolete/private/*.html$ # şu yoldaki html dosyalarına izin verir: 
                                 # '/obsolete/private/...' 
Disallow: /*.php$                # bu sitedeki tüm '*.php' dosyalarını yasaklar 
Disallow: /*/private/            # şunu içeren tüm alt yolları yasaklar: 
                                 # '/private/'; ancak üstteki Allow 
                                 # yasağı kısmen kaldırır 
Disallow: /*/old/*.zip$          # dosya yolunda şunu içeren tüm '*.zip' dosyalarını yasaklar: 
                                 # '/old/'

User-agent: Yandex 
Disallow: /add.php?*user= 
# 'user' parametresi içeren tüm 'add.php?' komut dosyalarını yasaklar

robots.txt dosyası yazılırken robotun dosya boyutuyla ilgili makul bir sınırlaması olduğu unutulmamalıdır. Çok büyük robots.txt (32 KB'tan büyük) dosyaları tamamen kısıtsız kabul edilir; yani aşağıdakine benzer olarak değerlendirilir:

User-agent: Yandex 
Disallow:

Ayrıca indirilemeyen (örneğin, http başlıklarının yanlış olması nedeniyle) veya 404 hatası veren robots.txt dosyaları da kısıtsız kabul edilir.

Robots.txt dosyasının doğruluk denetimi için özel çevrimiçi analiz aracını kullanabilirsiniz. Bkz. “robots.txt dosyası analiz aracı” hakkında açıklama.

İstisnalar

Bazı Yandex robotları, dökümanları sadece indeksleme amaçlı değil, diğer özel amaçlar için de indirir. Site sahipleri tarafından kasıtsız engellenmelerden kaçınmak için robotlar, rastgele robotlara yönelik kurulan (User-agent: *) robots.txt'nin sınırlayıcı komutlarına uymayabilirler. Ayrıca bazı sitelerin robots.txt kısıtlamalarının kısmen gözardı edilmeleri, Yandex şirketi ve site sahipleri arasında olan sözleşme sonucunda elde edilebilir.

Önemli: Eğer böyle bir robot, Yandex'in esas robotunun erişemediği dosyayı indiriyorsa bu dosya indekslenmez ve arama sonuçlarında yer almaz.

Robots.txt'nin genel engelleme kurallarına uymayan Yandex robotlarının listesi:

  • YaDirectFetcher, hedefe yönelik reklam sitelerini indirir. Buradaki amaç, bu sitelerin erişebilirliğini kontrol etmek ve site konusunu belirlemektir. Bu işlem, sitelerin, arama sonuçlarında ve iş ortağı sitelerde yerleştirilmeleri için gereklidir;

  • YandexCalendar, kullanıcıların isteklerine göre, indekslenmeye kapalı olan kataloglarda sıkça yer alan takvim dosyalarını indirir.

  • YandexAccessibilityBot, kullanıcıların erişimine açık olup olmaması kontrolü amacıyla sayfaları indirir.
  • YandexScreenshotBot, sayfa görüntüsünü alır.
  • Yandex.Metrika, Yandex.Metrica robotu.
  • YandexVideoParser, Yandex.Video düzenleyicisi.

Eğer robotun bu davranışı sizin için uygun değilse özel direktifler yardımıyla sitenizin tamamına ya da belli bir kısmına robotun erişimini engelleyebilirsiniz. Örneğin:

User-agent: YaDirectFetcher Disallow: /
User-agent: YandexCalendar Disallow: /*.ics$
Makaleyi değerlendirin
Geri bildiriminiz için teşekkür ederiz!