Hreflang ve canonical, her ikisi de URL yönetimiyle ilgili iki teknik SEO etiketidir. Bu yüzden sık karıştırılırlar; birinin görevini diğerine yüklemeye çalışmak da oldukça yaygındır. Ama yaptıkları iş temelden farklıdır. Canonical, Google'a "bu sayfanın tercih edilen versiyonu şu URL'dir" der. Hreflang ise "bu sayfa şu dil ve bölgeye hitap ediyor, muadili şu URL'dedir" anlamına gelir. İki ayrı soruya iki ayrı cevap.
Karışıklık çoğunlukla şuradan çıkıyor: çok dilli sitelerde benzer içerikler farklı URL'lerde bulunur ve bu durum hem canonical hem de hreflang konusunda karar vermeyi gerektirir. Hangi etiket ne zaman kullanılır, ikisi çakışır mı, birlikte nasıl çalışır — bu sorular teknik SEO'nun en çok tartışılan konuları arasında yer alır.
Canonical etiket ne yapar, ne yapmaz?
Canonical etiket (rel="canonical"), yinelenen veya çok benzer içerik barındıran sayfalar için Google'a sinyal gönderir. "Birden fazla URL aynı içeriği gösteriyorsa, bunu asıl kaynak olarak değerlendir" demiş olursunuz. Google bu sinyali genellikle dikkate alır; ama her zaman uymak zorunda değildir — bir ipucu olarak yorumlar, emir olarak değil.
Canonical'ın çözdüğü problem şudur: /?ref=newsletter, /?utm_source=email ve /urun-adi gibi URL varyasyonları aslında aynı sayfayı gösteriyorsa, arama motoru hangisini indeksleyeceğine kendisi karar verebilir. Canonical ile siz bu kararı kendiniz vermiş olursunuz. PageRank'in bölünmesini de önlemiş olursunuz bu sayede.
Canonical'ın çözmediği problem ise şudur: farklı dillerdeki sayfalar. İngilizce ve Türkçe sayfalar aynı ürünü anlıyor olsa bile, kullanıcı için gerçekten farklı değer taşıyan sayrfalar söz konusudur. Bu ikisini canonical ile birbirine bağlamak doğru bir yaklaşım değildir. Canonical "ikisi aynı şey" demek için kullanılır; çeviri veya yerelleştirilmiş içerik için değil.
Hreflang ne yapar, canonical'dan farkı nedir?
Hreflang etiketi, sayfaların farklı dil veya bölge versiyonlarını birbirine bağlar. Google'a, "bu sayfanın Türkçe versiyonu şurada, İngilizce versiyonu burada, İspanya'ya özel versiyonu da şurada" demiş olursunuz. Google bu bilgiyi kullanarak, bir arama yapıldığında kullanıcının diline ve bulunduğu bölgeye en uygun sayfayı sonuç olarak gösterir.
Canonical tek yönlü bir sinyaldir; kaynak sayfa, tercih edilen URL'yi gösterir. Hreflang ise çift yönlüdür ve her alternatif sayfanın birbirini karşılıklı olarak referans göstermesi gerekir. Bu karşılıklılık kuralı (return tag) eksik bırakıldığında hreflang çalışmaz — Google, eşleşmeyen referansları görmezden gelir. Karşılıklı referans doğrulamasını Hreflang Generator aracıyla kolayca yapabilirsiniz; araç, tüm alternatif URL'ler için doğru kod bloğunu otomatik üretir.
Canonical bir sayfada tek URL'yi işaret ederken, hreflang aynı sayfada birden fazla alternatifi listeler. Bu yapısal fark, ikisinin neden farklı sorunları çözdüğünü açıklar.
Neden ikisi sık karıştırılıyor?
Çok dilli sitelerde hem canonical hem de hreflang aynı anda devreye girer. Bu çakışma, hangi etiketin ne iş yaptığı konusunda karışıklığa zemin hazırlar.
Bunun yanı sıra iki yaygın yanlış kullanım dikkat çeker. Birincisi, İngilizce sayfayı canonical olarak gösterip Türkçe sayfayı bu canonical'ın altına almak. Bu yaklaşım Google'a şunu söyler: "Türkçe sayfam ikincil, asıl sayfa İngilizce." Hreflang ile amaçlanan şey ise tam tersidir: her dil kendi bölgesi için birincildir. İkincisi, hreflang etiketleri eklenmiş sayfalarda canonical etiketini hiç kullanmamak. Bu durumda URL varyasyonlarından kaynaklanan yineleme sorunları çözümsüz kalır.
Bir diğer yanılgı da şudur: hreflang, arama motoruna bir yönlendirme emri değildir. Google hangi sayfayı göstereceğini belirlerken hreflang'ı dikkate alır, ama kullanıcının IP'si, tarayıcı dil ayarları ve arama geçmişi de devreye girer. Hreflang eklemek, yanlış sayfanın çıkmamasını garanti etmez; yalnızca doğru sayfanın gösterilme olasılığını artırır.
İkisi birlikte nasıl kullanılır?
Çok dilli bir sitede canonical ve hreflang, çoğunlukla aynı sayfada birlikte bulunur. Ve bu doğal bir durumdur. İkisi çakışmaz; farklı problemleri çözdükleri için bir arada kullanılmaları gerekir.
Temel kural şudur: her sayfa kendi kendini canonical olarak işaret etmelidir. Türkçe sayfa kendi URL'ini, İngilizce sayfa kendi URL'ini canonical olarak göstermelidir. Ardından her iki sayfa da hreflang ile birbirini referans gösterir.
Örnek olarak, Türkçe bir sayfa için şu iki etiketin aynı anda bulunması beklenen ve doğru durumdur:
<link rel="canonical" href="https://example.com/tr/urun/" />
<link rel="alternate" hreflang="tr" href="https://example.com/tr/urun/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/product/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/product/" />
Canonical, sayfanın kanonik versiyonunu söyler. Hreflang, bu sayfanın hangi dil-bölge kombinasyonuna ait olduğunu ve muadillerinin nerede olduğunu söyler. Görevler ayrıdır, çelişki yoktur.
Hreflang etiketlerini HTML head bölümünde kullanmak yerine XML sitemap üzerinden tanımlamak da mümkündür. Büyük çok dilli sitelerde —onlarca dil ve yüzlerce URL söz konusu olduğunda— sitemap yaklaşımı daha sürdürülebilir olabilir. Bu yapıyı kurarken XML Sitemap Generator aracından yararlanabilirsiniz.
Yaygın kurulum hataları ve sonuçları
İkisinin birbirinin yerine geçebileceğine dair bir yanılgıdan kaynaklanan hatalar, sıralama kayıplarına yol açar. En sık görülenler şunlardır:
Dil sayfasını başka bir dile canonical olarak bağlamak. Türkçe sayfada canonical olarak İngilizce URL'yi göstermek, Google'a "bu sayfayı indeksleme, asıl olan diğeri" demektir. Amaç buysa sorun yok; ama amaç Türkçe sayfanın kendi başına indekslenmesiyse bu ciddi bir hatadır. Google, canonical sinyaline genellikle uyar.
Hreflang'da karşılıklı referansı eksik bırakmak. Türkçe sayfa İngilizce sayfayı referans gösteriyor, ama İngilizce sayfa Türkçeyi referans göstermiyorsa bu hreflang çifti geçersiz sayılır. Google hatalı yapılandırılmış hreflang bloklarını görmezden gelir. Search Console'da "Return tag missing" uyarısı tam bu durumu işaret eder.
x-default'u unutmak. Hiçbir dil hedefine girmeyen kullanıcılar için —örneğin arama motoruna doğrudan domain adı yazanlar ya da hreflang listesinde yer almayan bölgelerden gelenler— x-default değeri belirtilmezse Google hangi sayfayı göstereceğine kendisi karar verir. Bu da tahmin edilemez sonuçlar doğurur.
Canonical'ı hreflang'la birlikte güncellememeyi. Bir sayfanın URL'si değiştiğinde hem canonical hem de tüm hreflang referansları güncellenmelidir. Canonical güncellenir ama hreflang eski URL'yi göstermeye devam ederse, iki etiket çelişen sinyaller gönderir. Hangi URL'nin geçerli olduğu belirsizleşir.
Siteyi genel performans ve teknik durum açısından düzenli kontrol altında tutmak bu hataların erkenden fark edilmesini sağlar. Site Hız Testi ile genel teknik SEO durumuna bakabilirsiniz; Search Console ise hreflang hatalarını doğrudan raporlar.
Canonical ve hreflang, aynı sayfada aynı anda yaşayan iki farklı sinyal sistemidir. Biri yinelenen içerik sorununu kapatır, diğeri dil ve bölge hedeflemesini kurar. Her birini kendi amacı için kullanmak — ve ikisinin ayrı problemleri çözdüğünü içselleştirmek — çok dilli teknik SEO altyapısının en temel kurallarından biridir. Biri diğerinin yerine geçemez, biri diğerini iptal etmez; yan yana çalışırlar.