GSC'de "Alternate Page with Proper Canonical Tag" Hreflang Hatası Ne Anlama Gelir?

GSC alternate page canonical hreflang hatasını temsil eden editoryal blog görseli

Google Search Console'da Coverage raporunu açtığınızda "Alternate page with proper canonical tag" satırını gördüğünüzde ne yapmanız gerektiğini anlamak, doğru tanı koymakla başlar. Bu kayıt, hreflang implementasyonu bulunan sitelerde sıkça karşılaşılan ve çoğunlukla yanlış yorumlanan bir GSC statüsüdür.

Yaygın tepki şu olur: kayıt görülür, hata aranmaya başlanır. Oysa durumun gerçek anlamı ve müdahale gerektirip gerektirmediği, sayfanın nasıl yapılandırıldığına bağlıdır. Yapı kasıtlıysa bu kayıt tamamen beklenen bir çıktıdır; değilse canonical zincirinde bir tutarsızlık var demektir.

Çok dilli siteler bu ayrımı en çok karıştıran yapılardır. Hreflang etiketi bir sayfayı "dil varyantı" olarak tanımlarken canonical etiketi "yetkili sürümü" gösterir. İkisi aynı sayfayı farklı biçimlerde işaret ettiğinde Google'ın ne gördüğü ve nasıl karar verdiği anlaşılmadan adım atmak, durumu iyileştirmek yerine kötüleştirebilir.

Bu GSC kaydı hata mı, statü mü? Önce ayrımı netleştirmek gerekir

GSC Coverage raporu URL'leri iki temel gruba ayırır: indekslenmiş ve indekslenmemiş. "Alternate page with proper canonical tag" indekslenmemiş grubun içinde yer alır; bu, Google'ın bu URL'yi bilinçli olarak dizine almamayı seçtiği anlamına gelir. Ama seçimin sebebi önemlidir.

Google bu kararı almak için sayfada bir canonical etiket bulur ve o etiketin başka bir URL'i gösterdiğini saptar. Ardından "bu sayfa, yetkili sürümü başka bir URL olan bir alternatif" yorumunu yapar ve ilgili URL'yi dizine almaz. Bu işlem hatalı bir tarama değil, canonical direktifine verilen tutarlı bir yanıttır.

"Hata" olarak etiketlenmemesinin nedeni budur. GSC bu durumu bir uyarı ya da kırmızı işaret olarak değil, canonical etiketini takip ederek aldığı indeksleme kararını belgeleyen, yorumun ve bir sonraki adımın tamamen size bırakıldığı, açıklayıcı bir statü bilgisi olarak sunar. Yani URL'nin neden dizinde olmadığını söylüyor; bunu düzeltmeniz gerekip gerekmediğini değil. O kararı siz verirsiniz.

Çok dilli sitelerde bu statü genellikle hreflang ile canonical etiketinin bir arada kurulduğu sayfalarda görülür. Hreflang, o sayfayı belirli bir dil-bölge çifti için alternatif olarak tanımlar. Canonical ise Google'a hangi URL'nin yetkili olduğunu söyler. İkisi birbirini tutarlı biçimde desteklediğinde sorun yoktur. Çeliştiğinde ise bu statünün sebebi değişir.

Alternate olarak işaretlenen sayfa canonical'ını kendisine vermiyor

Hreflang yapısında her dil sürümünün kendi canonical etiketini kendisine (self-referencing canonical) vermesi beklenir. Türkçe sürüm olan /tr/sayfa, canonical olarak yine /tr/sayfa'yı göstermelidir. İngilizce sürüm /en/sayfa, canonical olarak yine /en/sayfa'yı. Her dil sürümü kendi yetkili URL'sini işaret eder.

Self-referencing canonical bu yapıda çift güvencedir: hem sayfanın kendisinin yetkili olduğunu bildirir, hem de hreflang kümesinin her üyesinin bağımsız indekslenebileceğini ima eder. Türkçe sürüm kendi yetkili URL'sini tanımlamışsa Google onu ayrı bir sayfa olarak değerlendirir; hreflang etiketi ise hangi lokaller için sunulacağını belirler.

Sorun şuradan çıkar: Türkçe sürümdeki canonical etiketi /tr/sayfa yerine /en/sayfa'yı, yani İngilizce sürümü, gösterirse, Google Türkçe sayfayı "yetkili sürümü başka bir yerde olan bir alternatif" olarak okur. Sonuç: Türkçe sayfa GSC'de "Alternate page with proper canonical tag" olarak görünür, dizine alınmaz.

Bu hata üç farklı biçimde oluşabilir. Birincisi, CMS veya şablon her dil sürümüne aynı canonical etiketi üretir ve bu etiket varsayılan dile işaret eder. İkincisi, hreflang eklenirken canonical güncellenmemiş; geçici olarak konulan bir etiket kalmaya devam eder. Üçüncüsü, canonical ile "ana sürüm" kavramları karıştırılmış ve tüm dil sürümlerine tek bir URL verilmiştir.

Hreflang hatalarını tespit etme sürecinde canonical zinciri, neredeyse her zaman ilk kontrol noktalarından biri olmalıdır. Çünkü bu sorun sessizce oluşur; hiçbir GSC uyarısı "canonical yanlış yazılmış" demez, sadece sonuçta sayfanın dizine alınmadığını görürsünüz.

Hreflang alternate bildirimi canonical kararını geçersiz kılmıyor

Hreflang etiketinin mantığını doğru yerleştirmek, geri kalan her şeyi yerine oturtur. Hreflang, Google'a "bu sayfanın şu dil ve bölge için bir versiyonu var" der. Canonical ise "bu URL'nin yetkili sürümü şurasıdır" der. İkisi farklı şeyler söyler; biri diğerini iptal etmez.

Google, canonical'ı bir direktif olarak, hreflang'ı ise bir öneri olarak değerlendirir. Bu hiyerarşi kritiktir. Canonical etiket başka bir URL'i gösterdiğinde, hreflang etiketi bu sayfayı belirli bir lokale bağlamış olsa bile Google canonical kararına uymayı seçer. Bir Türkçe sayfayı hreflang ile tr olarak tanıtıp canonical'ı İngilizce sayfaya yönlendirirseniz, Türkçe sayfa büyük olasılıkla dizine alınmaz.

Burada yaygın bir yanlış anlama var: "Hreflang verirsem Google bu sayfayı o dilde indeksler" beklentisi. Hreflang, hangi sayfanın hangi kullanıcıya gösterileceğini etkiler; ama indeksleme kararında canonical daha güçlü bir sinyaldir. İkisi uyumsuzsa canonical baskın çıkar.

Çok dilli sitelerde canonical yönetimi, tek dilli sitelere kıyasla çok daha fazla katman içerir. Her dil sürümünün self-canonical'ı varsa ve hreflang küme tutarlıysa Google her sürümü ayrı bir sayfa olarak değerlendirip uygun kullanıcıya yönlendirir. Bu iki koşuldan biri bozulduğunda sistem beklenen biçimde çalışmaz.

Bu çıktının beklenen ve zararsız olduğu senaryolar

Her "Alternate page with proper canonical tag" kaydı bir sorunun işareti değildir. Bazı yapılarda bu statü kasıtlı tercihten kaynaklanır ve müdahale gerektirmez.

En tipik örnek: İngilizce ve Türkçe sürüm aynı içeriği taşıyor, içerik ekibi iki sürümü ayrı ayrı optimize etmeyecek ve Türkçe trafik beklentisi çok sınırlı. Bu durumda Türkçe sürümün canonical'ı İngilizce sayfaya kasıtlı olarak verilir; Türkçe sayfa indekslenmez, sadece hreflang üzerinden dil yönlendirmesi çalışır. GSC'de "Alternate page with proper canonical tag" görünmesi tam olarak beklenen sonuçtur.

Bir başka senaryo: Site tek alan adında çalışıyor, üretim kapasitesi kısıtlı. Sadece birkaç kilit sayfa iki dilde var, gerisi yalnızca İngilizce. Türkçe çevirisi henüz yapılmayan sayfalar için canonical İngilizce URL'ye verilir. Bu bir hata değil, bilinçli kaynak yönetimidir.

Bu ayrımı yapmanın yolu şudur: canonical etiketteki URL doğruysa, yani gerçekten o sayfanın yetkili sürümüne işaret ediyorsa ve bu bir tasarım kararıysa, kaydı görmezden gelebilirsiniz. Sorun, canonical'ın yanlış URL'i göstermesidir; canonical'ın farklı bir URL'i göstermesi değil.

Gerçek sorunun işaretleri: kayıt ne zaman müdahale gerektirir?

"Alternate page with proper canonical tag" görüyorsunuz ve bu sayfa aslında dizine alınmasını istediğiniz bir dil sürümü. Müdahale gerektiğini gösteren üç net işaret vardır.

Birincisi, sayfanın canonical etiketi yanlış URL'i gösteriyor: Türkçe sayfanız kendi tr versiyonunu değil, en versiyonunu canonical olarak işaret ediyorsa, Google bu Türkçe sayfayı bağımsız bir içerik olarak değil, yetkisini başka URL'ye bırakmış bir varyant olarak değerlendirir ve dizine almaz. Bu durumda canonical düzeltilmeli ve her dil sürümüne self-referencing canonical verilmelidir.

İkincisi, bu sayfa hreflang kümesinde yer alıyor ama GSC'nin Hreflang raporunda dil bazlı hata veya uyarı da görünüyor. İki sorun aynı anda varsa canonical ile hreflang arasında bir tutarsızlık var demektir. GSC'nin uluslararası hedefleme raporunda hreflang hataları sekmesini açın; orada görünen URL'ler ile "Alternate page" statüsündeki URL'ler kesişiyor mu? Kesişiyorsa ikisi aynı kaynaktan besleniyordur.

Üçüncüsü, bu dil sürümünün indekslenmesini istiyor ve o dilde organik trafik bekliyorsunuzdur, ama sayfa dizinde görünmüyordur. Beklenti ile yapı çeliştiğinde yapıyı gözden geçirmek gerekir.

Tersine, bu statüdeki URL'ler kasıtlı olarak indeks dışı bırakılan sayfalarsa ve hreflang kümesi başka bir hata içermeden çalışıyorsa, bu kaydı yalnızca bilgi olarak tutabilirsiniz. Her GSC kaydı bir aksiyon gerektirmez; bazıları alınan kararın yansımasıdır.

Canonical zincirini çok dilli yapıda adım adım doğrulamak

Müdahale kararı verdikten sonra hangi sayfaların canonical etiketinin yanlış olduğunu bulmak gerekir. Bunu sayfa sayfa yapmak yerine sistematik bir kontrol akışıyla ilerlemek daha güvenilir sonuç verir.

İlk adım: GSC Coverage raporundan "Alternate page with proper canonical tag" statüsündeki URL'leri dışa aktarın. Bu URL'lerin her birinde canonical etiketinin hangi URL'i gösterdiğini kontrol edin. Tarayıcı geliştirici araçlarıyla veya GSC URL inceleme aracıyla bunu tek tek yapabilirsiniz; büyük siteler için tarama araçları bu işlemi toplu yürütür.

İkinci adım: Dil sürümü bazında canonical → hreflang → hedef URL zincirini çizin. Türkçe sayfa canonical olarak neyi gösteriyor? O URL hreflang kümesinde tr olarak tanımlanmış mı? Hreflang kümesinin diğer üyeleri, İngilizce, Almanca vb., kendi self-canonical'larını mı gösteriyor, başka URL'leri mi?

Üçüncü adım: Canonical URL'nin gerçekten erişilebilir ve indekslenmiş olduğunu doğrulayın. Bazen canonical etiketi kendi başına bir 301 yönlendirmesine işaret ediyor ya da hedef sayfa noindex içeriyor olabilir. Bu zincir her adımda temiz değilse, Google tutarlı bir karar almakta güçlük çeker.

Hreflang test sürecinde canonical doğrulaması ayrı bir kontrol maddesi olarak yer almalıdır. Sadece hreflang etiketinin varlığını değil, canonical'ın self-referencing olup olmadığını ve yönlendirme zinciri içermediğini ayrıca kontrol edin.

Dördüncü adım: CMS'in canonical etiketi nasıl ürettiğini anlayın. Şablon tüm dil sürümlerine otomatik olarak varsayılan dil URL'sini canonical veriyorsa, bu yapısal bir sorundur ve tek tek sayfa düzeltmesi yerine şablon katmanında çözülmesi gerekir. Çok dilli site kurulum aşamasında bu katmanın doğru yapılandırılması sonraki sorunların büyük kısmını önceden engeller.

GSC'de "Alternate page with proper canonical tag" görünmesi her zaman aceleci bir müdahale gerektirmez. Kayıt, canonical'ın nereye baktığını belgeler; kasıtlı bir tasarım kararıysa bilgi, şablon varsayılan dile kilitliyse teşhistir. Self-canonical her dil sürümünde duruyorsa ve hreflang kümesi karşılıklıysa, statü ya hiç belirmez ya da müdahale istemez. İndekslenmesini istediğiniz sürümler bu kovada toplanıyorsa sıra nettir: önce canonical üretimini, sonra şablonu, en sonda kümeyi kontrol edin. Düzeltme tek sayfada değil şablonda tutarsa tüm diller aynı anda temizlenir.