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'lara göre yönetmek 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 komutlara uymak zorunda olmadığıdır. Google, Bing, Yandex gibi büyük arama motorları bu dosyayı destekler ve tarama işlemini bu dosyada tanımlanan kurallar doğrultusunda gerçekleştirir. Ancak robots.txt dosyasında yer alan komutlar tavsiye niteliğindedir ve kötü niyetli botlar bu kurallara uymayabilir. Yani sitenize bir robots.txt dosyası koymanız, mahremiyetinizi garanti altına almaz.
robots.txt, 2022 yılında RFC 9309 ile resmi bir internet standardı haline gelmiştir.
Robots.txt Ne Yapar, Ne Yapmaz?
robots.txt dosyası, arama motoru botlarının sitenizdeki hangi sayfa ve dizinleri tarayabileceğini belirler. Bu sayede gereksiz sayfaların taranmasını önleyerek tarama bütçenizi önemli sayfalara yönlendirebilirsiniz.
Ancak robots.txt taramayı engeller, dizine eklenmeyi engellemez. robots.txt ile engellenen bir sayfa, başka sayfalardan link alıyorsa içeriği taranmadan da arama sonuçlarında görünebilir. Bir sayfanın arama sonuçlarında görünmesini engellemek istiyorsanız noindex etiketi kullanmalı ve sayfayı robots.txt ile engellememelisiniz. Bu konunun detaylarını "Google Nasıl Çalışır? Tarama, İndeksleme ve Sıralama" yazımızda bulabilirsiniz.
Buradaki kritik noktalardan bir diğeri, sitenize ait yönetim paneli, özel dizinleriniz gibi gizli kalmasını istediğiniz yolları (path) bu dosyaya yazmamanız gerektiğidir. robots.txt dosyasını herkes görüntüleyebildiğ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şim 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: https://www.ornek.com/robots.txt
Yanlış: https://www.ornek.com/dosyalar/robots.txt
Ayrıca robots.txt dosyası yalnızca bulunduğu protokol ve alan adı için geçerlidir. Yani https://www.ornek.com/robots.txt dosyası, http://www.ornek.com veya https://blog.ornek.com için geçerli değildir. Her alt alan adının kendi robots.txt dosyası olmalıdır. Sitenizde SSL sertifikası kullanıyorsanız dosyanın HTTPS sürümünde erişilebilir olduğundan emin olun.
Google, robots.txt dosyasının yalnızca ilk 500 KB'ını (kibibayt) okur. Bu sınırın üzerindeki kurallar dikkate alınmaz. Ayrıca Google, robots.txt dosyasını genellikle 24 saate kadar önbellekte tutar. Bu yüzden yaptığınız değişikliklerin etkili olması biraz zaman alabilir.
Robots.txt Komutları
User-agent
User-agent, robots.txt dosyasında yazılan kuralın hangi tarayıcıya uygulanacağını belirten satırdır. Her kural grubu bir User-agent satırıyla başlar.
Google'ın ana tarayıcısı Googlebot'tur. Bunun yanında görseller için Googlebot-Image, haberler için Googlebot-News, videolar için Googlebot-Video gibi farklı tarayıcıları da bulunur. Google'ın tüm tarayıcılarını ve ne işe yaradıklarını "Google Tarayıcıları: Googlebot, GoogleOther ve Google-InspectionTool" yazımızda detaylı olarak bulabilirsiniz.
Aşağıda da Yandex'in kullandığı User-agent listesi yer alıyor:
- YandexBot: Temel indeksleme robotu
- YandexImages: Yandex Görsel indeksleyicisi
- YandexMedia: Multimedya verilerini indeksleyen robot
- YaDirectFetcher: Yandex Direct robotu, Direct servisinde kayıtlı sitelerin incelenmesi
- YandexNews: Yandex Haberler robotu
- YandexPagechecker: Mikro etiket doğrulayıcısı
- YandexMetrika: Yandex Metrica robotu
- YandexMarket: Yandex Market robotu
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.
Burada dikkat edilmesi gereken önemli bir nokta var: Google, kendisi için yazılmış en özel kural grubunu uygular ve diğer grupları dikkate almaz. Örneğin:
User-agent: *
Disallow: /ozel/
User-agent: Googlebot
Disallow: /test/
Bu dosyada Googlebot yalnızca kendi grubundaki kurala uyar. Yani /test/ dizinini taramaz, ancak /ozel/ dizinini tarayabilir. Googlebot'un /ozel/ dizinine de erişmemesini istiyorsanız, bu kuralı Googlebot grubuna da eklemeniz gerekir.
Disallow
Disallow, belli bir URL'ye veya dizine erişilmemesini bildiren komuttur.
"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/
Aynı kuralı tüm tarayıcılar için yazmak istersek:
User-agent: *
Disallow: /seo/
Bir sayfayı engellemek istersek komut şu şekilde olur:
User-agent: Googlebot
Disallow: /bu-bir-sayfadir.html
Bir görseli engellemek istersek de komut şu şekilde olur:
User-agent: Googlebot-Image
Disallow: /kopek.jpg
Disallow satırını boş bırakırsanız, tarayıcının sitenin tamamına erişebileceğini belirtmiş olursunuz. URL yollarının büyük-küçük harfe duyarlı olduğunu da unutmayın: /SEO/ ile /seo/ farklı yollar olarak değerlendirilir.
Allow
Allow, Disallow ile engellenmiş bir dizinin içindeki belirli bir sayfaya veya alt dizine erişim izni vermek için kullanılır. Örneğin WordPress sitelerinde varsayılan olarak şu kurallar kullanılır:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Bu kurallarla /wp-admin/ dizininin tamamı engellenirken, sitenin düzgün çalışması için gerekli olan admin-ajax.php dosyasına erişim izni verilir. Google, Allow ve Disallow kuralları çakıştığında en uzun, yani en özel kuralı uygular. Kurallar eşit uzunluktaysa daha az kısıtlayıcı olan Allow kuralı geçerli olur.
Sitemap
Sitenizde XML formatında site haritası kullanıyorsanız ve robotun bunu bilmesini istiyorsanız, dosya yolunu "Sitemap" yönergesi ile belirtebilirsiniz. Birden fazla "Sitemap:" satırı kullanabilirsiniz. Sitemap satırı herhangi bir User-agent grubuna bağlı değildir ve tam URL ile yazılmalıdır. Ö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
Crawl-delay
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
Bu yönergeyi Bing destekler, ancak Google desteklemez. Yandex de 2018'den beri bu yönergeyi dikkate almıyor, tarama hızı Yandex Webmaster paneli üzerinden ayarlanıyor.
Clean-param
(Sadece Yandex kullanıyor.) Sitenizin sayfa adresleri, içeriklerini etkilemeyen dinamik parametreler (örneğin oturum, kullanıcı, başvuran vb. tanımlayıcılar) içeriyorsa, bunlar "Clean-param" yönergesinin yardımıyla açıklanabilir.
Bir URL veya path içerisinde, içeriği etkilemeyen bir veya birden fazla parametre Clean-param içerisinde & karakteri ile birleştirilerek gereksiz yere taranmaları önlenebilir. Ö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'lerin sık taranmasına gerek olmadığını belirtir.
Yorum ve 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ı
Tanımlı olan 2 karakteri kullanarak basit düzeyde kalıplar hazırlayabilir ve kompleks durumlar için şablonlu komutlar oluşturabilirsiniz.
- * : Yıldız karakteri herhangi bir karakter dizisi, yani herhangi bir şey anlamına gelir.
- $ : Dolar işareti bir URL'nin sonunu belirtir.
Dosya tiplerini engellemek için (bu kod ile .gif dosyalarını taramasın diyoruz):
User-agent: Googlebot
Disallow: /*.gif$
.xls ile biten tüm URL'leri engellemek için (dosya adı ne olursa olsun, uzantısı .xls olanlar engellenir):
User-agent: Googlebot
Disallow: /*.xls$
Parametreli (dinamik) web sayfalarını engellemek 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: /*?
Örnek Robots.txt Dosyaları
Tüm tarayıcıların sitenin tamamını taramasına izin vermek:
User-agent: *
Disallow:
Tüm tarayıcıların sitenin tamamını taramasını engellemek:
User-agent: *
Disallow: /
Bu kural genellikle test (staging) ortamlarında kullanılır. Test ortamındaki robots.txt dosyasının yanlışlıkla canlı siteye taşınması, sitenin tamamen taranamaz hale gelmesine yol açabilir.
Tipik bir WordPress robots.txt dosyası:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://www.ornek.com/wp-sitemap.xml
Yapay zeka botlarını engellemek:
İçeriklerinizin yapay zeka modellerinin eğitiminde kullanılmasını istemiyorsanız, ilgili botları robots.txt ile engelleyebilirsiniz:
User-agent: Google-Extended
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
Google-Extended'ı engellemek, sitenizin Google Arama'daki görünürlüğünü etkilemez.
Robots.txt Nasıl Test Edilir?
Google Search Console'daki eski robots.txt test aracı 2023 yılında kaldırıldı. Bunun yerine Search Console'un Ayarlar bölümünde yer alan robots.txt raporunu kullanabilirsiniz. Bu rapor, Google'ın sitenizde bulduğu robots.txt dosyalarını, son tarama zamanını ve varsa hataları gösterir. Belirli bir URL'nin robots.txt ile engellenip engellenmediğini görmek için de URL Denetleme aracını kullanabilirsiniz.
robots.txt dosyasına erişilemediğinde Google'ın davranışını da bilmekte fayda var: Dosya 404 gibi bir hata veriyorsa Google sitede hiçbir kısıtlama olmadığını varsayar. Ancak dosya 5xx sunucu hatası veriyorsa Google siteyi taramayı geçici olarak durdurabilir.
Robots.txt Yaparken Sık Yapılan Hatalar
- robots.txt ile engellenen sayfaya noindex eklemek: Google sayfayı tarayamadığı için noindex etiketini göremez. Bir sayfanın dizinden çıkmasını istiyorsanız, önce noindex ekleyin ve sayfayı taranabilir bırakın.
- CSS ve JavaScript dosyalarını engellemek: Google sayfaları render ederken bu dosyalara ihtiyaç duyar. Engellendiklerinde Google sayfanızı doğru göremeyebilir.
- Test ortamındaki "Disallow: /" kuralını canlıya taşımak: Sitenin tamamının taranamaz hale gelmesine yol açar.
- Hassas dizinleri robots.txt'te listelemek: Dosya herkese açık olduğu için bu yolları davetsiz misafirlere göstermiş olursunuz.
- Büyük-küçük harf hatası: URL yolları harfe duyarlıdır, /Blog/ ile /blog/ farklı kurallardır.
Robots.txt, Robots Meta Etiketi ve X-Robots-Tag Farkı
robots.txt taramayı kontrol ederken, robots meta etiketi ve X-Robots-Tag HTTP başlığı dizine eklemeyi kontrol eder. Sayfa düzeyinde noindex, nofollow gibi kurallar bu iki yöntemle verilir. Meta etiketi HTML sayfalarında <head> bölümüne eklenir. X-Robots-Tag ise HTTP başlığında gönderildiği için PDF, görsel gibi HTML olmayan dosyalarda da kullanılabilir.
indexifembedded Etiketi
"indexifembedded" etiketiyle, içerik sayfanız noindex etiketine sahip olsa bile, içeriğiniz iframe'ler ve benzer HTML etiketleri aracılığıyla başka sayfalara yerleştirildiğinde yine de dizine eklenmesini istediğinizi Google'a söyleyebiliyorsunuz. Google'ın 2022'de duyurduğu bu etiket, başta widget servisleri olan haber siteleri ve görsel medya yayıncıları gibi sitelerin ihtiyaçlarını çözmeyi amaçlıyor.
"indexifembedded" etiketi özellikle medya yayıncılarını etkileyen yaygın bir sorunu ele alıyor. Yayıncılar, içeriklerinin üçüncü taraf sitelere yerleştirildiğinde dizine eklenmesini isteyebilir, ancak bu içeriğin kendi sitelerindeki karşılığının dizine eklenmesini istemeyebilirler. Medya sayfalarının dizine eklenmesini istemedikleri için bu tür sayfalarda "noindex" etiketi kullanılıyor. Ancak "noindex" etiketi, içeriğin diğer sayfalara gömüldüğünde de dizine eklenmesini engelliyor.
"indexifembedded" etiketi noindex ile birlikte kullanılır ve yalnızca noindex içeren sayfa bir iframe veya benzer bir HTML etiketi aracılığıyla başka bir sayfaya yerleştirildiğinde çalışır.
Örneğin benimsitem.com/havadurumu?city=34 hem "noindex" hem de "indexifembedded" etiketine sahipse, Google dizine ekleme sırasında bu sayfadaki içeriği, onu iframe ile yerleştiren baskabirsite.com/hava-durumu.html sayfasının bir parçası olarak dizine ekleyebilir.
İçeriğinizin yalnızca diğer sayfalara yerleştirildiğinde dizine eklenmesini sağlamak için "indexifembedded" etiketini noindex etiketiyle birlikte eklediğinizden emin olun. Örneğin:
<meta name="googlebot" content="noindex" />
<meta name="googlebot" content="indexifembedded" />
<!-- VEYA -->
<meta name="googlebot" content="noindex,indexifembedded" />
Alternatif olarak etiketi HTTP başlığında da belirtebilirsiniz:
X-Robots-Tag: googlebot:noindex
X-Robots-Tag: googlebot:indexifembedded
VEYA
X-Robots-Tag: googlebot:noindex,indexifembedded
"indexifembedded" etiketini şu anda yalnızca Google desteklemektedir.












