İçeriğe geç
Approvalens

Okuma odası · 8 dk okuma

Yanlışlıkla Noindex: Etikette, Başlıkta ve Ayarlarda Bul

Unutulan bir noindex iyi sayfalarını Google'dan saklar. HTML'de, HTTP başlığında ya da CMS ayarında bul, güvenle kaldır ve ne zaman doğru olduğunu öğren.

Approvalens ekibi

Şu rapor bulgularını düzeltir

  • Ana sayfa dizine eklenebiliyor
  • noindex işaretli iyi sayfalar
  • noindex işaretli yazılar
  • Çelişen robots talimatları
  • Dizinde arşiv ve yardımcı sayfalar

Google'da görünmesini istediğin bir sayfada noindex varsa, Google sayfayı bir sonraki taramada sonuçlardan çıkarır. Bu kural iki yerde durabilir: HTML'deki robots <meta> etiketinde ya da sayfa kaynağında hiç görmediğin X-Robots-Tag HTTP başlığında. Kazara olanların çoğu geliştirme döneminden kalan bir ayardır: WordPress'teki "Discourage search engines" kutusu, bir SEO eklentisinin varsayılanı, staging ortam değişkeni ya da sunucu kuralı. Hangisinin konuştuğunu bul, kaynağında kapat, sonra Google'dan yeniden taramasını iste.

Noindex demenin iki yolu

Google'ın robots meta etiketi belgesi ikisini de anlatıyor: sayfanın içindeki bir etiket ya da belirli bir adresin HTTP yanıtına eklenen bir başlık. İkisi aynı işi yapar:

<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex">
HTTP/2 200
content-type: text/html; charset=UTF-8
x-robots-tag: noindex

Kafa karışıklığının çoğu iki ayrıntıdan çıkıyor. content="none" kısaltmadır; Google'a göre noindex, nofollow ile aynı anlama gelir. Kurallar çelişirse daha kısıtlayıcı olan uygulanır ("the more restrictive rule applies"). Meta etiketinde index, follow, başlığında noindex olan sayfa noindex sayfadır. Yani meta etiketin kusursuz olsa bile sayfa gizli kalabilir.

Üç panel: HTML head içinde robots meta etiketi, HTTP yanıtında X-Robots-Tag başlığı ve Google'ın ikisini de okumasını engelleyen robots.txt Disallow satırı
Açıklama: "Kaynağı görüntüle" yalnızca meta etiketi gösterir; başlık için curl gerekir, robots.txt engeli ise ikisini de Google'dan saklar.

Beş dakikada bul

1. HTML. Sayfayı aç, kaynağı görüntüle (Ctrl+U), önce robots sonra googlebot ara. Tema, SEO eklentisi ve bir üyelik ya da çerez eklentisi ayrı ayrı etiket basabilir; birden fazla etiket var mı diye bak.

2. Başlıklar. Başlık HTML'de görünmez, sunucuya doğrudan sor:

curl -s -D - -o /dev/null https://ornekblog.com/kahve-ogutme-ayari | grep -i robots
x-robots-tag: noindex, nofollow

Bu komut normal bir GET isteği gönderip yalnızca başlıkları yazdırır. curl -sI HEAD isteği gönderir ve bazı sunucular HEAD'e farklı cevap verir. Başlık kuralları çoğu zaman bir klasöre ya da dosya türüne yazılır; yalnızca ana sayfayı değil bir yazıyı da dene.

3. Google ne gördü? Search Console'daki URL Denetimi aracında "Indexing allowed?" alanı, sayfanın dizine eklemeyi açıkça yasaklayıp yasaklamadığını ve yasaklıyorsa nedenini gösterir (URL Denetimi yardımı). "Test live URL" son taramayı değil sayfanın şu anki hâlini kontrol eder; düzeltmeden hemen sonra işine yarayan bu. Sayfa dizine ekleme raporu etkilenen adresleri "URL marked 'noindex'" başlığı altında toplar (rapor yardımı). Arayüzü Türkçe kullanıyorsan etiketler çevrilmiş görünür.

4. Bot ne alıyor? Bazı güvenlik eklentileri ve CDN'ler botlara farklı cevap verir. Googlebot erişim kontrolü ana sayfanı tarayıcı, telefon, Googlebot, Mediapartners-Google ve AdsBot olarak çeker; her biri için durum kodunu, son adresi ve kelime sayısını gösterir. Googlebot 403 ya da 5xx alıyorsa sorun noindex değil, erişim sorunu. Bir doğrulama sayfası görüyorsa büyük ihtimalle Cloudflare devrede.

robots.txt tuzağı

Noindex sorununu fark edince "bir de robots.txt'den engelleyeyim" refleksi yaygın. Bu, noindex'i bozar. Google dizine eklemeyi engelleme sayfasında açık konuşuyor: sayfa robots.txt ile engellenmişse ya da tarayıcı sayfaya erişemiyorsa "the crawler will never see the noindex rule", yani kuralı hiç görmez ve sayfa sonuçlarda yine görünebilir.

Tuzak ters yönde de çalışır. Gereksiz noindex'i kaldırdın ama adres hâlâ Disallow ise Google değişikliği görmek için sayfayı çekemez. Dizine ekleme isteği göndermeden önce yolu robots.txt test aracında dene. Grup eşleşmesi ve Mediapartners-Google'ın neyi okuduğu robots.txt rehberinde.

İki şerit: tarama açıksa Google sayfayı çeker, noindex'i okur ve sayfayı düşürür; tarama engelliyse sayfa hiç çekilmez, noindex okunmaz ve adres yine görünebilir
Açıklama: Her iş için tek araç: sonuçlardan çıkarmak için noindex, taramayı durdurmak için robots.txt; aynı adreste ikisi birden asla.

İstenmeyen noindex nereden gelir?

Kaynak Ne basar Nerede kapatılır
WordPress "Discourage search engines from indexing this site" WordPress 5.3'ten beri noindex,nofollow içeren robots meta etiketi (Reading ayarları) Settings → Reading → "Search engine visibility" (Türkçe panelde Ayarlar → Okuma)
Yoast SEO, tek yazı Meta robots noindex Advanced sekmesi → "Allow search engines to show this content in search results" → No (Yoast)
Yoast SEO, bütün bir içerik türü O türdeki her sayfada noindex Yoast SEO → Settings → Content types → "Show [tür] in search results"
Rank Math, tek yazı ya da tür Meta robots noindex Advanced sekmesi → Robots Meta ya da Rank Math SEO → Titles & Meta → örneğin "Post Robots Meta" (Rank Math)
Blogger Blog geneli ya da yazı bazında robots meta Ayarlar → "Crawlers and indexing" → "Enable custom robots header tags"; yazı düzenleyicide "Custom robots tags" (Blogger Yardım)
Next.js metadata / generateMetadata içindeki robots Layout ya da sayfa dosyaları, çoğu zaman bir ortam değişkeninin arkasında
Apache, Nginx, CDN X-Robots-Tag başlığı .htaccess, sunucu yapılandırması, yanıt başlığı kuralları

Rank Math'e göre yazının kendi ayarı Titles & Meta varsayılanını ezer. Tür düzeyindeki ayarı düzelttikten sonra etkilenen bir yazıyı ayrıca kontrol et; eski noindex orada kalmış olabilir.

Blogger

Unutulan iki anahtar var. Ayarlar → "Privacy" altında "Visible to search engines" açık olmalı. "Crawlers and indexing" altında "Enable custom robots header tags" açılınca üç grup çıkar: "Home page tags", "Archive and search page tags" ve "Post and page tags". Son grupta işaretlenmiş bir noindex bütün yazıları tek hamlede gizler. Ayrıca her yazının düzenleyicisinde kendi "Custom robots tags" paneli var; tek tek yazılara da bak.

Next.js

App Router'da robots kuralları metadata içindeki robots alanından gelir (generateMetadata belgesi). Segmentler sığ birleştirilir: sayfadaki robots nesnesi layout'takinin üstüne eklenmez, onu tamamen değiştirir. Klasik sızıntı şuna benzer bir staging anahtarıdır; production sunucusunda SITE_ENV tanımlı değilse bütün site noindex olur:

// app/layout.tsx: açıkça production değilse noindex
export const metadata: Metadata = {
  robots: process.env.SITE_ENV === 'production'
    ? { index: true, follow: true }
    : { index: false, follow: false },
}

Bir Next.js durumu daha: akış (streaming) başladıktan sonra notFound() çağrılırsa durum kodu zaten 200 olarak gitmiştir; Next.js belgesine göre bu durumda akan HTML'e <meta name="robots" content="noindex"> eklenir. Suspense içinde veri çekerken ara sıra hata alan bir yazı, Google'a noindex'li bir 200 sayfası olarak ulaşabilir.

Sunucu ve CDN başlıkları

Başlığı ekleyebilecek yerlerde ara:

grep -Rni "x-robots-tag" .htaccess /etc/apache2/ /etc/nginx/ 2>/dev/null

Apache'de satır genelde Header set X-Robots-Tag "noindex, nofollow" şeklindedir; sil ya da yalnızca kastettiğin dosyalara uyan bir koşulun içine al. Nginx'te server bloğundaki add_header X-Robots-Tag "noindex";, kendi add_header satırı olmayan her location için geçerlidir; belgeye göre bu yönergeler yalnızca mevcut seviyede hiç add_header yoksa üst seviyeden miras alınır (nginx belgesi). Cloudflare'de Rules → Overview altındaki yanıt başlığı kurallarına bak; bir "Response Header Transform Rule" başlığı her yanıta ekleyebilir (Cloudflare belgesi).

Staging sızıntıları ve "bozuk" görünen önizlemeler

Staging doğru biçimde gizlenmişti, sonra bir veritabanı kopyası, bir yapılandırma dosyası ya da ortam değişkeni canlıya taşındı. Staging'den klonlanan WordPress veritabanı "Discourage" ayarını da taşır; olduğu gibi kopyalanan .htaccess başlık kuralını da.

Tersi de yanıltır. Vercel her önizleme dağıtımına otomatik olarak X-Robots-Tag: noindex başlığı ekliyor (Vercel); Cloudflare Pages'te de varsayılan olarak her önizleme dağıtımı bu başlığı taşıyor (Cloudflare). curl testin bir önizleme adresine gidiyorsa gördüğün noindex beklenen davranış. Canlı alan adını test et.

Noindex ne zaman doğru tercih?

Tarama ters yönde de çalışıyor: structure.index_bloat, dizine açık duran zayıf sayfaları listeler. Google etiket sayfalarının noindex olması gerektiğine dair bir kural yayımlamıyor; aşağıdaki tablo bizim önerimiz, zorunluluk değil.

Sayfa türü Önerimiz
Yazılar, rehberler, ana sayfa, hakkımızda, iletişim Dizine açık
Yazılı bir girişi olan kategori sayfası Dizine açık
Sadece link listesinden ibaret etiket ya da arşiv sayfası Noindex ya da gerçek bir giriş yazısı
Site içi arama sonuçları (?s=, /search/, /arama/) Noindex
Giriş, sepet, ödeme, hesap, teşekkürler sayfaları Noindex
Bir listenin 2., 3., 4. sayfası İsteğe bağlı, aşağıya bak

Sayfalamada dikkatli ol. Google'ın sayfalama rehberi dizinin ilk sayfasını canonical yapmamanı, her sayfaya kendi canonical adresini vermeni söylüyor ("give each page its own canonical URL"). Sonraki sayfaları noindex yapmanı istemiyor. Ne seçersen seç, bu sayfalardaki linkler taranabilir kalsın ki eski yazılara ulaşılabilsin. Gizlemek yerine geliştirilmesi gereken sayfalar için zayıf içerik rehberine bak.

Approvalens neye bakıyor?

Tarama, taradığı her sayfanın robots ve googlebot meta etiketlerini ve X-Robots-Tag başlığını okur. Sonra:

  • access.noindex_home: ana sayfada noindex (ya da meta etiketinde none) varsa kalır.
  • tech.noindex_pages: yazı olarak sınıflandırdığımız sayfaların %30'undan fazlası noindex taşıyorsa çıkar.
  • tech.noindex_misused: Google'da olması gerekirken noindex olan sayfaları listeler. Bunlar ana sayfa ya da arşiv, arama, sayfalama, yardımcı sayfa veya güven sayfası olmayan, kendine ait en az 300 kelime metni bulunan sayfalardır.
  • seo.robots_conflict: sayfada hem meta etiket hem başlık var ve yalnızca biri noindex diyorsa çıkar.
  • structure.index_bloat: noindex olmayan yardımcı, arama ve sayfalama adreslerini, kendine ait metni yaklaşık 250 kelimenin altında kalan arşiv sayfalarını listeler. Adres kalıplarına ve taradığımız sayfalara dayanan bir tahmindir.

Taradığımız bir siteden gerçek örnek: her biri 305 ile 362 kelime arasında olan dört haber yazısı noindex işaretliydi.

Approvalens raporunda "noindex işaretli iyi sayfalar" kartı; kelime sayılarıyla dört haber adresi
Açıklama: Gerçek bir rapordan kesit: her satır, yazı sayılacak kadar metni olduğu hâlde Google'a kendini dizine eklememesini söyleyen bir sayfa.

Kuralların tamamı metodoloji sayfasında.

Kaldırdıktan sonra

Google tekrar taramadan hiçbir şey değişmez. Google'ın ifadesiyle meta etiketleri ve HTTP başlıklarını görmek için sayfayı taraması gerekiyor ve sayfanın önemine göre "it may take months for Googlebot to revisit a page", yani tekrar ziyaret aylar sürebilir (dizine eklemeyi engelleme). Önemli sayfalar için URL Denetimi'nde "Request indexing" kullan; Google dizine eklemenin bir iki hafta sürebileceğini söylüyor. Sayfaların site haritasında olduğundan (XML site haritası hataları) ve canonical'larının kendilerini gösterdiğinden (canonical etiketi sorunları) emin ol.

AdSense tarafında: reklam yerleşimi politikaları, Google'ın değerlendiremediği içerikte reklamı kapatabileceğini söylüyor ve örnek olarak robots.txt engelini ve şifreli içeriği sayıyor. Noindex orada geçmiyor. Pratik risk daha basit: yazılarının çoğunu gizleyen bir site olduğundan daha zayıf görünür. İnceleme sürecindeysen WordPress ve Blogger rehberleri bu platformlarda bakman gereken diğer ayarları anlatıyor.

Ücretsiz tarama, taranan sayfalardaki meta etiketleri ve başlıkları okur; sayfanın görünüşüyle çelişen her sayfayı listeler.

Sık sorulan sorular

Tek başına nofollow sayfayı gizler mi?

Hayır. nofollow, Google'a o sayfadaki linkleri takip etmemesini söyler. Sayfanın kendisini sonuçların dışında tutan yalnızca noindex (ya da none).

Noindex'i bir hafta önce kaldırdım, sayfa hâlâ yok. Ne yapayım?

URL Denetimi'nde "Test live URL" çalıştır. "Indexing allowed?" artık evet diyorsa dizine ekleme isteği gönder ve bekle; tarama zamanlaması Google'da. Hâlâ hayır diyorsa noindex hâlâ sunuluyor demektir, genellikle bir başlıktan ya da önbellekten.

Tarama bütçesi için noindex sayfaları robots.txt'den de engelleyeyim mi?

Noindex'in çalışmasını istiyorsan hayır. Google kuralı okumak için sayfayı çekmek zorunda. Engellemek, hiç taranmasını istemediğin adresler için mantıklı (sonsuz filtre kombinasyonları gibi); çıkarmaya çalıştığın sayfalar için değil.

Etiket sayfalarında noindex AdSense'e zarar verir mi?

AdSense'in yayımlanmış politikalarında böyle bir şey yok. Zayıf liste sayfalarını dizin dışında tutmak yazılarını gizlemez; yazıların kendisindeki noindex gizler.

Eskimiş ya da yanlış bir şey mi gördün? Bize yaz, düzeltelim.

Bu rehberi İngilizce oku →

Kendi sitende kontrol et. Ücretsiz, kayıt yok.

Bunun için ücretsiz araçlar

Ücretsiz tarama

Kendi siteni kontrol et

Ücretsiz tarama: uygunluk puanı ve tüm sorunlar, genelde birkaç dakikada.

Ücretsiz tarama · puan ve bulunan tüm sorunlar · üyelik yok

Tüm rehberler →