TechnoRadical notları · Makale
Sayfam neden indekslenmiyor
Search Console'un on beş indekslenmeme nedenini resmi adlarıyla tek tabloda, karar ağacı ve doğrulama komutlarıyla açıklıyoruz.
Bir sayfanın neden indekslenmediği sorusunun cevabı, Google Search Console’un Sayfa Dizine Ekleme raporundaki on beş adlandırılmış kategoriden biridir ve bu kategoriler üç köke ayrılır: kendi kurulum hatanız (robots.txt ve noindex çelişkisi gibi), Google’ın önceliklendirmesi (Discovered/Crawled - currently not indexed) veya kanonikleştirme/duplikasyon (Google’ın sizin işaretlediğinizden farklı bir sayfayı seçmesi). Bu üç kök aşağıda Search Console’un tam on beş kategorilik tablosuyla, her kategoriye özgü bir doğrulama komutuyla ve kendi sitemizin (49 URL, Disallow’suz robots.txt) ölçeğiyle birlikte ele alınıyor. Hangi kategori için hangi komutun çalıştırılacağını gösteren bir karar ağacı ve Search Console’un URL İnceleme aracıyla tek bir sayfanın gerçek durumunu doğrulama adımları da bu özetin parçası. Soft 404, yönlendirme hatası ve JavaScript render gecikmesi gibi daha dar alt nedenlerin derin mekanizması ayrı birer yazıda genişletiliyor, burada yalnızca teşhis için gereken özet veriliyor.
Sayfam neden indekslenmiyor: kısa cevap
Tek bir cevap yok; sebep büyük ihtimalle Search Console’un Sayfa Dizine Ekleme raporunda gördüğünüz on beş adlandırılmış kategoriden biridir ve bu kategoriler üç köke ayrılır. Google Search Console Yardım’ın Sayfa Dizine Ekleme raporu sayfası bu on beşini tek tek adlandırıyor: kendi kurulum hatanız (Blocked by robots.txt, Excluded by noindex tag gibi), Google’ın önceliklendirmesi (Discovered - currently not indexed, Crawled - currently not indexed) veya kanonikleştirme/duplikasyon (Duplicate without user-selected canonical gibi).
Üç kökün hangisi geçerliyse, Search Console raporunda sayfanın yanında yazan kategori adı zaten söylüyor; tahmin etmeye gerek yok. Aşağıdaki başlıklar önce bu üç kökü mekanizmasıyla açıklıyor, sonra her kategori için çalıştırılabilir bir doğrulama komutu veriyor. Sayfanın keşif, tarama, render, indeksleme ve sunum olmak üzere beş aşamadan geçtiği süreç ayrı bir yazıda gerçek bir sunucu log satırı ve Search Console ekranıyla ayrıntılı gösteriliyor; burada o sürecin hangi aşamasında takıldığınızı bulmanız yeterli.
Search Console’un on beş indekslenmeme nedeni tek tabloda
Search Console on beş adlandırılmış nedeni, iki ayrı uyarı kategorisini ve tek bir “indeksli” durumunu aynı raporda listeliyor; TR arama sonuçlarındaki rakip içeriklerin hiçbiri bu on beşini birlikte vermiyor, çoğu üç-dört genel nedene indirgiyor.
| İngilizce kategori adı | Türkçe karşılığı | Kök | Kısa tanım |
|---|---|---|---|
| Blocked by robots.txt | robots.txt ile engellendi | Kendi kurulum hatası | Sayfa, sitenin robots.txt dosyasıyla engellenmiş |
| Excluded by noindex tag | noindex etiketiyle hariç tutuldu | Kendi kurulum hatası | Google sayfayı taradığında bir noindex talimatıyla karşılaştı |
| Blocked due to unauthorized request (401) | Yetkisiz istek nedeniyle engellendi | Kendi kurulum hatası | Sunucu isteğe 401 koduyla yanıt verdi |
| Blocked due to access forbidden (403) | Erişim yasağı nedeniyle engellendi | Kendi kurulum hatası | Sunucu isteğe 403 koduyla yanıt verdi |
| URL blocked due to other 4xx issue | Diğer 4xx hatası nedeniyle engellendi | Kendi kurulum hatası | 401/403/404 dışında bir 4xx durum kodu döndü |
| Not found (404) | Bulunamadı | Kendi kurulum hatası | Sayfa istek anında 404 hatası döndürdü |
| Server error (5xx) | Sunucu hatası | Kendi kurulum hatası | Sunucu tarafında bir hata koduyla yanıtlandı |
| Redirect error | Yönlendirme hatası | Kendi kurulum hatası | Zincir çok uzun, döngü var veya hedef URL uzunluk sınırını aşıyor |
| Soft 404 | Yumuşak 404 | Kendi kurulum hatası | Sayfa “bulunamadı” mesajı gösteriyor ama 404 HTTP kodu döndürmüyor |
| Page with redirect | Yönlendirmeli sayfa | Kendi kurulum hatası | URL başka bir adrese yönlendiriyor, kendisi indekslenmiyor |
| Discovered - currently not indexed | Keşfedildi, şu anda indekslenmedi | Google’ın önceliklendirmesi | Google URL’yi biliyor ama henüz taramadı |
| Crawled - currently not indexed | Tarandı, şu anda indekslenmedi | Google’ın önceliklendirmesi | Google sayfayı taradı ama dizine eklemedi |
| Duplicate without user-selected canonical | Kullanıcı seçimli kanonik olmadan yinelenen içerik | Kanonikleştirme/duplikasyon | Sayfa başka bir sayfanın kopyası, site hiçbir tercih belirtmemiş |
| Duplicate, Google kullanıcıdan farklı bir canonical seçti | Yinelenen, Google farklı canonical seçti | Kanonikleştirme/duplikasyon | Site bir URL’yi işaretlemiş, Google başka bir URL’yi seçti |
| Alternate page with proper canonical tag | Doğru canonical etiketli alternatif sayfa | Kanonikleştirme/duplikasyon | Sayfa başka bir URL’yi doğru şekilde canonical gösteriyor, bu bir hata değil |
| Indexed though blocked by robots.txt (uyarı) | robots.txt engeline rağmen indekslendi | Uyarı | Sayfa engellenmiş olsa da başka yerden link aldığı için indekslendi |
| Page indexed without content (uyarı) | İçeriksiz indekslendi | Uyarı | Sayfa indekslendi ama Google içerik bulamadı |
| Page is indexed | Sayfa indekslendi | Hata/uyarı değil | Sayfa beklendiği gibi dizine girdi |
Bu on beş kategorinin kaynağı, Google Search Console Yardım’ın “Page indexing report” sayfasıdır (K-151). Hangi nedenin ne sıklıkla görüldüğüne dair bir oran Google tarafından verilmiyor; on beşi de nitel kategoriler. Aşağıdaki dört bölüm bu üç kökü sırayla mekanizmasıyla açıklıyor, sonraki iki bölüm ise en sık karışan iki alt nedeni (JavaScript render gecikmesi, soft 404/yönlendirme hatası) ayrıca somutlaştırıyor.
robots.txt ve noindex birbirini nasıl geçersiz kılar
robots.txt’te disallow edilmiş bir sayfada noindex etiketi hiçbir işe yaramaz, çünkü Googlebot sayfanın içeriğine hiç girip etiketi okuyamaz. Google Search Central’ın dizine ekleme engelleme rehberi bu koşulu doğrudan yazıyor: “noindex kuralının işe yaraması için sayfa veya kaynak bir robots.txt dosyasıyla engellenmemiş olmalı ve crawler tarafından erişilebilir durumda olmalı.” Sonucu da açık: sayfa robots.txt ile engelliyse, “crawler noindex kuralını hiçbir zaman görmez ve sayfa arama sonuçlarında görünmeye devam edebilir” (K-123), örneğin başka bir sayfadan link alıyorsa.
Bu, Google Search Central’ın robots.txt giriş dokümantasyonunda yazdığı gibi robots.txt’in hiçbir zaman bir sayfayı aramadan tamamen gizleme mekanizması olmadığı gerçeğiyle aynı köke bağlanır: disallow edilen bir sayfa dışarıdan link alıyorsa yine de indekslenebilir (K-84). İkisini aynı sayfada birlikte kullanmak, “önce gizle, sonra da dizinden çıkar” gibi görünse de fiilen ikinci talimatın hiç okunamadığı bir kurulum hatasıdır.
Sektörde hâlâ dolaşan bir eski alışkanlık, robots.txt dosyasının içine Noindex: /sayfa satırı yazmaktır. Google Search Central Blog’un 2 Temmuz 2019 tarihli duyurusu, bu gayri resmi satırın desteğini 1 Eylül 2019’da tamamen kaldırdığını açıkladı: “desteklenmeyen ve yayınlanmamış kuralları (noindex gibi) işleyen tüm kodu 1 Eylül 2019’da emekliye ayırıyoruz” (K-125). Bu tarihten sonra robots.txt içine yazılan bir Noindex: satırı Googlebot için hiçbir etki üretmiyor; satır orada dursa da ölü koddur.
Doğru sıra şudur: önce sayfanın taranmasına izin verilir (robots.txt’te disallow yok), sonra <head> içine <meta name="robots" content="noindex"> eklenir veya X-Robots-Tag: noindex HTTP başlığı döndürülür. İkisi aynı anda “engelle” derse etkili olan robots.txt’tir, noindex devre dışı kalır. Kendi sitemizin robots.txt dosyası hiçbir Disallow kuralı taşımıyor (K-126), bu yüzden bu çelişki bizde fiilen oluşamaz.
Diğer kendi-kurulum kategorileri (401, 403, diğer 4xx, 404, 5xx, yönlendirmeli sayfa) kendi HTTP durum kodu adından zaten anlaşılıyor ve Search Console’un on beş kategorilik tablosunda tanımlı; robots.txt ile noindex çelişkisi adı durum kodundan çıkarılamayan, en sık yanlış kurulan kombinasyon olduğu için ayrıca ele alınıyor. Hangi durumda hangisinin kullanılacağına robots.txt ile noindex arasındaki farkı dört ölçütlü bir karar tablosuyla netleştiren yazı ayrıca giriyor.
Google’ın önceliklendirmesinden kaynaklanan nedenler: Discovered ve Crawled - currently not indexed
Bu iki kategori bir bozukluk değil, Google’ın tarama önceliği meselesidir: Discovered - currently not indexed Google’ın URL’yi bildiği ama henüz taramadığı anlamına gelir, Crawled - currently not indexed ise Google’ın sayfayı taradığı ama dizine eklemediği anlamına gelir (K-151).
Her iki durumda da Google’ın tarama önceliği (crawl demand) üç faktöre bağlıdır. Google Search Central’ın tarama bütçesi rehberi bu üçünü ayrı ayrı adlandırıyor: algılanan envanter (Google’ın sitede bildiği URL sayısı), popülerlik (internette daha popüler URL’lerin daha sık taranması) ve tazelik (içeriğin ne sıklıkla değiştiği) (K-101).
Bu, büyük ve hızlı değişen sitelerde gerçek bir sorun olabilir. Ama Search Console’un kendisi bir eşik veriyor: Crawl Stats raporu sayfası “binden az sayfası olan bir sitenin bu raporu kullanmaya veya bu düzeyde tarama detayını düşünmeye gerek olmadığını” açıkça yazıyor (K-104). Google’ın Arama Savunucusu John Mueller, X/Twitter’da (21 Aralık 2021) bundan daha yüksek bir ölçekte bile aynı yönde konuştu: “100 bin URL genellikle tarama bütçesini etkilemeye yetmiyor” (K-105).
Kendi sitemizin sitemap’i 49 URL taşıyor (K-106), yani Search Console’un en düşük adlandırdığı eşiğin yirmide birinden az. Bu ölçekte “tarama bütçesi” bir sayfanın indekslenmemesinin olası açıklaması değildir; bu durumda gözlemlenebilir neden genelde içerik kalitesi veya iç bağlantı eksikliğidir, Google’ın taramaya zaman ayıramaması değil. Sitenin büyüklüğünün Google’ın üç ayrı crawl-budget eşiğinin (1.000 / 10.000+ / 1.000.000+ sayfa) neresinde durduğunu gösteren karar tablosu bu eşik tartışmasını sekiz maddelik bir öncelik listesiyle birlikte sürdürüyor.
Kanonikleştirme kaynaklı nedenler: Google neden sizin işaretlediğinizden farklı bir sayfayı seçiyor
Google, bir sayfayı kendi topladığı sinyallere göre “objektif olarak en eksiksiz ve kullanışlı” bulduğu URL’yi canonical seçer; bu seçim sizin işaretlediğiniz URL’den farklıysa sayfanız Duplicate ailesindeki kategorilerden birine düşer, bu bir hata değil Google’ın kendi seçim sürecinin sonucudur.
Duplicate without user-selected canonical kategorisi, sayfanın başka bir sayfanın kopyası olduğu ama sitenin hiçbir tercih belirtmediği durumu gösterir; Google Search Central’ın canonicalization sayfasına göre bu durumda Google kendi sinyallerine göre “objektif olarak en eksiksiz ve kullanışlı” sayfayı seçer (K-73). Site bir URL’yi tercih etmiş ama Google’ın sinyalleri (301, canonical etiketi, sitemap) başka bir URL’ye işaret ediyorsa, seçilmeyen sayfa ayrı bir kategoride görünür: Google kullanıcının işaretlediğinden farklı bir canonical seçmiştir.
Google’ın “Fix canonicalization issues” rehberi, beklenmedik bir canonical seçiminin altı adlandırılmış nedenini tek tek sayıyor: dil varyantı eksikliği (hreflang eksikse yanlış dil sürümü seçilebilir), CMS veya eklentinin yanlış kullandığı canonical öğesi, sunucu yanlış yapılandırması, web sitesine yönelik kötü niyetli müdahale, sendikasyon içeriği (partner sitenin aynı içeriği farklı görünümle yayınlaması) ve nadir görülen bir kopya site senaryosu (K-96). Teşhis için aynı rehber URL İnceleme aracını öneriyor; düzeltme sonrası “Dizine Eklenmesini İste” seçeneği Google’a kümelenen sayfaları yeniden değerlendirmesini ister.
Bu altı genel neden, kanonik etiketin sessizce yanlış kurulduğu on bir kalıbın tamamında daha ayrıntılı, kod örnekleriyle işleniyor; buradaki amaç yalnızca “Duplicate” ailesinin neden bir hata değil bir seçim sonucu olduğunu göstermek.
JavaScript render gecikmesi “henüz indekslenmedi” sorununun gerçek nedeni olabilir mi
Evet olabilir; Googlebot bir sayfayı crawling, rendering ve indexing olmak üzere üç aşamada işler, rendering ayrı ve kasıtlı olarak belirsiz süreli bir kuyrukta yapılır, bu da Crawled - currently not indexed kategorisiyle karışabilir.
Google Search Central’ın JavaScript SEO temelleri sayfası, “Googlebot sayfaları hem tarama hem render için kuyruğa alır” diyor ve rendering kuyruğu için net bir üst sınır vermiyor: “Sayfa bu kuyrukta birkaç saniye kalabilir, ama bundan daha uzun sürebilir” (K-128). Alt sınır belirli, üst sınır kasıtlı olarak açık uçlu.
İstemci tarafında (CSR, client-side rendering) render edilen bir sitede Googlebot’un ilk taradığı ham HTML boş veya eksik olabilir. Sayfa teknik olarak taranmıştır ama render tamamlanmadan önce “currently not indexed” görünebilir. Bu, Crawled - currently not indexed kategorisinin JavaScript’e özgü bir alt nedenidir; sunucu tarafında render edilen (SSR) veya derleme anında statik HTML üreten (SSG) bir sitede bu gecikme hiç oluşmaz, çünkü ham HTML zaten tam içeriği taşır.
CSR, SSR, SSG ve dynamic rendering arasındaki seçimin indekslenme hızını nasıl değiştirdiği ayrı bir yazıda bir karşılaştırma tablosu ve yayın öncesi/sonrası bir kontrol listesiyle birlikte veriliyor.
Soft 404 ve yönlendirme hataları indekslemeyi nasıl durduruyor
Soft 404, sayfa kullanıcıya “bulunamadı” mesajı gösterdiği halde sunucunun 404 HTTP kodu döndürmemesidir; yönlendirme hatası ise üç isimlendirilmiş alt nedenle raporlanır.
Google Search Console Yardım’ın Sayfa Dizine Ekleme raporu sayfası soft 404’ü şöyle tanımlıyor: “Sayfa isteği, bizim soft 404 yanıtı olduğunu düşündüğümüz bir yanıt döndürüyor. Bu, kullanıcı dostu bir ‘bulunamadı’ mesajı gösterdiği ama 404 HTTP yanıt kodu döndürmediği anlamına geliyor” (K-77). Aynı sayfa “Redirect error” kategorisini üç örnekle tanımlıyor: çok uzun bir yönlendirme zinciri, bir yönlendirme döngüsü ve en sonunda maksimum URL uzunluğunu aşan bir yönlendirme hedefi (K-78).
Bu iki kategori sık görülen bir senaryoda birleşiyor: bir sayfa silinip yerine boş veya “bulunamadı” içeriği bırakıldığında sunucu 200 döndürmeye devam ederse ortaya soft 404 çıkar; aynı sayfa alakasız bir hedefe yönlendirildiğinde ise redirect error oluşur. Hangi sayfanın feda edileceği kararını Search Console verisiyle, geri bağlantı profiliyle ve ticari değerle karşılaştıran karar tablosu bu iki hatanın, bir feda kararının yanlış uygulandığının somut belirtisi olduğunu gösteriyor.
Karar ağacı: hangi Search Console kategorisini hangi komutla doğrularsınız
Her Search Console kategorisi, kategori adından çalıştırılabilir bir doğrulama komutuna çevrilebilir. Bu dönüşüm altı adımda özetleniyor.
| Search Console kategorisi | İlk şüphe | Doğrulama komutu/adımı |
|---|---|---|
| Blocked by robots.txt | Sayfa robots.txt ile engellenmiş olabilir | curl https://siteniz.com/robots.txt ile ilgili yolun Disallow listesinde olup olmadığına bakın |
| Excluded by noindex tag | Sayfada noindex etiketi veya başlığı olabilir | curl -s https://siteniz.com/sayfa | grep -i noindex ile meta etiketi, curl -I https://siteniz.com/sayfa ile X-Robots-Tag başlığını arayın; ikisi birlikte varsa robots.txt ile çakışıp çakışmadığını kontrol edin |
| Discovered/Crawled - currently not indexed | Google önceliklendirme kuyruğunda bekliyor olabilir | Sitemap’teki toplam URL sayısını sayın, 1.000 sayfa eşiğiyle karşılaştırın; eşiğin altındaysanız neden muhtemelen içerik kalitesi veya iç bağlantı eksikliğidir |
| Duplicate without user-selected canonical / Google farklı canonical seçti | Google başka bir URL’yi temsilci seçmiş olabilir | Search Console URL İnceleme aracında “Google tarafından seçilen canonical” alanını kendi rel="canonical" etiketinizle karşılaştırın |
| Soft 404 / Redirect error | Sayfa hatalı bir ara durumda olabilir | curl -I https://siteniz.com/sayfa ile gerçek HTTP durum kodunu görün; 200 dönüp içerik “bulunamadı” mesajıysa soft 404, art arda 3xx dönüyorsa zincir uzunluğunu sayın |
| Yukarıdaki komutların hiçbiri bir şey bulmuyor, sayfa CSR kullanıyor | Render gecikmesi olabilir | Search Console URL İnceleme aracında “Canlı URL’yi test et” ile ham HTML’i render edilmiş ekran görüntüsüyle karşılaştırın |
Altı satırın beşi doğrudan bir terminal komutuyla, biri ise Search Console’un kendi arayüzüyle doğrulanıyor. Hiçbiri birbirinin yerine geçmez; bir sayfa birden fazla kategoriyi aynı anda taşıyabilir (örneğin hem soft 404 hem redirect error).
URL İnceleme aracıyla tek bir sayfanın gerçek durumu nasıl doğrulanır
Karar ağacındaki komutlarla bulunamayan durumlar için Search Console’un kendi canlı test mekanizması, tek bir sayfanın gerçek durumunu beş adımda gösteriyor. Search Console Yardım’ın URL İnceleme aracı sayfası bu adımları tanımlıyor.
- Search Console’da ilgili mülkü açın, üstteki arama kutusuna tam URL’yi yapıştırıp Enter’a basın. Bu, son tarama anındaki (cache’lenmiş) raporu gösterir.
- “Canlı URL’yi test et” düğmesine basın. Sonuç başarılıysa “İncelenen sayfayı görüntüle” seçeneği render edilmiş sayfanın ekran görüntüsünü, ham HTML’i, HTTP başlıklarını ve JavaScript konsol çıktısını gösterir (K-134).
- Ham HTML’de içerik varken ekran görüntüsünde yoksa, veya tersi, sorun render aşamasındadır. İkisi de boşsa sorun daha erken, tarama veya erişim aşamasındadır.
- Kanonikleştirme şüphesi için aynı ekranda “Kullanıcı tarafından belirtilen canonical” ile “Google tarafından seçilen canonical” alanlarını karşılaştırın.
- Sorunu düzelttikten sonra aynı araçta “Dizine Eklenmesini İste” seçeneğini kullanın; bu bir garanti değil, Google’a yeniden değerlendirme isteği gönderir (K-96). noindex kaldırıldıktan sonra Googlebot’un sayfayı yeniden ziyaret etmesi “sayfanın internetteki önemine göre aylar sürebilir” (K-127); acil kaldırma veya ekleme için ayrı bir süre taahhüdü yoktur.
URL İnceleme aracı tek bir adresi derinlemesine gösterir, ama sitedeki hangi sayfaların şüpheli olduğunu elle tek tek bulmak saatler alır. robots.txt, noindex ve canonical çelişkilerini birlikte tarayan site denetimi bu taramayı otomatikleştirip SEO-CANONICAL-YOK gibi bulgu kodlarıyla sonucu doğrudan raporluyor; geniş tarama hangi sayfaların şüpheli olduğunu bulur, URL İnceleme aracı ise Google’ın o sayfa için gerçekte ne yaptığını doğrular.
Sitemap’e eklemek sayfamın indekslenmesini garanti eder mi?
Hayır. Google’ın kendi ifadesiyle sitemap’te bulunmak yalnızca “zayıf bir sinyal”dir. Google Search Central’ın duplike URL birleştirme rehberi üç yöntemi güç sırasına göre veriyor: 301 yönlendirme ve rel="canonical" etiketi “güçlü sinyal” sayılırken, sitemap’te listelenmek “sitemap’e dahil edilen URL’lerin canonical olmasına yardımcı olan zayıf bir sinyal”dir (K-74). Sitemap kaydı tek başına bir sayfayı indekslemeye zorlamaz.
Yeni yayınladığım bir sayfanın indekslenmesi normalde ne kadar sürer?
Google sabit bir süre vermiyor. Rendering kuyruğu birkaç saniyeden başlar ama üst sınır belirtilmiyor (K-128); tarama önceliği de sayfanın popülerliğine ve içeriğin tazelik ihtiyacına bağlı (K-101). Bu nedenle “X gün içinde indekslenir” tarzı kesin bir rakam Google kaynağıyla doğrulanamaz ve burada uydurulmaz.
Search Console · teknik SEO · indeksleme · robots.txt