Canonical, noindex ve robots.txt ne zaman kullanılır? (karar tablosu)
Teknik denetimlerde en sık gördüğüm hata bu üç aracın birbirinin yerine kullanılması. Bir sayfa dizinden çıksın diye robots.txt'e ekleniyor, filtre sayfalarına aynı anda hem canonical hem noindex veriliyor, sayfalama sayfaları birinci sayfaya canonical ediliyor. Sonra Search Console'da kimsenin açıklayamadığı durumlar birikiyor.
Sorun araçlarda değil. Her biri farklı bir aşamada çalışıyor: biri taramayı, biri dizine eklemeyi, biri sinyal birleştirmeyi kontrol ediyor. Hangisinin ne yaptığını netleştirmeden doğru seçim yapılamıyor.
Üç araç, üç ayrı aşama
Google bir URL ile kabaca üç adımda uğraşır: taramak (crawl), işleyip dizine eklemek (index) ve aynı içeriğe sahip URL'ler arasından bir temsilci seçmek (canonicalization). Bu üç araç zincirin farklı halkalarına dokunur. Karışıklığın neredeyse tamamı bu halkaları birbirine karıştırmaktan çıkıyor.
robots.txt: taramayı kontrol eder
robots.txt Googlebot'a "bu URL'yi isteme" der, o kadar. Dizine eklemeyi engellemez. Engellenen bir URL'ye site içinden ya da dışarıdan link varsa Google o URL'yi içeriğini hiç görmeden dizine ekleyebilir; sonuçlarda açıklaması olmayan çıplak bir satır olarak görünür. Search Console'da bunun karşılığı "robots.txt tarafından engellenmesine rağmen dizine eklendi" (Indexed, though blocked by robots.txt) durumudur.
robots.txt'in asıl işi tarama kaynağını korumaktır: sonsuz parametre kombinasyonları, sıralama URL'leri, sepete ekleme linkleri gibi Googlebot'un vakit harcamasını istemediğiniz alanlar. Bir de şunu unutmamak lazım: dosya herkese açıktır. Gizli kalmasını istediğiniz bir dizini robots.txt'e yazmak, onu herkese ilan etmek demektir.
noindex: dizine eklemeyi kontrol eder
noindex bir direktiftir (directive), yani Google buna uyar. Sayfayı tarar, noindex'i görür ve sayfayı dizinden çıkarır ya da hiç eklemez. İki şekilde verilir: HTML içinde meta robots etiketiyle veya HTTP yanıtında X-Robots-Tag başlığıyla.
<!-- HTML sayfalar için -->
<meta name="robots" content="noindex">HTTP/1.1 200 OK
X-Robots-Tag: noindexBuradaki kritik nokta şu: Google noindex'i görebilmek için sayfayı taramak zorunda. Tarama engellenmişse etiket hiç okunmaz.
canonical: birleştirmeyi önerir
rel="canonical" bir ipucudur (hint), direktif değildir. "Bu içeriğin tercih ettiğim adresi şu" dersiniz; Google bunu iç linkler, site haritası, yönlendirmeler, HTTPS ve içerik benzerliği gibi diğer sinyallerle birlikte tartar ve kendi seçimini yapar. Seçtiği adresi URL denetimi aracında "Google tarafından seçilen standart URL" (Google-selected canonical) alanında görürsünüz.
Canonical'ın asıl değeri sinyalleri birleştirmesidir. Kopya URL'lere gelen linkler ve diğer sinyaller tercih edilen adreste toplanır. noindex'te böyle bir birleştirme yoktur; sayfa sadece dizinden çıkar, değeri bir yere aktarılmaz.
Yanlış kombinasyonlar neden çalışmaz
noindex ile robots.txt engelini birlikte kullanmak
En yaygın hata bu. Sayfaya noindex eklenir, "garanti olsun" diye robots.txt'te de engellenir. Googlebot sayfayı tarayamadığı için noindex'i hiç görmez. Sayfa zaten dizindeyse orada kalabilir, dışarıdan link alıyorsa içeriksiz haliyle dizine bile girebilir.
Doğru sıra şu: önce noindex ekleyin ve robots.txt'i açık bırakın. Google sayfaları yeniden taradıkça dizinden düşerler. Düştüklerini Search Console'da gördükten sonra, tarama maliyeti gerçekten önemliyse robots.txt engelini ekleyebilirsiniz.
Noindex'li bir sayfaya canonical vermek
A sayfası B'yi canonical gösteriyor, B'de ise noindex var. Google'a aynı anda "sinyalleri B'de topla" ve "B'yi dizine ekleme" diyorsunuz. Bu çelişkili bir sinyal. Google'ın hangisini esas alacağı belirsiz ve en iyi ihtimalle iki sayfa da düzgün sıralanmaz.
Aynı sorun tek bir sayfada da çıkar: başka bir URL'yi gösteren canonical ile noindex aynı sayfada. Google'ın kendi belgelerinde de kopya içeriği birleştirmek için noindex kullanılmaması öneriliyor. Benim kuralım basit: canonical hedefi her zaman 200 dönen, dizine eklenebilir ve kendini canonical gösteren bir sayfa olmalı.
Sayfalama sayfalarını birinci sayfaya canonical etmek
/kategori?sayfa=2 sayfasının canonical'ını /kategori yapmak düzenli görünür ama yanlıştır. İkinci sayfa birinci sayfanın kopyası değil, başka ürünler listeliyor. Google böyle bir canonical'ı büyük ihtimalle yok sayar; saymazsa daha kötüsü olur ve derindeki ürünlere giden yol zayıflar. Her sayfalama sayfası kendini canonical göstermeli. rel=next/prev ise Google tarafından dizine ekleme için kullanılmıyor; eklemenin zararı yok ama bir işe de yaramıyor.
Robots.txt ile engellenmiş sayfada canonical'a güvenmek
Parametreli kopyaları robots.txt ile engellerseniz Google o sayfalardaki canonical etiketini de göremez. Hem engelleyip hem canonical ile toplamaya çalışmak ikisinin de etkisini boşa çıkarır. Birini seçmek gerekiyor: sinyal birleştirmek istiyorsanız canonical ve açık tarama, tarama maliyetini kesmek istiyorsanız robots.txt.
Karar tablosu
| Senaryo | Doğru araç | Not |
|---|---|---|
| UTM, oturum, takip parametreli kopyalar | canonical (temiz URL'ye) | İç linklerde bu parametreleri hiç kullanmayın |
| Site içi arama sonuçları | noindex, dizinden düşünce robots.txt | Hiç dizine girmemişse doğrudan robots.txt yeterli |
| İnce etiket (tag) sayfaları | noindex veya tamamen kaldırma | Değerli olanları içerikle güçlendirin |
| Staging / test sitesi | HTTP şifre koruması | robots.txt tek başına yetmez |
| Yazdırma sürümleri | canonical (asıl sayfaya) | Mümkünse ayrı URL yerine print CSS |
| PDF dosyaları | X-Robots-Tag: noindex veya Link başlığında canonical | HTML karşılığı varsa canonical onu göstersin |
| Yönetim paneli, sepet, hesap sayfaları | robots.txt + kimlik doğrulama | Güvenliği robots.txt'e bırakmayın |
| Filtre (faceted) kombinasyonları | Değerliler dizine açık, gerisi robots.txt veya noindex | Kural setine aşağıda değindim |
| Sayfalama | Her sayfa kendini canonical göstersin | Taranabilir <a href> linkleri şart |
Sıralama parametreleri (?sirala=) | robots.txt | İçerik aynı, sadece sıra farklı |
Özel durumlar
Staging siteleri
Test ortamı için en sağlam yol HTTP kimlik doğrulamasıdır. Google şifreli bir sayfayı tarayamaz, içerik de dizine giremez. Sadece noindex'e güvenmek riskli, çünkü canlıya geçişte o noindex'in kopyalanıp canlı siteye taşındığı vakalar çok yaygın. Canlıya alma kontrol listemde ilk maddelerden biri kaynak koddaki meta robots ve sunucunun gönderdiği X-Robots-Tag başlığıdır.
PDF ve HTML olmayan dosyalar
PDF'e meta etiket koyamazsınız, bu yüzden HTTP başlığı kullanılır. Apache ve mod_headers açık bir sunucuda .htaccess ile şöyle yapılabilir:
# Tüm PDF dosyalarını dizin dışında tut
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex"
</FilesMatch>
# Aynı içeriğin HTML sürümü varsa canonical'ı ona ver
<Files "urun-katalogu.pdf">
Header set Link "<https://www.ornek.com/urun-katalogu>; rel=\"canonical\""
</Files>İkisini aynı dosyada birlikte kullanmayın; yukarıda anlattığım çelişkinin aynısı olur. Katalog PDF'i HTML sayfanın kopyasıysa canonical, tamamen dizin dışında kalması gereken bir belgeyse noindex.
Filtreli kategori sayfaları
Filtreler bu üç aracın en çok karıştırıldığı alan. Kısa kural: gerçek arama talebi olan kombinasyonlar temiz URL ile dizine açık kalır, beden, fiyat ve sıralama gibi parametreler taramadan uzak tutulur. Hangi kombinasyonun dizine girmesi gerektiğini filtreli kategori sayfaları yazısında ayrıntılı bir kural setiyle anlattım.
Uygulamadan önce test edin
robots.txt'te yazdığınız joker karakterli bir kural, dizine açık kalmasını istediğiniz sayfaları da kolayca engelleyebilir. Değişikliği yayına almadan önce kritik URL'lerinizi robots.txt test aracı ile deneyin: ana kategoriler, ürün sayfaları, blog yazıları ve engellemek istediğiniz parametreli örnekler. Yayından sonra da Search Console'da URL denetimiyle birkaç örnek sayfayı kontrol edin; hem taramaya izin verilip verilmediğini hem de Google'ın seçtiği standart URL'yi orada görürsünüz.
Google'ın bu konudaki resmi belgeleri de kısa ve net: robots.txt'e giriş ve noindex ile dizine eklemeyi engelleme. Bir kararsızlık yaşadığınızda ilk bakacağınız yer bunlar olsun.
Özetle
- Dizinden çıkarmak istediğim sayfa taranabiliyor mu? noindex ancak öyle görülür.
- robots.txt'i dizinden çıkarma aracı olarak kullanmıyorum; yalnızca taramayı kısıyorum.
- Canonical hedefleri 200 dönüyor, noindex taşımıyor ve kendini canonical gösteriyor.
- Aynı sayfada canonical (başka URL'ye) ile noindex birlikte yok.
- Sayfalama sayfaları kendini canonical gösteriyor, birinci sayfaya değil.
- Staging şifreli; canlıda unutulmuş noindex veya X-Robots-Tag yok.
- PDF gibi dosyalar için HTTP başlığı kullanıyorum.
- Her robots.txt değişikliğini yayından önce örnek URL'lerle test ediyorum.
Kısacası: tarama maliyeti sorunuysa robots.txt, dizinde olmaması gereken sayfa varsa noindex, aynı içeriğin birden fazla adresi varsa canonical. Bir sayfaya iki araç birden uyguluyorsanız, önce bunların birbirini boşa çıkarıp çıkarmadığını kontrol edin.
Comments / questions
If you have a question about any topic or wish to contact me: Telegram or send an email to [email protected] Thanks!
Related pages
- Search Console'daki her dizine ekleme durumunun Türkçe anlamı (2026)
- Filtreli kategori sayfalarında hangi kombinasyon dizine girmeli? (2026)
- İç linkleme stratejisi ile önemli sayfaya güç aktarmak (2026)
- Soft 404'leri komut satırından bulmak (2025)
- Sayfalama ve SEO: rel=next gitti, geriye ne kaldı? (2024)