hreflang nedir.
hreflang, bir sayfanın farklı dil ve bölge sürümlerini arama motorlarına bildiren ve hangi kullanıcıya hangi sürümün gösterileceğini belirleyen işaretlemedir.
Çok dilli bir sitede aynı içeriğin birden fazla sürümü var ve arama motorunun iki şeyi bilmesi gerekiyor: bunlar birbirinin çevirisi mi, ve hangi kullanıcıya hangisi gösterilmeli? hreflang tam olarak bu iki soruyu cevaplıyor.
Bildirim olmadan iki sonuç doğuyor. Birincisi, sürümler birbirinin kopyası sanılabiliyor ve motor hangisini dizine alacağına kendi karar veriyor. İkincisi, Almanca arayan bir kullanıcıya Türkçe sayfa gösterilebiliyor — içerik var ama doğru kişiye ulaşmıyor.
Üç kural
hreflang'in çalışması üç kurala bağlı ve üçü de sık ihlal ediliyor. Biri eksikse küme geçersiz sayılıyor.
- Karşılıklılık — A, B'yi bildiriyorsa B de A'yı bildirmeli. Tek yönlü bildirim geçersizdir.
- Kendini dahil etme — her sayfa kendi dilini de bildirmeli. Bu sık atlanıyor ve kümeyi bozuyor.
- Mutlak adres — bağlar tam adres olmalı; göreli yol kabul edilmiyor.
İkinci kural en çok şaşırtanı: bir sayfanın kendini bildirmesi gereksiz görünüyor ama küme tanımının parçası. Üç dilli bir sitede her sayfa üç bağ taşımalı — kendisi dahil.
Bu sitede her sayfa dört bağ taşıyor: üç dil ve bir varsayılan. Doğrulama süiti kümenin eksiksiz ve karşılıklı olduğunu her koşumda ölçüyor.
Dil kodu, bölge kodu
Bildirimde kullanılan değer bir dil kodu ya da dil-bölge çifti olabiliyor ve ikisi farklı şeyler hedefliyor.
Yalnız dil kodu — örneğin Türkçe için iki harfli kod — o dili konuşan HERKESİ hedefliyor: Türkiye'deki, Almanya'daki ve Kıbrıs'taki Türkçe konuşanlar aynı sayfayı görüyor. Bölgeye göre farklılaşan içerik yoksa doğru tercih budur.
Dil-bölge çifti ise yalnız belirli bir ülkedeki o dil konuşanlarını hedefliyor. Bu ayrım ancak gerçekten farklılaşan içerik varsa anlamlı: farklı para birimi, farklı stok, farklı yasal metin. Aynı içeriği iki bölge koduyla iki kez bildirmek gereksiz karmaşıklık üretiyor.
- Yalnız dil — bölgeye göre farklılaşan içerik yoksa. En yaygın ve en sade seçim.
- Dil-bölge — para birimi, stok ya da yasal metin gerçekten farklıysa.
- Bölge kodu tek başına kullanılamaz — her zaman bir dil kodu gerekiyor.
- Kod standardı — dil için ISO 639-1, bölge için ISO 3166-1. Uydurma kod çalışmıyor.
Son madde bir hata kaynağı: örneğin İngiltere için ülke kodu sezgisel olarak yanlış tahmin edilebiliyor ve yanlış kod tüm kümeyi geçersiz kılıyor. Kodlar tahmin edilmez, listeden alınır.
Nereye yazılır
Bildirim üç yerden birinde yapılabiliyor ve üçü de eşdeğer; seçim pratik gerekçelere dayanıyor.
Sayfanın başlık bölümüne yazmak en yaygın yol ve en kolay denetlenen. Sayfa kaynağına bakıldığında bağlar görünüyor ve hata anında fark ediliyor.
Sitemap'e yazmak ikinci yol ve büyük sitelerde tercih ediliyor: bağlar tek bir dosyada toplanıyor ve her sayfaya ek işaretleme eklemek gerekmiyor. Bu sitede İKİSİ birden yapılıyor — sayfa düzeyinde her sürümün kendi bağ kümesi, sitemap'te toplam 454 xhtml:link girdisi. Küme sayfadan sayfaya değişiyor: üç dilde var olan sayfa dört bağ taşıyor, yalnız Türkçe olan iki.
Üçüncü yol HTTP başlığı ve yalnız HTML olmayan kaynaklar için gerekiyor — çok dilli PDF belgeler gibi.
Küme eksiksiz olmalı, yoksa hiç olmamalı — yarım bir kurulum hiç kurulum olmamasından az işe yarıyor.
Nasıl denetlenir
hreflang sessizce bozulan bir katman: hiçbir hata mesajı yok, sayfa normal görünüyor ve yalnız arama sonuçlarında yanlış dil sürümü çıkmaya başlıyor. Bu yüzden kurulum bir kez yapılıp bırakılamıyor; denetlenmesi ve tercihen bir teste bağlanması gerekiyor.
- Sayfa kaynağına bak — bağ sayısı dil sayısıyla eşleşiyor mu, kendisi dahil?
- Karşılıklılığı kontrol et — her sayfadan diğerlerine git ve geri dönüş bağını ara.
- Kanonikle çelişme var mı — her dil sürümü kendine kanonik veriyor mu?
- Kodlar standart mı — listeden doğrulanmalı, tahmin edilmemeli.
- Adresler mutlak mı — göreli yol kabul edilmiyor.
- Arama konsolunda hata raporu var mı — eksik dönüş bağları orada listeleniyor.
Son madde en ucuz denetim: arama konsolu hreflang hatalarını ayrı bir raporda topluyor ve karşılıklılık eksikliklerini doğrudan gösteriyor. Rapor gecikmeli ama gerçek — sitenin canlı hâlinden okunuyor.
Bu sitede denetim ayrıca koda bağlı: bağlar tek bir kaynaktan üretiliyor, dolayısıyla karşılıklılık yapısal olarak garanti ve doğrulama süiti kümenin eksiksiz olduğunu her koşumda ölçüyor. Elle yazılmış bir küme, ilk sayfa eklemesinde bozuluyor.
Ne yapmaz
hreflang'in ne yapmadığını bilmek, ondan yanlış şey beklememeyi sağlıyor. Üç yaygın yanlış beklenti var.
Birincisi: sıralama artırmaz. hreflang bir sıralama sinyali değil, bir eşleştirme sinyali. Doğru kurulduğunda mevcut görünürlüğün doğru kullanıcıya gitmesini sağlıyor; yeni görünürlük üretmiyor.
İkincisi: yinelenen içerik sorununu çözmez. Aynı dildeki iki benzer sayfa için hreflang bir çözüm değil — o, kanonik bildiriminin işi. hreflang farklı DİLLERDEKİ sürümler için.
Üçüncüsü: kullanıcıyı yönlendirmez. Arama motoruna hangi sürümü göstereceğini söylüyor; tarayıcıya hiçbir şey söylemiyor. Bir kullanıcı doğrudan bir adrese girdiğinde hreflang devreye girmiyor.
Üçüncü madde önemli bir sonuç doğuruyor: doğru kurulmuş bir hreflang kümesi, otomatik yönlendirme ihtiyacını ortadan kaldırıyor. Arama motoru zaten uygun sürümü gösteriyor ve doğrudan gelen kullanıcı zaten istediği adresi açmış oluyor.
Kapanışta bir çerçeve: hreflang, çok dilli bir sitenin en teknik ama en mekanik katmanı. Kuralları az, net ve tartışmasız — karşılıklı ol, kendini dahil et, mutlak adres kullan. Zorluk kurallarda değil, onları site büyüdükçe tutarlı tutmakta. Bu yüzden bağların elle yazılmaması ve bir teste bağlanması, bu katmanın tek gerçek çözümü.
Küme eksiksiz olmalı, yoksa hiç — yarım bir kurulum hiç kurulum olmamasından az işe yarar.