Blog · 27 Ekim 2026
Robots.txt Nedir? Doğru Yazım, Örnekler ve Sık Yapılan Hatalar
Robots.txt, sitenizin kök dizininde duran ve arama motoru tarayıcılarına hangi adresleri tarayıp hangilerini taramamaları gerektiğini söyleyen düz metin dosyasıdır. Bir kilit değil, bir yönergedir: Googlebot gibi kurallara uyan tarayıcılar onu dikkate alır, kötü niyetli botlar ise yok sayabilir. En önemli nokta şu: robots.txt taramayı kontrol eder, dizine eklemeyi değil.
Bu rehberde dosyanın nerede durması gerektiğini, satır satır sözdizimini, WordPress, e-ticaret ve Next.js için kullanıma hazır örnekleri, noindex ile farkını, yapay zekâ tarayıcılarını nasıl engelleyebileceğinizi ve bir sitenin trafiğini tek satırla sıfırlayabilen hataları anlatıyoruz.
Robots.txt ne işe yarar?
Arama motorları bir siteyi ziyaret etmeden önce genellikle ilk olarak /robots.txt adresini ister. Dosyadaki kurallar, tarayıcının o sitede hangi yollara girebileceğini belirler. Bunun pratikteki faydaları şunlardır:
- Tarama bütçesini korumak: Filtre, sıralama, iç arama ve oturum parametreleriyle üretilen binlerce değersiz URL'nin taranmasını engelleyip tarayıcıyı asıl sayfalara yönlendirmek.
- Sunucu yükünü azaltmak: Ağır sorgu üreten veya sonsuz kombinasyon yaratan bölümleri taramanın dışında tutmak.
- Yönetim ve teknik alanları dışarıda bırakmak: Yönetim paneli, sepet, ödeme adımları gibi aramada işe yaramayan sayfaları taramadan çıkarmak.
- Site haritasını bildirmek:
Sitemapsatırıyla XML site haritasının yerini tüm tarayıcılara duyurmak.
Robots.txt, teknik SEO çalışmasının en küçük ama en riskli dosyasıdır. Doğru yazıldığında fark edilmez; yanlış yazıldığında sitenin tamamını aramadan silebilir.
Robots.txt dosyası nerede olmalı?
Dosya yalnızca alan adının kökünde geçerlidir ve adı küçük harfle robots.txt olmalıdır:
https://www.ornek.com/robots.txtgeçerlidir.https://www.ornek.com/klasor/robots.txtdikkate alınmaz.https://blog.ornek.comalt alan adı için ayrı birhttps://blog.ornek.com/robots.txtgerekir.- HTTP ve HTTPS sürümleri ile farklı port numaraları da ayrı ana makine sayılır; her birinin kuralı kendi robots.txt dosyasından okunur.
Dosya UTF-8 kodlamalı düz metin olmalı ve sunucu 200 durum koduyla yanıt vermelidir. Google, robots.txt dosyasının ilk 500 KiB'lik bölümünü işler; bu sınıra yaklaşan bir dosya zaten gereğinden karmaşıktır. Dosya hiç yoksa ya da 404 dönüyorsa Google bunu "kısıtlama yok" olarak yorumlar ve siteyi serbestçe tarar. Buna karşılık dosya sürekli sunucu hatası (5xx) veriyorsa Google temkinli davranıp taramayı yavaşlatabilir veya durdurabilir. Bu yüzden robots.txt'nin hata vermeden açıldığından emin olmak, içeriği kadar önemlidir.
Robots.txt sözdizimi: satır satır
Dosya, her biri bir veya daha fazla User-agent satırıyla başlayan gruplardan oluşur. Her grubun altında o tarayıcıya uygulanacak Disallow ve Allow kuralları yer alır. # ile başlayan satırlar yorumdur.
# Tüm tarayıcılar için kurallar
User-agent: *
Disallow: /yonetim/
Disallow: /sepet
Allow: /yonetim/yardim/
Sitemap: https://www.ornek.com/sitemap.xml
User-agent
Kuralın hangi tarayıcıya uygulanacağını belirtir. * tüm tarayıcılar anlamına gelir. Googlebot, Bingbot gibi adlar ise yalnızca o tarayıcıyı hedefler. Burada sık gözden kaçan bir kural vardır: bir tarayıcı kendisine özel bir grup bulursa yalnızca o grubu uygular ve * grubunu tamamen yok sayar. Yani Googlebot için ayrı bir grup açtıysanız, genel gruptaki yasakları oraya da yeniden yazmanız gerekir.
Disallow
Taranmasını istemediğiniz yolu belirtir. Yol, alan adından sonraki kısımdır ve büyük-küçük harfe duyarlıdır: Disallow: /Arama kuralı /arama adresini engellemez. Boş bir Disallow: satırı "hiçbir şey yasak değil" demektir. Disallow: / ise sitenin tamamını yasaklar.
Allow
Yasaklanmış bir klasörün içindeki belirli bir alt yolu yeniden açar. Google, bir URL'ye birden fazla kural uyduğunda en uzun (en spesifik) yol eşleşmesine sahip kuralı uygular. Uzunluklar eşitse daha az kısıtlayıcı olan, yani Allow kazanır.
Sitemap
Site haritanızın tam URL'sini bildirir. Herhangi bir grubun parçası değildir, dosyanın herhangi bir yerinde durabilir ve birden fazla kez kullanılabilir. Mutlaka tam adres yazılmalıdır, göreli yol geçersizdir. Site haritasını nasıl hazırlayıp göndereceğinizi sitemap rehberimizde ayrıntılı anlattık.
Joker karakterler: * ve $
Google ve diğer büyük arama motorları iki özel karakteri destekler:
*sıfır veya daha fazla herhangi bir karakterle eşleşir.$URL'nin sonunu işaretler.
| Kural | Engeller | Engellemez |
|---|---|---|
Disallow: /arama | /arama, /arama?q=koltuk, /aramalar | /urun/arama |
Disallow: /arama/ | /arama/koltuk | /arama, /aramalar |
Disallow: /*?sirala= | /koltuk?sirala=fiyat | /koltuk |
Disallow: /*.pdf$ | /katalog.pdf | /katalog.pdf?v=2 |
Disallow: /*? | Soru işareti içeren tüm adresler | Parametresiz tüm adresler |
Tablonun ilk satırı önemli bir uyarı içerir: Disallow kuralları önek eşleşmesiyle çalışır. /arama yazdığınızda /aramalar gibi aynı harflerle başlayan başka sayfaları da istemeden engelleyebilirsiniz. Klasör kastediyorsanız sona eğik çizgi koyun.
Google'ın desteklemediği satırlar
İnternette dolaşan eski örneklerde görülen bazı satırlar Google tarafından dikkate alınmaz:
Crawl-delay: Bazı arama motorları destekler, Google desteklemez.Noindex: Robots.txt içinde noindex yazmak 2019'dan beri Google tarafından desteklenmiyor. Dizinden çıkarma için meta etiket veya HTTP başlığı kullanılmalıdır.Host: Belirli bir arama motoruna özgü eski bir yönergedir, Google için anlamı yoktur.
Hazır robots.txt örnekleri
Aşağıdaki örnekler başlangıç noktasıdır. Kopyalamadan önce kendi URL yapınızla karşılaştırın; başka bir siteye uyan kural sizinkinde önemli bir bölümü kapatabilir.
Basit kurumsal site
User-agent: *
Disallow:
Sitemap: https://www.ornek.com/sitemap.xml
Hiçbir şeyi engellemeyen bu dosya, yasaklanacak özel bir bölümü olmayan küçük siteler için çoğu zaman en doğru seçimdir. Engellenecek bir şey yoksa engellemeyin.
WordPress
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Sitemap: https://www.ornek.com/wp-sitemap.xml
WordPress, fiziksel bir dosya yoksa ilk üç satıra benzeyen sanal bir robots.txt üretir. admin-ajax.php için Allow satırı önemlidir; birçok tema ve eklenti sayfa içeriğini bu uç noktadan yükler. /wp-content/ ya da /wp-includes/ klasörlerini engellemeyin: tema dosyaları, görseller, CSS ve JavaScript buradan gelir ve Google'ın sayfayı doğru işlemesi için gereklidir. Site haritası adresi, kullandığınız yapıya göre farklı olabilir; tarayıcıda açarak doğrulayın.
E-ticaret sitesi
User-agent: *
Disallow: /sepet
Disallow: /odeme
Disallow: /hesabim
Disallow: /*?sirala=
Disallow: /*&sirala=
Disallow: /*?q=
Disallow: /*sessionid=
Sitemap: https://www.ornek.com/sitemap.xml
E-ticarette asıl sorun filtre ve sıralama parametreleridir. Renk, beden, fiyat ve sıralama seçenekleri birleştiğinde tek bir kategori binlerce URL üretebilir. Ancak hangi filtre sayfasının engelleneceğine kör karar vermeyin: "siyah deri koltuk" gibi gerçek arama talebi olan filtre kombinasyonları, kendi başına sıralanabilecek değerli sayfalar olabilir. Bu ayrımı nasıl yapacağınızı e-ticaret SEO çalışmasında kategori ve filtre stratejisiyle birlikte düşünmek gerekir. Parametrenin URL'nin başında ? ile mi, ortasında & ile mi geldiğine göre iki ayrı kural yazmanız gerektiğine dikkat edin.
Next.js (App Router)
Next.js'te robots.txt'yi elle yazmak yerine app/robots.ts dosyasıyla üretebilirsiniz. Çerçeve bu dosyadan derleme sırasında /robots.txt çıktısını oluşturur:
import type { MetadataRoute } from "next";
export default function robots(): MetadataRoute.Robots {
return {
rules: [
{ userAgent: "*", allow: "/", disallow: ["/api/", "/panel/"] },
],
sitemap: "https://www.ornek.com/sitemap.xml",
};
}
Bu yöntemin avantajı, kuralları ortam değişkenine bağlayabilmenizdir. Örneğin yalnızca üretim ortamında taramaya izin verip test ortamında her şeyi kapatabilirsiniz. Ama bu esneklik, aşağıda anlatacağımız en tehlikeli hatanın da kapısını açar: ortam değişkeni yanlış ayarlanırsa canlı site Disallow: / ile yayına çıkar. /_next/ klasörünü engellemeyin; sayfanın JavaScript ve CSS dosyaları oradan yüklenir.
Robots.txt sayfayı dizinden çıkarmaz: noindex ile farkı
En yaygın yanlış anlama budur. Robots.txt bir sayfanın taranmasını engeller, dizine eklenmesini değil. Engellenen bir sayfaya başka sitelerden veya kendi sitenizden bağlantı veriliyorsa Google o adresi yine de dizine ekleyebilir. Bu durumda sonuçlarda genellikle açıklama metni olmadan, yalnızca URL ve bağlantı metninden türetilmiş bir başlıkla görünür.
| Özellik | Robots.txt Disallow | Noindex (meta etiket veya X-Robots-Tag) |
|---|---|---|
| Neyi kontrol eder? | Taramayı | Dizine eklemeyi |
| Sayfa sonuçlardan kalkar mı? | Garanti değil | Evet, sayfa yeniden tarandıktan sonra |
| Google sayfanın içeriğini görür mü? | Hayır | Evet, okumak zorundadır |
| Tarama bütçesi tasarrufu | Sağlar | Sağlamaz, sayfa taranmaya devam eder |
| Nerede tanımlanır? | Kök dizindeki tek dosyada | Her sayfanın HTML başlığında veya HTTP yanıtında |
| Uygun kullanım | Sonsuz parametre, iç arama, teknik alanlar | İnce içerik, teşekkür sayfaları, etiket arşivleri |
İkisini birlikte kullanma tuzağı
Bir sayfayı hem robots.txt ile engelleyip hem de noindex etiketi eklerseniz, Google sayfayı tarayamadığı için noindex etiketini hiç göremez. Sonuç: sayfa dizinde kalmaya devam edebilir. Doğru sıra şöyledir:
- Sayfaya
<meta name="robots" content="noindex">etiketini ekleyin (PDF gibi HTML olmayan dosyalardaX-Robots-Tag: noindexHTTP başlığını kullanın). - Robots.txt'de o sayfaya engel olmadığından emin olun.
- Google sayfayı yeniden tarayıp sonuçlardan kaldırana kadar bekleyin.
- Sayfa dizinden çıktıktan sonra, tarama bütçesi gerçekten sorun ise robots.txt engelini o zaman ekleyin.
Gizli tutulması gereken bir içerik söz konusuysa ne robots.txt ne de noindex yeterlidir. Robots.txt herkese açık bir dosyadır; içine yazdığınız yollar, sitenizde neyi saklamaya çalıştığınızı da ilan eder. Gerçek gizlilik için şifre koruması veya sunucu düzeyinde erişim kısıtlaması gerekir.
Yapay zekâ tarayıcılarını engelleme
Yapay zekâ şirketlerinin tarayıcıları da robots.txt'yi okur ve büyük sağlayıcılar kendi user-agent adlarını yayımlar. Böylece içeriğinizin model eğitiminde kullanılmasını veya yapay zekâ asistanlarının sayfanızı çekmesini site bazında kontrol edebilirsiniz. Bilinen başlıca adlar:
| User-agent | Sahibi | Kullanım amacı |
|---|---|---|
GPTBot | OpenAI | Model eğitimi için içerik toplama |
OAI-SearchBot | OpenAI | ChatGPT arama sonuçlarında gösterim |
ChatGPT-User | OpenAI | Kullanıcının isteğiyle sayfa ziyareti |
Google-Extended | İçeriğin Gemini modellerinde kullanımına izin verip vermeme | |
ClaudeBot | Anthropic | Model eğitimi için içerik toplama |
PerplexityBot | Perplexity | Perplexity yanıtları için dizinleme |
CCBot | Common Crawl | Pek çok modelin eğitiminde kullanılan açık veri seti |
Applebot-Extended | Apple | İçeriğin Apple'ın yapay zekâ modellerinde kullanımı |
Örneğin model eğitimine kapatıp arama tabanlı yapay zekâ yanıtlarında görünmeye devam etmek isterseniz:
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: *
Disallow: /yonetim/
Bu konuda üç noktayı bilmek gerekir:
- Adlar değişebilir. Sağlayıcılar yeni tarayıcılar ekliyor, mevcut olanları bölüyor veya yeniden adlandırıyor. Engellemeden önce ilgili şirketin güncel tarayıcı belgelerini kontrol edin ve listeyi belli aralıklarla gözden geçirin.
- Google-Extended ayrı bir tarayıcı değildir. Tarama yine Googlebot tarafından yapılır; bu ad yalnızca içeriğin Gemini tarafında kullanımına dair tercihinizi bildirir. Google-Extended'ı engellemek, Google arama sıralamanızı etkilemez. Googlebot'u engellemek ise sitenizi Google aramasından çıkarır, bu ikisini karıştırmayın.
- Engellemenin bedeli olabilir. Arama özellikli asistanların tarayıcılarını kapatırsanız ChatGPT, Perplexity gibi ürünlerin yanıtlarında kaynak olarak gösterilme şansınızı da azaltırsınız. Yapay zekâ aramasında görünürlük hedefliyorsanız bu kararı GEO stratejinizle birlikte verin.
Hangi sayfalarınızın Google'ın yapay zekâ özetlerinde göründüğünü takip etmek, bu kararın etkisini ölçmenin en somut yoludur. seoanalytics.com.tr panelindeki AI özeti görünürlüğü raporu, robots.txt'de yaptığınız bir değişiklikten önceki ve sonraki dönemi karşılaştırmanıza yardımcı olur.
Search Console robots.txt raporu
Google Search Console'un ayarlar bölümündeki robots.txt raporu, Google'ın sitenizde bulduğu robots.txt dosyalarını, en son ne zaman getirildiklerini, getirme durumunu ve dosyada tespit edilen uyarı ya da hataları gösterir. Bir alan adı mülkünde alt alan adlarının dosyaları da burada ayrı ayrı listelenir.
Raporu şu durumlarda mutlaka kontrol edin:
- Robots.txt'yi değiştirdikten sonra: Google dosyayı genellikle önbellekte tutar ve bir süre eski sürümle çalışabilir. Acil bir düzeltmede rapordan yeniden getirme isteği gönderebilirsiniz.
- Getirme hatası görüyorsanız: Sunucu hatası veya zaman aşımı, Google'ın sitenizi taramayı yavaşlatmasına yol açabilir.
- Bir sayfanın neden taranmadığını araştırırken: URL denetleme aracında "robots.txt tarafından engellendi" ifadesini görüyorsanız, hangi kuralın sorumlu olduğunu dosyada arayın.
Ayrıca sayfa dizine ekleme raporunda "robots.txt tarafından engellendi" ve "robots.txt tarafından engellenmesine rağmen dizine eklendi" türündeki durumları izleyin. İkincisi, yukarıda anlattığımız noindex karışıklığının en net işaretidir. Raporların nasıl okunacağı için Google Search Console rehberimize göz atabilirsiniz.
Felaket hataları ve nasıl önlenir?
1. Canlıda unutulan Disallow: /
Geliştirme ve test ortamlarında sitenin taranmaması için Disallow: / kullanılır. Site yayına alınırken bu dosya taşınır ve kimse fark etmez. Birkaç gün içinde gösterimler düşmeye başlar, birkaç hafta içinde sayfalar sonuçlardan kaybolur. Önlemek için:
- Test ortamlarını robots.txt yerine şifre korumasıyla kapatın. Böylece canlıya taşınacak bir yasak dosyası hiç oluşmaz.
- Yayın kontrol listenize "robots.txt'yi tarayıcıda aç ve oku" adımını ekleyin.
- Robots.txt'yi ortam değişkenine göre üretiyorsanız, canlı ortam için değişkenin doğru ayarlandığını yayın sonrasında doğrulayın.
- Search Console'da tıklama ve gösterimlerdeki ani düşüşleri haftalık izleyin. Search Console verisini bağladığınız bir panel, örneğin seoanalytics, bu tür bir düşüşü sayfa bazında daha erken görmenizi sağlar.
2. CSS ve JavaScript dosyalarını engellemek
Google sayfaları bir tarayıcı gibi işler. Stil ve betik dosyalarına erişemezse sayfayı eksik görür, mobil uyumluluğunu yanlış değerlendirir ve JavaScript ile yüklenen içeriği hiç göremeyebilir. /assets/, /static/, /_next/, /wp-content/ gibi klasörleri engellemeyin. Search Console'daki URL denetleme aracıyla canlı testi çalıştırıp işlenmiş sayfanın ekran görüntüsüne bakmak, bu sorunu fark etmenin en hızlı yoludur.
3. Önek eşleşmesini hesaba katmamak
Disallow: /blog yazan biri yalnızca blog ana sayfasını engellediğini düşünür; oysa /blog-yazilari, /blogger ve tüm blog yazıları da engellenir. Her kuralı yazdıktan sonra, etkileyebileceği gerçek URL'leri tek tek düşünün.
4. Özel grup açıp genel kuralları unutmak
Googlebot için ayrı bir grup açtığınız anda Googlebot, User-agent: * altındaki kuralları uygulamayı bırakır. Genel gruptaki yasaklar Googlebot için geçerli olmaz. Özel grup açıyorsanız gerekli tüm kuralları oraya da kopyalayın.
5. Büyük-küçük harf ve yanlış dosya adı
Robots.txt veya robots.TXT adlı bir dosya bazı sunucularda bulunamaz. Yollar da harfe duyarlıdır. Dosya adını küçük harfle yazın ve kurallarda URL'lerinizdeki yazımı birebir kullanın.
Robots.txt kontrol listesi
- Dosya alan adının kökünde,
robots.txtadıyla duruyor ve 200 durum koduyla açılıyor mu? - Canlı sitede
Disallow: /satırı yok mu? - CSS, JavaScript ve görsel klasörleri engellenmemiş mi?
- Dizinden çıkarmak istediğiniz sayfalar robots.txt yerine noindex ile mi yönetiliyor?
- Her Disallow kuralının önek eşleşmesiyle neleri kapsadığı kontrol edildi mi?
- Özel user-agent grupları varsa genel kurallar onlara da eklendi mi?
Sitemapsatırı tam URL ile yazılmış ve adres çalışıyor mu?- Yapay zekâ tarayıcıları için verdiğiniz kararlar güncel user-agent adlarıyla yazılmış mı?
- Değişiklik sonrası Search Console robots.txt raporunda yeni sürüm görünüyor mu?
- Alt alan adlarının her birinin kendi robots.txt dosyası kontrol edildi mi?
Sık sorulan sorular
Her sitenin robots.txt dosyası olmak zorunda mı?
Hayır. Dosya yoksa Google siteyi kısıtlamasız tarar. Yine de site haritasını bildirmek ve gelecekte gerekebilecek kuralları tek yerden yönetmek için basit bir robots.txt bulundurmak iyi bir alışkanlıktır.
Robots.txt ile engellediğim sayfa neden hâlâ Google'da görünüyor?
Çünkü robots.txt taramayı engeller, dizine eklemeyi değil. Sayfaya bağlantı veren başka adresler varsa Google URL'yi içeriğini görmeden dizine ekleyebilir. Sayfayı kaldırmak için robots.txt engelini kaldırıp noindex etiketi ekleyin ve Google'ın sayfayı yeniden taramasını bekleyin.
Robots.txt değişikliği ne kadar sürede etkili olur?
Google robots.txt dosyasını genellikle bir süre önbellekte tutar; bu süre çoğu zaman bir günü geçmez. Acil durumlarda Search Console'daki robots.txt raporundan yeniden getirme isteği göndererek süreci hızlandırabilirsiniz.
GPTBot'u engellersem ChatGPT yanıtlarında hiç görünmez miyim?
Mutlaka değil. GPTBot model eğitimi için kullanılan tarayıcıdır; ChatGPT'nin arama özelliği için OpenAI ayrı bir tarayıcı adı kullanır. Hangisini engellediğiniz, eğitim verisinden mi yoksa arama yanıtlarından mı çıkacağınızı belirler. Adlar değişebileceği için kararı vermeden önce sağlayıcının güncel belgelerine bakın.