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

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 YoluGörülme
/sitemap.xml177964
/news-sitemap.xml11147
/sitemap_index.xml11045
/SiteMap.aspx10118
/sitemap.xml.gz9690
/sitemap6954
/index.php4187
/dynamic-sitemaps.xml3533
/robots.txt3510
/sitemapindex.xml3062

Ayrıca “User-agent” özelinde yazılan kuralların kullanım dağılımı da şöyle çıkmış:

User AgentToplamAllowDisallowAllow/Disallow
Mediapartners-Google*189204152147680.28
Googlebot-Mobile266254751218740.22
Googlebot340185387403014450.13
Mediapartners-Google733767879654970.12
*666939770288859665090.12
Googlebot-Image994449625898190.11
Mail.Ru231612203209580.11
AdsBot-Google191631278178850.07
Yandex380945227283582170.06
bingbot675603026645340.05
ia_archiver255851093244920.04
Yahoo! Slurp18180716174640.04
Baiduspider29339968283710.03
msnbot648262005628210.03
Slurp777452258754870.03
MSNBot18674390182840.02
MJ12bot22678121225570.01
AhrefsBot2401436239780.00
Exabot1819424181700.00
adsbot-google4738828473600.00

2021 Dijital Pazarlama Trendleri ve İç Görülerim

2020 sanıyorum kimsenin öngöremediği bir pandemi kasırgası ile sonlanmak üzereyken, globalde yaşanan bu durum birçok şirketin çalışma şeklini de etkiledi. Aşının bulunma haberi, panik havasını ve ekonomide yaşanan stresleri gevşetirken insanlar üzerindeki korkunun hemen geçmesi…

COVID-19 Hakkında Platin Dergisi ile Yaptığım Söyleyişi

1-Korona sonrası dönemde hedef kitle, gönüllü karantina döneminde. Çoğu kişi artık sokağa çıkmaktansa her alışverişini online yapmayı tercih ediyor. Sizce bundan sonraki süreçte, markalar hedef kitleye ulaşabilmek ve satın alma süreçlerine hız kazandırabilmek adına ne…

11 yorum

    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 ?

    “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?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir