2026 SEO & GEO Eğitimi

Ders 9/25 · Konu dersi · 60 dk · Online canlı

Taranabilirlik: robots.txt, site haritası ve canonical

Bu derste sitenizin robots.txt dosyasını, site haritasını ve canonical etiketlerini kuruyoruz. Ders bittiğinde üçü de deponuzda çalışır durumda oluyor ve hiçbir sayfanız başka bir sayfadan bağlantı almadan kalmıyor.

Proje adımı 9/25robots.txt, site haritası ve canonical kurulu; yetim sayfa yok

Kısa cevap

robots.txt, sitenizin kök dizininde duran düz bir metin dosyasıdır ve arama motoru botlarına hangi adresleri taramamalarını söyler. Google bu dosyada yalnızca dört alanı tanır: user-agent, allow, disallow ve sitemap. Dosya bir sayfayı arama sonuçlarından çıkarmaz; bunun için noindex gerekir ve noindex’in okunabilmesi için sayfanın taramaya açık olması şarttır. Site haritası botlara hangi adresleri önemsediğinizi bildirir. Canonical ise aynı içerik birden çok adresten açılıyorsa hangisinin asıl olduğunu söyler.

Bu derste

  1. 01robots.txt dosyasını sıfırdan yazıyoruz: dört alan, kök dizin, 500 KiB sınırı.
  2. 02disallow ile noindex arasındaki farkı canlı bir sayfada deniyoruz.
  3. 03Astro’da site haritasını üretip Search Console’a gönderiyoruz.
  4. 04Her sayfaya mutlak adresli, kendine işaret eden bir canonical ekliyoruz.
  5. 05İç bağlantıları tarayıp hiçbir yerden bağlantı almayan sayfaları buluyoruz.
  6. 06Çok dilli kulvar: canonical ile hreflang’i aynı dildeki sayfada eşleştiriyoruz.

Proje adımı 9/25

Bu dersten sonra elinizde ne var?

Dersin sonunda commit geçmişinizde üç değişiklik görünüyor: public/robots.txt dosyası, site haritası entegrasyonu ve ortak head bileşenindeki canonical. Dördüncüsü bir rapor: sitenizdeki her sayfanın en az bir iç bağlantı aldığını gösteren tarama çıktısı.

Kabul ölçütleri05

  • robots.txt kök dizinde 200 dönüyor ve içinde Sitemap satırı var.
  • sitemap-index.xml üretiliyor; Search Console’daki Site Haritaları raporunda “Başarılı” görünüyor.
  • Her sayfanın head bölümünde mutlak adresli tek bir canonical var.
  • Tarama raporunda iç bağlantı almayan sayfa sayısı sıfır.
  • Çok dilli kulvar: her dil sürümü kendi canonical’ını ve karşılıklı hreflang’i taşıyor.

Dersi başlat

Bu ders canlı işleniyor

Kayıtlı bir video değil. Ayda bir gün, beş saat canlı buluşuyoruz; bu ders 2. ayın 4. saatinde, sizin sitenizin üzerinde işleniyor. Programa başvuruyla katılınıyor ve program 1. dersten başlıyor. Başvurunuzu buradan başlatırsanız hangi dersle ilgilendiğinizi de görmüş oluruz.

Süre
5 ay · 25 ders
Biçim
Online canlı, ayda bir gün
İlk dönem
Tarihi duyurulacak
Ücret
99.000 TL + KDVKDV dahil 118.800 TL

robots.txt: dört alan, bir dosya

Dosyayı sitenin kök dizinine koyuyoruz; Astro’da bu, public klasörünün içi demek. Google, 31 Ağustos 2026’da güncellediği belgesinde yalnızca dört alanı tanıdığını yazıyor: user-agent, allow, disallow ve sitemap. Başka alanlar yok sayılıyor. Dosya 500 KiB’yi geçerse fazlası okunmuyor, ama birkaç sayfalık bir sitede bu sınıra yaklaşmak için özel çaba gerekir.

Aynı adrese uyan iki kural çakışırsa Google daha az kısıtlayanı uyguluyor. Dosyayı değiştirdiğinizde etkisini hemen görmeyebilirsiniz, çünkü içerik 24 saate kadar önbellekte tutuluyor. Sunucu robots.txt isteğine 5xx ile cevap verirse iş ciddileşiyor: Google ilk 12 saat siteyi taramayı bırakıyor. Cloudflare Pages’te statik bir dosya için bu olası değil. Yine de bilmek gerekiyor, çünkü ileride başka bir altyapıya taşınabilirsiniz.

Yeni bir sitede en pahalıya patlayan hata, geliştirme sırasında yazılan “Disallow: /” satırının yayına çıkmasıdır. Bu yüzden AGENTS.md dosyanıza bir kural ekliyoruz: asistan robots.txt’e dokunduğunda değişikliği ayrı bir commit olarak sunacak, siz de satır satır okuyacaksınız.

disallow ile noindex aynı şey değil

robots.txt taramayı yönetir, dizine eklenmeyi değil. Google’ın belgesindeki cümle açık: taraması yasaklanan bir sayfanın içeriği dizine girmez, ama adresi girebilir ve sonuçlarda açıklamasız bir satır olarak görünebilir. Başka siteler o adrese bağlantı veriyorsa bu oluyor.

Bir sayfayı sonuçlardan çıkarmak için head bölümüne robots meta etiketiyle noindex yazıyoruz. PDF gibi HTML olmayan dosyalarda aynı işi X-Robots-Tag başlığı görüyor. Tuzak şurada: noindex’in okunabilmesi için botun sayfayı açabilmesi gerekiyor. Aynı sayfayı hem robots.txt’te yasaklar hem noindex’lerseniz ikincisi hiç görülmez.

Derste bunu kendi teşekkür sayfanızda deniyoruz. Sayfaya noindex ekliyoruz, yayına alıyoruz ve Search Console’un URL Denetimi aracında Google’ın ne gördüğünü okuyoruz.

Site haritası: küçük sitede de kuruyoruz

Google, yaklaşık 500 sayfanın altındaki ve iç bağlantıları düzgün sitelerin site haritasına ihtiyaç duymayabileceğini söylüyor. Aynı belge, yeni olan ve dışarıdan az bağlantı alan sitelerin haritadan yararlandığını da yazıyor. Sizin siteniz tam olarak bu durumda: yeni ve henüz kimse bağlantı vermiyor.

Astro’da “npx astro add sitemap” komutu entegrasyonu kuruyor. Ayar dosyasındaki site alanı boşsa harita üretilmiyor. Derleme sonunda iki dosya çıkıyor: sitemap-index.xml ve sitemap-0.xml. Tek bir haritanın sınırı 50.000 adres ya da sıkıştırılmamış 50 MB.

changefreq ve priority alanlarını yazmıyoruz, çünkü Google ikisini de yok sayıyor. lastmod farklı: Google bu değeri yalnızca tutarlı ve doğrulanabilir olduğunda kullanıyor. Her derlemede bugünün tarihini basan bir harita bu güveni kaybettirir. Bu yüzden lastmod’u içeriğin gerçek değişiklik tarihinden alıyoruz; alamıyorsak hiç yazmıyoruz.

Haritayı iki yoldan bildiriyoruz: robots.txt’e eklenen Sitemap satırı ve Search Console’daki Site Haritaları raporu. İkincisi okuma hatalarını da gösterdiği için asıl takip yeri orası.

Canonical ve iç bağlantılar

Aynı içerik birden fazla adresten açılıyorsa Google bunlardan birini asıl sürüm olarak seçiyor. Seçimi etkileyen sinyaller güç sırasıyla şöyle: yönlendirme, rel="canonical" ve site haritasında yer almak. İlk ikisi güçlü, üçüncüsü zayıf sinyal. Canonical’ı head içine ve mutlak adresle yazıyoruz. Google göreli yolu desteklese de sorun çıkarabileceğini belirtiyor; body içindeki etiketi ise hiç kabul etmiyor.

Geçen ay sitenizi Cloudflare Pages’e koyduğunuzda iki adresiniz oldu: kendi alan adınız ve projenizin pages.dev adresi. İkisi de aynı sayfaları sunuyor. Her sayfadaki canonical kendi alan adınızı gösterdiğinde bu kopya sorun olmaktan çıkıyor.

Çok dilli kulvardaysanız bir kural daha var: canonical, hreflang ile aynı dildeki sayfayı göstermeli. İngilizce sayfanın canonical’ı Türkçe sürüme işaret ederse Google’a İngilizce sayfanın bir kopya olduğunu söylemiş olursunuz.

Son iş iç bağlantılar. Botlar sayfaları bağlantıları izleyerek buluyor; menüden, alt bilgiden ya da başka bir sayfadan bağlantı almayan sayfa yetim kalıyor. Screaming Frog’un ücretsiz sürümü 500 adrese kadar tarıyor, sizin siteniz için fazlasıyla yetiyor. Tarama çıktısını site haritasıyla karşılaştırıyoruz: haritada olup taramada çıkmayan her adres yetimdir.

Sık yapılan
yanlışlar

Hâlâ anlatılan ama artık geçerli olmayan bilgiler. Her düzeltmenin yanında dayandığı kaynak var.

Yaygın inanış“Aynı içerik iki adreste durursa Google ceza verir.”
DoğrusuGoogle’ın SEO Başlangıç Kılavuzu bunu açıkça reddediyor: içeriğin birden çok adresten açılması verimsizdir ama manuel işleme yol açmaz. Yapılacak iş ceza korkusuyla sayfa silmek değil, canonical ile asıl adresi bildirmektir. Başka sitelerden kopyalanmış içerik ayrı bir konudur ve spam politikalarına girer.[6]
Yaygın inanış“robots.txt’e crawl-delay yazarsam Google siteyi daha yavaş tarar.”
DoğrusuGoogle bu alanı desteklemiyor, yazsanız da yok sayıyor. Alan her botta aynı sonucu vermiyor: Anthropic, kendi botu ClaudeBot için crawl-delay’i desteklediğini belgeliyor. Bir alanı yazmadan önce hangi botun ne okuduğuna o botun kendi belgesinden bakıyoruz.[1][7]
Yaygın inanış“Site haritasındaki priority değeri sayfanın sıralamasını etkiler.”
DoğrusuGoogle priority ve changefreq değerlerini okumuyor. Haritada işe yarayan iki şey var: adresin kendisi ve doğruysa lastmod.[3]

Ajans
defterinden

Bu sitenin kendi deposunda aynı üç parça duruyor. public/robots.txt yönetim panelini ve form uç noktalarını taramaya kapatıyor, son satırında site haritasını bildiriyor. Site haritası ayar dosyasında süzülüyor: dizine girmesini istemediğimiz konu arşivleri haritaya alınmıyor.

lastmod yalnızca blog yazılarında var ve WordPress’ten gelen gerçek güncelleme tarihini taşıyor. Diğer sayfalarda bu alan boş. Her derlemede değişen bir tarih yazmak yerine hiç yazmamayı seçtik.

Sık sorulanlar

Sorunuzun yanıtı burada yoksa bize yazın.

robots.txt dosyası hiç olmazsa ne olur?

Google dosyayı bulamazsa, yani istek 404 dönerse, kısıtlama olmadığını varsayar ve siteyi tarar. Küçük bir sitede robots.txt zorunlu değildir. Biz yine de kuruyoruz: site haritasını bildirmek için ve 4. ayda yapay zekâ botlarıyla ilgili kararınızı yazacağınız yer orası olduğu için.

Sayfamı robots.txt ile engelledim ama hâlâ Google’da çıkıyor, neden?

Çünkü robots.txt taramayı engeller, dizine eklenmeyi değil. Başka bir site o adrese bağlantı veriyorsa Google adresi içeriğini görmeden dizine alabilir. Sayfayı sonuçlardan çıkarmak için robots.txt’teki engeli kaldırıp sayfaya noindex eklemeniz gerekir.

Canonical etiketi her sayfada olmalı mı?

Google zorunlu tutmuyor; canonical yoksa asıl adresi kendisi seçiyor. Kendine işaret eden canonical, parametreli ya da kopya adresler oluştuğunda seçimi size bırakır. Ortak şablona bir kez yazıldığı için ek bir iş de çıkarmıyor.

Site haritasını her değişiklikte yeniden göndermem gerekir mi?

Hayır. Search Console’a bir kez gönderdiğiniz haritayı Google aralıklarla yeniden okur. Astro dosyayı her derlemede güncellediği için sizin ayrıca bir şey yapmanız gerekmiyor.

Kaynaklar

Bu dersteki bilgiler aşağıdaki sayfalara dayanıyor. Sayfaların hepsi en son tarihinde açılıp okundu.

Eğitmen: Son güncelleme:

  1. 01
    How Google interprets the robots.txt specification

    Google Search Centralsayfa güncellemesi:

  2. 02
    Block Search indexing with noindex

    Google Search Centralsayfa güncellemesi:

  3. 03
    Build and submit a sitemap

    Google Search Centralsayfa güncellemesi:

  4. 04
    What is a sitemap

    Google Search Centralsayfa güncellemesi:

  5. 05
    How to specify a canonical URL with rel="canonical" and other methods

    Google Search Centralsayfa güncellemesi:

  6. 06
    Search Engine Optimization (SEO) Starter Guide

    Google Search Centralsayfa güncellemesi:

    “Things we believe you shouldn’t focus on” bölümü.

  7. 07
    Does Anthropic crawl data from the web, and how can site owners block the crawler?

    Claude Help Centersayfa güncellemesi:

  8. 08
    Google crawling documentation: changelog

    Google for Developerssayfa güncellemesi:

    Google tarama belgelerini 20 Kasım 2025’te bu yeni adrese taşıdı. Eski bağlantılar çalışıyor ama güncel sürüm burada duruyor.

  9. 09
  10. 10
    SEO Spider: pricing and licence

    Screaming Frog

    Ücretsiz sürümün 500 adres sınırı için.