İçeriğe atla
KaynakOl

robots.txt izin veriyor ama sunucunuz engelliyor

robots.txt bir beyandır, sunucunuzun yanıtı ise gerçektir. İkisi çeliştiğinde markanız yapay zekâ cevaplarından sessizce düşer — ve hiçbir hata mesajı almazsınız.

Mustafa Gezer 6 dk okuma

Yapay zekâ tarayıcılarının sitenize erişip erişemediği tek bir soru değil, iki ayrı sorudur. Bu ikisini karıştırmak, Türkiye'deki AI görünürlük araçlarının neredeyse tamamının yaptığı hatadır ve site sahiplerini yanlış bir güven duygusuna sürükler.

Beyan: robots.txt dosyanız bu user-agent'a izin veriyor mu? Gerçek: O user-agent ile atılan gerçek HTTP isteği ne dönüyor?

İlki bir niyet açıklamasıdır. İkincisi ne olduğudur. Ve bu ikisi şaşırtıcı sıklıkla birbiriyle çelişir.

robots.txt bir kilit değil, bir ricadır

robots.txt sunucu yapılandırmasının parçası değildir. Hiçbir isteği fiziksel olarak durduramaz. Yaptığı tek şey, dosyayı okumayı kabul eden tarayıcılara ne yapmalarını istediğinizi söylemektir. Uyum tamamen botun kendi beyanına kalmıştır.

Bunun tersi de doğrudur ve asıl sorun budur: robots.txt bir isteği geçirmeyi de garanti edemez. Dosyanız Allow: / dese bile, önündeki güvenlik katmanı isteği robots.txt'ten tamamen habersiz biçimde reddedebilir.

Çelişkinin kaynağı: birbirinden habersiz iki katman

Tipik bir kurulumda bir istek şu sırayla ilerler — ve robots.txt bu zincirin en sonunda okunur:

GPTBot CDN / WAF 403 Sunucu robots.txt Allow: / engelleme burada olur izin burada yazılı — okunmadan kalıyor İki katman birbirinden habersiz çalışır.
robots.txt zincirin sonunda, botun kendisi tarafından okunur. Engelleme ise zincirin başında, güvenlik duvarında olur — ve orada robots.txt’te ne yazdığı bilinmez.

robots.txt bu zincirin en sonunda okunur — hem de yalnızca botun kendisi tarafından. Oysa engelleme zincirin en başında gerçekleşir. Güvenlik duvarı, robots.txt'inizde ne yazdığını bilmez ve umursamaz.

Sonuç: site sahibi robots.txt'e Allow: / yazar, bir kontrol aracına girer, "13 bot da erişebiliyor" yazısını görür ve konuyu kapatır. Gerçekte ise Cloudflare bot koruması GPTBot'u aylardır 403 ile geri çeviriyordur.

Bu neden fark edilmez

Üç sebepten:

  1. Hata mesajı üretmez. Ziyaretçileriniz siteyi normal görür, analitik normaldir,

Google sıralamanız değişmez. Yalnızca AI cevaplarında yoksunuzdur ve bunu ölçmüyorsunuzdur.

  1. Sunucu günlüklerinde arama yapmak gerekir. 403 dönen bot istekleri, milyonlarca

satırlık erişim günlüğünde user-agent'a göre filtrelenmeden görünmez.

  1. Araçlar bakmıyor. Beyan katmanını okumak kolay ve ucuzdur: tek bir dosya indirip

ayrıştırırsınız. Gerçek katmanı ölçmek için her bot için ayrı istek atmak gerekir.

Türkiye'nin en bilinen AI tarama denetimi araçlarından biri olan Seobaz, bu sınırı kendi sayfasında açıkça belirtiyor ve soruna "katman karışıklığı" adını veriyor: araç "robots.txt katmanını ölçer, sunucu seviyesindeki engeli göstermez." Bu dürüst bir ifade — ama ölçülmeyen bir şeyin var olmadığı anlamına gelmez.

Referans isteği olmadan hüküm verilemez

Gerçek katmanı ölçerken kritik bir tuzak var: bot 403 alıyor diye hemen "bot engelleniyor" demek yanlıştır. Site zaten herkese kapalı olabilir; sunucu çökmüş, IP adresiniz kara listeye girmiş ya da coğrafi kısıtlama devrede olabilir.

Bu yüzden her ölçümde normal bir tarayıcı user-agent'ı ile referans isteği atılmalıdır:

Referans (tarayıcı)BotSonuç
200200Erişim açık
200403Bota özel engel — asıl bulgu bu
403403Site zaten erişilemez, bot hükmü verilemez

Üçüncü satır önemlidir. Referans kontrolü olmayan bir araç, kendi IP'si engellenmiş bir sitede "13 botun tamamı engellendi" diye alarm verir. Bu yanlış alarm, aracın tüm bulgularını şüpheli hale getirir.

Engelin imzasını tanımak

Bir 403 yanıtı tek başına sebebi söylemez. Yanıt başlıkları ve gövdesi genellikle söyler:

  • Cloudflare: cf-ray ve cf-mitigated başlıkları, gövdede "Just a moment" ya da

"Enable JavaScript and cookies to continue"

  • Sucuri: x-sucuri-id başlığı, "Sucuri WebSite Firewall"
  • Imperva / Incapsula: x-iinfo başlığı, "Incapsula incident ID"
  • AWS WAF: x-amzn-waf-action başlığı
  • DataDome: x-datadome başlığı
  • Wordfence: "Your access to this site has been limited"

Sağlayıcıyı bilmek çözümü doğrudan verir: düzeltme, ilgili panelde AI tarayıcılarına istisna tanımlamaktan ibarettir ve genellikle tek bir kuralla biter.

429 yanıtına dikkat: kendi ölçümünüz sonucu bozabilir

Bir uyarı da ölçümü yapan tarafa: on üç botu aynı anda denerseniz hedef sunucu hız sınırı uygulayıp 429 döndürebilir. O yanıtı "WAF engelliyor" diye raporlamak yanlış alarmdır ve ölçümün kendisi ölçülen şeyi bozmuş olur.

Doğru davranış, eşzamanlılığı düşük tutmak ve 429'u kesin hüküm saymamaktır. Bilinmeyen bir sonucu "engellendi" diye kaydetmektense "ölçülemedi" demek her zaman daha doğrudur.

Kendiniz nasıl kontrol edersiniz

Araç kullanmadan, terminalden iki komutla. Önce normal bir tarayıcı gibi isteyin:

curl -s -o /dev/null -w "%{http_code}\n" \
  -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 \
      (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36" \
  https://siteniz.com/

Sonra aynı sayfayı bir AI botu gibi isteyin:

curl -s -o /dev/null -w "%{http_code}\n" \
  -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; \
      GPTBot/1.2; +https://openai.com/gptbot" \
  https://siteniz.com/

İlki 200, ikincisi 403 dönüyorsa bulgu kesindir. İkisi de 403 dönüyorsa sorun bota özel değildir; siteniz o IP'den zaten erişilemiyordur ve önce bunu çözmeniz gerekir.

Sağlayıcıyı öğrenmek için başlıklara bakın:

curl -sI -A "GPTBot/1.2" https://siteniz.com/ | grep -iE "server|cf-ray|cf-mitigated|x-sucuri|x-iinfo"

Bu komutu on üç bot için tek tek çalıştırmak yerine hepsini birden ölçen bir araç kullanabilirsiniz; mantık aynıdır, fark yalnızca tekrardadır.

Sunucu günlüklerinde aramak

Engellemenin ne zamandır sürdüğünü öğrenmek isterseniz erişim günlüklerinde user-agent'a göre filtreleyin:

grep -iE "GPTBot|ClaudeBot|PerplexityBot|OAI-SearchBot" access.log \
  | awk '{print $9}' | sort | uniq -c | sort -rn

Çıktıda 403 sayısı 200'den fazlaysa engelleme aylardır sürüyor olabilir. Bu, düzeltmenin aciliyetini de gösterir: geçen her ay, modellerin sizi öğrenmediği bir aydır.

Cloudflare kullanıyorsanız günlüklere gerek yok: panelin Security → Events bölümünde user-agent'a göre filtreleyip hangi kuralın tetiklendiğini doğrudan görebilirsiniz.

Sağlayıcıya göre çözüm

Cloudflare. İki ayrı yerde ayar olabilir. Birincisi Security → Bots altındaki AI tarayıcı seçenekleri; ikincisi kendi yazdığınız WAF kuralları. AI botlarına izin vermek için bir Skip kuralı yazmak en temizidir:

(http.user_agent contains "GPTBot") or
(http.user_agent contains "OAI-SearchBot") or
(http.user_agent contains "ClaudeBot") or
(http.user_agent contains "PerplexityBot")
→ Skip: All remaining custom rules, Bot Fight Mode

Sucuri. Firewall panelinde Access Control → Whitelist bölümünden user-agent tabanlı istisna tanımlanır.

Paylaşımlı hosting / cPanel. ModSecurity kural setleri sık sık AI botlarını yakalar. Barındırıcınızdan ilgili kural kimliğini devre dışı bıraktırmanız gerekebilir; hangi kuralın tetiklendiği ModSecurity denetim günlüğünde yazar.

Kendi sunucunuz. nginx ya da Apache yapılandırmasında eski bir bot engelleme bloğu kalmış olabilir. grep -ri "user_agent" /etc/nginx/ genellikle bulur.

Düzelttikten sonra doğrulayın

Kural yazmak yetmez; değişikliğin gerçekten uygulandığını aynı curl komutuyla teyit edin. Cloudflare gibi katmanlarda kural yayılımı birkaç dakika sürebilir.

Doğrulama sırası:

  1. Bot user-agent'ı ile istek atın — 200 dönmeli
  2. Yanıt gövdesinin gerçek içerik olduğunu kontrol edin, boş sayfa ya da challenge değil
  3. Birkaç farklı sayfada tekrarlayın; kural yalnızca ana sayfaya uygulanmış olabilir
  4. Bir hafta sonra tekrar ölçün — bazı güvenlik ürünleri kuralları otomatik geri alır

Ne kadar sürede etkisi görünür

Kanala göre değişir. Arama yüzlü botlar (OAI-SearchBot, PerplexityBot, Claude-SearchBot) engeli kalkar kalkmaz yeniden taramaya başlar; sitenizin cevaplarda kaynak olarak görünmesi günler içinde mümkündür.

Eğitim botlarında (GPTBot, ClaudeBot, CCBot) etki modelin bir sonraki eğitim turuna bağlıdır: aylar. Bu yüzden erişimi açmak ne kadar geç kalınırsa o kadar pahalıya mal olur — kaybedilen zaman geri alınamaz.

Engellemek bazen doğru karardır

Bu yazı "her botu açın" demiyor. İçeriğiniz telife tabi, ücretli ya da özel ise eğitim botlarını engellemek tamamen meşru bir tercihtir. Haber siteleri ve yayıncılar bunu bilinçli olarak yapıyor.

Sorun engellemek değil, bilmeden engellemek. Kararın sizin olması için önce durumun ne olduğunu görmeniz gerekir. Çoğu site sahibi, robots.txt'te Allow: / yazdığı için erişimin açık olduğunu sanıyor; oysa ölçüm bambaşka bir şey söylüyor.

Sıralama: önce erişim

Erişim, yapay zekâ görünürlüğünün en alt katmanıdır. Şema işaretlemeniz, içerik kaliteniz ve otoriteniz ancak modeller sayfayı okuyabildiğinde anlam kazanır. Bot erişimi kapalıyken içerik iyileştirmesi yapmak, kapısı kilitli dükkânın vitrinini düzenlemeye benzer.

Bu yüzden teşhis sırası hep aynıdır: önce erişim, sonra varlık netliği, sonra içerik.

Mustafa GezerSEO ve AI görünürlük denetçisi

Markaların yapay zekâ destekli arama sistemlerindeki görünürlüğünü ölçer ve düzeltir. Ölçüm metodolojisi ham sunucu yanıtına ve tekrarlı çalıştırmaya dayanır; her bulgu kaydedilmiş bir sunucu yanıtına bağlanır.

Sık sorulanlar

robots.txt izin veriyorsa bot neden engelleniyor?

robots.txt yalnızca bir ricadır ve sunucu yapılandırmasının bir parçası değildir. Güvenlik duvarı, CDN bot koruması veya WAF kuralı, robots.txt’ten bağımsız olarak isteği 403 ile geri çevirebilir. İki katman birbirinden habersiz çalışır.

Bunu nasıl kontrol ederim?

Her AI botunun user-agent’ı ile gerçek bir HTTP isteği atıp dönen durum kodunu, aynı sayfaya normal bir tarayıcı user-agent’ı ile atılan isteğin sonucuyla karşılaştırmanız gerekir. Tarayıcı 200 alırken bot 403 alıyorsa engelleme bota özeldir.

Cloudflare kullanıyorum, otomatik olarak engelliyor mu?

Cloudflare’in yapay zekâ tarayıcılarını engelleyen ayarları vardır ve bazı planlarda varsayılan olarak etkin gelebilir. Ayarın açık olması sizin tercihiniz olabilir; sorun, çoğu site sahibinin bu ayarın varlığından haberdar olmamasıdır.

İlgili yazılar

Ölçerek başlayın

Bu yazıda anlatılanın sitenizde geçerli olup olmadığını tahmin etmeyin — ölçün. Hızlı Site Taraması ücretsiz ve ~15 saniye sürüyor.

WhatsApp