Robots.txt Nedir? Nasıl Kullanılır?
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şlemi gerçekleştirir. Bu noktada bilmeniz gereken nokta 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, öncesinde tanımlanan kurallar doğrultusunda gerçekleştirili. Yani robots.txt dosyasında yer alan komutlar tamamen tavsiye niteliğinde ve isteğe bağlıdır; teorik olarak da 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: http://www.ornek.com/dosyalar/sitemap_1.xml Sitemap: http://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 |
11 yorum
Sitemap yolu “/robots.txt” ‘nin farklı ve popüler bi’ kullanım olması :O
E tabii, sitemapin bulunması istenmiyorsa burada belirtmemek gerekiyor 🙂
Disallow: /search
Dizinde bu komut yer alıyor
Disallow görükmeme komutu olduğuna göre search dosyası indexte görükmesin mi demek oluyor? . search ne anlama geliyor? Ne dosyası bu? Yardımcı olmanızı rica ediyorum
Disallow: ?comments=*
Disallow: *?wptheme
Disallow: /comments/feed/
Disallow: /?attachment_id
Disallow: /trackback/
Disallow: /demo/*
Bu komutlar ne demek ve doğru mu?
Tufan Selam
Şu 2 satırı:
Disallow: ?comments=*
Disallow: *?wptheme
Şöyle yapsan daha iyi olur:
Disallow: /?comments=*
Disallow: /*?wptheme
İlettiğin komutlar sırasıyla:
Disallow: ?comments=* => URL içerisinde herhangi biyerde ?comment= varsa ve sonrasında herhangi birşey geliyorsa reddet.
Not: Eğer URL’de comments parametresini bloklamak fakat sonrasında gelen diğer parametrelerin indexlenmesini istersen, kural şöyle olmalı:
Disallow: /?comments=*
Allow: /?comments=*&
Disallow: *?wptheme => URL içerisinde herhangi biyerde ?wptheme varsa reddet.
Disallow: /comments/feed/ => URL /comments/feed/ ile başlıyorsa bu dizini ve altında yer alan tüm sayfaları reddet.
Disallow: /?attachment_id => URL içerisinde herhangi biyerde ?attachment_id varsa reddet.
Disallow: /trackback/ => URL /trackback/ ile başlıyorsa, bu dizini ve altında yer alan tüm sayfaları reddet. Not: /trackback (sonunda slash yoksa) reddedilmez.
Disallow: /demo/* => URL /demo/ ile başlıyorsa, bu dizini ve altında yer alan tüm sayfaları reddet. Not: /demo (sonunda slash yoksa) reddedilmez.
Merhaba Uğur Eskici,
Disallow: */trackback Bununda başına “/” slash gelecekmi ve anlamı nedir?
Bunlar satırlar tam olarak ne demek?
Disallow: /*?*
Disallow: /*?
Allow: /wp-admin/admin-ajax.php
Aslında yorumlarım indexlensin istiyorum ama çok yorum olunca sayfalara mı bölmeli yoksa tek sayfada mı sergilemeli? Sayfalara bölünce yinelenen içerik problemi oluşuyor. Aşadaki satırlar tam olarak ne demek ve yukarıda yazdığıma göre nasıl bir satır eklemeliyim.
Disallow: /comments/feed/
Disallow: /?comments=*
hocam selamlar.
Makalenizi okudum. fakat merak ettiğim birşey ile ilgili ayrıca soru sormak istedim.
örnek olarak;
https://www.example.com/ adresini google indexlettim. Fakat ters giden birşeylerin olduğunu fark ettim. cloudflare eklemiş olduğum sitem –> site:example.com olarak google’da arattığımda subdomainler ile çıkmaya başladı. asd.example.com – zxc.example.com gibi gibi. bunların indexini kaldırmak için nasıl bir yol izleyebilirim bilginiz mevcut ise paylaşabilir misiniz ?
Kaldırmak için bu subdomainleri 404’e bırakabilirsiz, en basit yol 🙂
Disallow: /search ne anlama geliyor acaba? Bir terslik var mı yoksa bu normal bir durum mu
“Disallow: /search” komutu sitenizin root seviyesinden itibaren “search” ile başlayan tüm sayfa ve dizinlerin indekslenmemesini anote eder.
Merhaba. Sitemizdeki robots.txt dosyamızda google, yandex ve bing botlarının üçünede izin verebilir miyiz?