robots.txt, küçük bir komut setine sahip olan ve arama motorlarına yol gösteren bir dosyadır. Bu komutlar, sitenize olan erişimi bölüm bazında ve belirli user-agent’a göre göstermek için kullanılabilir. Arama motoru robotlarını yönetmenin en kolay ve etkin yöntemlerinden birisidir.
Bir çok arama motoru genellikle siteyi taramadan önce bu dosyayı okur ve burada yer alan komutlar doğrultusunda tarama işlemini gerçekleştirir. Bu noktada bilmemiz gereken, tüm web tarayıcılarının (crawler) robots.txt dosyasında yer alan komutları tanımak zorunda olmayışı. Fakat Google, Bing, Yandex gibi büyük arama motorları bu dosyayı destekler ve tarama işlemi, bu dosyada tanımlanan kurallar doğrultusunda gerçekleştirilir. Yani robots.txt dosyasında yer alan komutlar tamamen tavsiye niteliğinde ve isteğe bağlıdır. Teorik olarak web robotları bu kurallara ihtiyaç duymamaktadır. Yani sitenize bir robots.txt dosyası koymanız, mahremiyetinizi garanti altına almaz.
Buradaki kritik noktalardan bir diğeri sitenize ait yönetim paneli, özel dizinleriniz gibi indekslenmemesi tercih edeceğiniz yolları (path) bu dosyaya girmememiz gerekliliği. Robots.txt dosyasını herkes görüntülediği için bu tür hassas içeriklerinizin yolunu davetsiz misafirlere açık etmemeniz gerekiyor. Bu tür sayfa veya dizinleri korumak için şifre veya ip bazlı erişime açma gibi yöntemleri kullanmanız önerilir.
Robots.txt Nasıl Oluşturulur?
Öncelikle dosyanın adı “robots.txt” olmalıdır; tamamen küçük harfle. “robots.txt” dosyanız sitenizin sadece kök dizinine yerleştirilmeli ve UTF-8 karakter kodlamasına sahip olmalıdır.
Doğru: http://www.ornek.com/robots.txt
Yanlış: http://www.ornek.com/dosyalar/robots.txt
Ayrıca sitenizde hangi protokolü kullanıyorsanız bu protokole uygun olmalıdır. Örneğin SSL sertifikası kullanıyorsanız:
Doğru: https://www.ornek.com/robots.txt
Yanlış: http://www.ornek.com/robots.txt
Basit düzeyde bir “robots.txt” dosyasında 2 anahtar kelime kullanılır. Bunlar User-agent ve Disallow ‘dur. Öncelikle bu anahtar kelimeleri tanıyalım.
Oturum Başlatma Protokolü (Session Initiation Protocol – SIP) iki veya daha fazla katılımcı arasında bağlantı kuran bir ağ protokolüdür. Bu protokol RFC 3261 (daha önce RFC 2543) dokümanlarında açıklanmış ve HTTP protokolüne çok benzeyen düz metin protokolüdür. Bu protokolde istemcilerin (client) genel adına da User-agent denir.
Disallow, belli bir URL’ye erişilmemesini bildiren komuttur.
Örneklere geçmeden önce birkaç konuya daha değinmemiz gerekli. Bunlardan ilki: “User-agent”. Aşağıdaki tabloda Google’ın kullandığı User-agent listesi yer alıyor.
- ‘Googlebot’— Temel indeksleme robotu;
- ‘APIs-Google’ — API servis robotu;
- ‘Mediapartners-Google’ — Reklam servisine kayıtlı sitelerde kullanılmak üzere;
- ‘Mediapartners (Googlebot)’ — Reklam servisine kayıtlı sitelerde kullanılmak üzere;
- ‘AdsBot-Google-Mobile’ — Android web sayfası reklam kalitesini kontrol eder;
- ‘AdsBot-Google-Mobile’ — iPhone web sayfası reklam kalitesini kontrol eder;
- ‘AdsBot’ — Masaüstü web sayfası reklam kalitesini denetler;
- ‘Googlebot-Image’ — Görsel robotu;
- ‘Googlebot-News’ — Haber robotu;
- ‘Googlebot-Video’ — Video robotu;
- ‘AdsBot-Google-Mobile-Apps’ — Android uygulama sayfası reklam kalitesini kontrol eder. AdsBot-Google robotlarının kurallarına uyar.
Aşağıdaki tabloda da Yandex’in kullandığı User-agent listesi yer alıyor.
- ‘YandexBot’ — Temel indeksleme robotu;
- ‘YandexMedia’ — Multimedya verilerini indeksleyen robot;
- ‘YandexImages’ — Yandex.Görsel indeksleyicisi;
- ‘YaDirectFetcher’ — Yandex.Direct robotu, Direct servisinde kayıtlı sitelerin incelenmesi;
- ‘YandexBlogs’ — Gönderilen yorumları indeksleyen blog araması robotu;
- ‘YandexNews’ — Yandex.Haberler robotu;
- ‘YandexPagechecker’ — Mikro etiket doğrulayıcısı;
- ‘YandexMetrika’ — Yandex.Metrica robotu;
- ‘YandexMarket’— Yandex.Market robotu;
- ‘YandexCalendar’ — Yandex.Takvim robotu.
Buraya kadar öğrendiklerimiz ile birlikte “Googlebot” User-agent’ına sahip bir tarayıcının, “seo” isimli klasöre erişmesini istemediğimizi anlatan bir komut yazalım:
User-agent: Googlebot Disallow: /seo/
“User-agent” bağımsız, tüm tarayıcılara genel bir kural yazmak isterseniz, istemci adı belirlenen alana “*” (yıldız) karakterini koymanız yeterlidir:
User-agent: * Disallow: /seo/
Bir sayfayı engellemek istersek komut şunun gibi olur:
User-agent: Googlebot
Disallow: /bu-bir-sayfadir.html
Bir görseli engellemek istersek de komut şunun gibi olur:
User-agent: Googlebot-Image Disallow: /kopek.jpg
Diğer Anahtar Kelimeler
robots.txt dosyasında User-agent ve Disallow komutu dışında kullanabileceğiniz farklı anahtar kelimeler de vardır. Bunlar:
1) Crawl-delay: (Sadece Yandex kullanıyor) Sunucuda aşırı yük varsa ve indirme isteklerini işlemeye yetişemiyorsa, “Crawl-delay” yönergesi kullanılır. 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.
User-agent: * Disallow: /search Crawl-delay: 4.5
2) Sitemap: Sitenizde XML formatında sitemap kullanıyorsanız ve robotun bunu bilmesini istiyorsanız, dosya yolunu ‘Sitemap’ yönergesi ile belirtebilirsiniz. Birden fazla “Sitemap:” parametresini kullanabilirsiniz. Örneğin:
User-agent: * Disallow: /kopek.jpg Sitemap: https://www.ornek.com/dosyalar/sitemap_1.xml Sitemap: https://www.ornek.com/dosyalar/sitemap_2.xml
3) Clean-param: (Sadece Yandex kullanıyor) 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çıklanabilir.
Bir URL veya path içerisinde bir veya birden fazla içeriği etkilemeyen parametreler, Clean-param: içerisinde & karakteri ile birleştirilerek gereksiz yere taranmaması sağlanabilir. Örneğin:
Clean-param: sid&sort /blog/*.php
Yukarıdaki komut sitenin /blog/ dizini içinde ve .php ile biten URL’lerde “sid” ve “sort” parametresi geçen URL’leri sık taramasına gerek olmadığını belirtir.
Yorum & Notlar
Dosya içerisine kendiniz, yöneticiniz veya herhangi bir sebepten dolayı notlar yazabilirsiniz. Not oluşturmak için satır başına # karakteri eklemeniz yeterlidir. Örneğin:
# Köpek resmini erişime kapatıyorum. # x.x.xxxx tarihinde geri açılacak. User-agent: Googlebot-Image Disallow: /kopek.jpg
Şablon (Kalıp Eşleme) Kuralları / Pattern-matching
Tanımlı olan 2 karakteri kullanarak basit düzeyde regular expressions hazırlayabilir ve kompleks durumlar için şablonlu komutlar oluşturabilirsiniz.
- * : Yıldız karakteri herhangi bir karakter, yani herhangi bir şey anlamına gelir.
- $ : Dolar ikonu bir URL’nin sonunu belirtir.
Dosya tiplerini bloklamak için : (Bu kod ile .gif dosyalarını indekslemesin diyoruz)
User-agent: Googlebot Disallow: /*.gif$
.xls ile biten tüm URL’leri engellemek için (dosya adı her ne olursa olsun uzantısı .xls olanlar engellenir):
User-agent: Googlebot Disallow: /*.xls$
Dinamik web sayfalarını bloklamak için :
User-agent: Googlebot Disallow: /*?
Eğer bu kuralı Googlebot için değil tüm tarayıcılar için yazmak istersek:
User-agent: * Disallow: /*?
Biraz da Eğlence
Intoli, alexa.com top 1M sitenin robots.txt dosyalarını indirip ufak bir analiz yapmış. Böylesi bir testi sık göremediğimiz için sonuçlar da ilgimi çekti. Buna göre sitemap dosya isimleri, teste dahil olan sitelerde genellikle şu şekilde verilmiş:
Sitemap Yolu | Görülme |
/sitemap.xml | 177964 |
/news-sitemap.xml | 11147 |
/sitemap_index.xml | 11045 |
/SiteMap.aspx | 10118 |
/sitemap.xml.gz | 9690 |
/sitemap | 6954 |
/index.php | 4187 |
/dynamic-sitemaps.xml | 3533 |
/robots.txt | 3510 |
/sitemapindex.xml | 3062 |
Ayrıca “User-agent” özelinde yazılan kuralların kullanım dağılımı da şöyle çıkmış:
User Agent | Toplam | Allow | Disallow | Allow/Disallow |
Mediapartners-Google* | 18920 | 4152 | 14768 | 0.28 |
Googlebot-Mobile | 26625 | 4751 | 21874 | 0.22 |
Googlebot | 340185 | 38740 | 301445 | 0.13 |
Mediapartners-Google | 73376 | 7879 | 65497 | 0.12 |
* | 6669397 | 702888 | 5966509 | 0.12 |
Googlebot-Image | 99444 | 9625 | 89819 | 0.11 |
Mail.Ru | 23161 | 2203 | 20958 | 0.11 |
AdsBot-Google | 19163 | 1278 | 17885 | 0.07 |
Yandex | 380945 | 22728 | 358217 | 0.06 |
bingbot | 67560 | 3026 | 64534 | 0.05 |
ia_archiver | 25585 | 1093 | 24492 | 0.04 |
Yahoo! Slurp | 18180 | 716 | 17464 | 0.04 |
Baiduspider | 29339 | 968 | 28371 | 0.03 |
msnbot | 64826 | 2005 | 62821 | 0.03 |
Slurp | 77745 | 2258 | 75487 | 0.03 |
MSNBot | 18674 | 390 | 18284 | 0.02 |
MJ12bot | 22678 | 121 | 22557 | 0.01 |
AhrefsBot | 24014 | 36 | 23978 | 0.00 |
Exabot | 18194 | 24 | 18170 | 0.00 |
adsbot-google | 47388 | 28 | 47360 | 0.00 |