SEO

Hreflang Etiketi Nedir, Nasıl Kullanılır? Çok Dilli Site SEO Kurulumu

Talha AslanTalha Aslan 18 dk okuma 2 görüntülenme

Hreflang etiketi, çok dilli bir sitenin arama motorlarına "bu sayfanın Türkçesi bu, İngilizcesi şu" demesinin tek resmi yoludur. Ben talhaaslan.com'u Türkçe, İngilizce ve Almanca olmak üzere üç dilde yayınlıyorum; dolayısıyla bu yazıdaki her kod satırı kendi sitemden geliyor. 2012'den beri sahada gördüğüm en yaygın hata ise etiketi çeviri işi sanmak. Oysa hreflang, çeviri değil eşleştirme işidir. Bu yazıda kurulumu, tuzakları ve kontrol listesini adım adım anlatıyorum; sayısal örnekleri "örnek hesap" diye açıkça etiketledim.

Hreflang etiketi nedir?

Hreflang etiketi, HTML head bölümüne eklenen rel="alternate" hreflang="dil-BÖLGE" biçimindeki bir bağlantı öğesidir ve arama motoruna "bu sayfanın şu dil veya bölge sürümü şu adrestedir" der. Yani Google, aynı içeriğin farklı dil sürümlerini bu etiket sayesinde eşleştirir ve kullanıcıya kendi diline uygun sürümü gösterir.

Tanımın içindeki "eşleştirme" kelimesi bence her şeyi özetliyor. Hreflang etiketi, sayfanın dilini Google'a öğretmez; Google dili zaten içeriğe bakarak anlar. Etiketin görevi, birbirinin çevirisi olan sayfaları tek bir grup hâlinde tanıtmak. Bu yüzden ben müşterilerime hep aynı cümleyi kuruyorum: hreflang, çeviri değil eşleştirme işidir.

Ayrıca etiket tek başına bir sinyal değildir. Google, yerel sürümler belgesinde üç eşdeğer yöntem tanır: HTML bağlantı etiketi, HTTP Link başlığı ve XML site haritası. Bu yazıda üçünü de karşılaştıracağım. Ancak önce etiketin neye yaradığını ve canonical ile nerede ayrıştığını netleştirelim; çünkü en pahalı hatalar bu karışıklıktan doğuyor.

Hreflang etiketi ne işe yarar, canonical'dan farkı nedir?

Hreflang etiketi, kullanıcının diline ve bölgesine uygun sürümü arama sonucunda göstermeye yarar. Almanya'daki bir kullanıcı sitenizi aradığında Google Almanca sayfayı, Türkiye'deki kullanıcı ise Türkçe sayfayı görür. Böylece kullanıcı yanlış dilde bir sayfaya gelip hemen çıkmaz. Dönüşüm tarafındaki en somut fayda da budur.

Canonical ise tamamen farklı bir soruya cevap verir: "Bu içeriğin asıl kopyası hangisi?" Yani canonical, aynı içeriğin kopyalarını tek adrese indirger; hreflang ise farklı dillerdeki eşdeğer sayfaları bir arada tutar. Dolayısıyla ikisi rakip değil, birlikte çalışan iki ayrı sinyaldir. Aşağıdaki karşılaştırma bu farkı bir bakışta gösteriyor.

  • Canonical: "asıl sayfa budur" der, kopyaları birleştirir.
  • Hreflang: "bu sayfanın diğer dil sürümleri şunlardır" der, sürümleri eşleştirir.
  • Canonical tek bir adres gösterir; hreflang ise her sürüm için ayrı bir satır ister.
  • İkisi aynı sayfada birlikte durur ve birbiriyle çelişmemelidir.

Örneğin Türkçe hizmet sayfamın canonical'ı kendisidir, hreflang satırları ise İngilizce ve Almanca sürümleri gösterir. Bu düzen bozulduğunda, yani hreflang başka bir sayfanın canonical'ına işaret ettiğinde, Google etiketi yok sayar. Bu konuya ilerideki bölümde ayrıca döneceğim.

Hangi sitelerin hreflang'a ihtiyacı vardır, hangilerinin yoktur?

Hreflang'a yalnız aynı içeriği birden fazla dilde veya bölgede sunan siteler ihtiyaç duyar. Tek dilli bir kurumsal site, tek ülkeye satan bir e-ticaret mağazası ya da yalnız Türkçe yayın yapan bir blog için etiket gereksizdir. Yani etiketi "her sitede olmalı" diye eklemek, gereksiz bakım yükü demektir.

Öte yandan üç tip sitede etiket şarttır. İlk olarak, aynı içeriği farklı dillerde sunan siteler; talhaaslan.com bu gruba giriyor. İkinci olarak, aynı dilde farklı ülkelere hitap eden siteler; Almanya ve Avusturya için ayrı Almanca sayfalar gibi. Son olarak, bölgeye göre fiyat veya para birimi değişen e-ticaret siteleri.

Peki kısmen çok dilli siteler ne yapmalı? Örneğin yalnız ana sayfası ve iletişim sayfası İngilizce olan bir site, etiketi sadece bu iki sayfaya koyar. Geri kalan sayfalarda etiket olmaz ve bu bir hata değildir. Çok dilli teknik SEO kurulumunda en çok bu karar noktasında yardımcı oluyorum; ayrıntı için SEO danışmanlığı sayfasına bakabilirsiniz.

Hreflang etiketi nasıl yazarsınız?

Hreflang etiketi üç parçadan oluşur: rel="alternate" ifadesi, hreflang="kod" değeri ve href="mutlak URL" adresi. Kod bölümünde önce dil kodu, isteğe bağlı olarak tire ve bölge kodu gelir. Örneğin "tr" yalnız Türkçe demektir; "en-GB" Birleşik Krallık'taki İngilizce konuşanları, "de-AT" ise Avusturya'daki Almanca konuşanları hedefler.

Hreflang etiketi sözdiziminde üç kural var. Birincisi, href değeri mutlak olmalı; "/en/" gibi göreli adresler geçersizdir. İkincisi, adres tam olarak canlı URL ile aynı olmalı; sondaki eğik çizgi bile fark yaratır. Üçüncüsü, etiket head bölümünde durmalı; body içine yazılan hreflang satırını Google okumaz.

Kendi sitemden bir satır örneği vereyim: <link rel="alternate" hreflang="en" href="https://talhaaslan.com/en/">. Bu satır Türkçe ana sayfamda durur ve İngilizce sürümü gösterir. Ayrıca aynı satırın Türkçe ve Almanca karşılıkları ile bir x-default satırı da aynı head içinde yer alır. Dört satırlık bu bloğu ileride tam hâliyle göstereceğim.

Kısacası hreflang etiketi yazmak zor değildir; zor olan, yüzlerce sayfada bu satırları tutarlı tutmaktır. Bu nedenle ben etiketleri elle değil, şablondan veya araçtan üretmeyi öneriyorum. Bir sonraki bölümde kodların nasıl seçildiğine, yani en sık yapılan kod hatalarına bakalım.

Dil kodu ile bölge kodunu nasıl seçersiniz?

Dil kodunu ISO 639-1 listesinden, bölge kodunu ISO 3166-1 Alpha 2 listesinden seçersiniz. İlki iki harfli ve küçük harflidir: tr, en, de. Bölge kodu da iki harflidir ve çoğunlukla büyük harfle yazarsınız: TR, GB, AT. Google, aynı resmi belgede ülke kodundan dili otomatik türetmediğini açıkça yazar.

Bu cümle hreflang etiketi yazarken şu anlama geliyor: hreflang="TR" ya da hreflang="AT" yazamazsınız. Ülke kodu tek başına geçersizdir; her zaman dil kodu önde olmalı. Ayrıca en sık gördüğüm hata "en-UK" yazımıdır. Birleşik Krallık'ın ISO kodu GB'dir, dolayısıyla doğru yazım "en-GB" olur. Google "en-UK" satırını sessizce yok sayar ve siz fark etmezsiniz.

Peki "tr" ile "tr-TR" arasındaki fark ne? "tr", dünyanın neresinde olursa olsun Türkçe konuşan herkesi hedefler. "tr-TR" ise yalnız Türkiye'deki Türkçe konuşanları hedefler. Örneğin Almanya'da yaşayan ve Türkçe arama yapan bir kullanıcı için "tr" satırı çalışır, "tr-TR" satırı ise çalışmayabilir. Bu yüzden tek Türkçe sürümünüz varsa "tr" yazmanız daha güvenlidir.

  • Doğru: tr, en, de, en-GB, de-AT, tr-DE, es-MX.
  • Yanlış: en-UK, TR, de-de (küçük harf çalışır ama tutarsızlık yaratır), tr_TR (alt çizgi geçersizdir).
  • Kural: dil kodu her zaman önde; bölge kodu isteğe bağlı ve ancak gerçekten bölgesel fark varsa.

Hreflang x-default nedir, hangi sayfayı göstermeli?

Hreflang x-default, hiçbir dil veya bölge satırıyla eşleşmeyen kullanıcılara özel bir değerdir. Google bu değeri dil seçici sayfalar ve otomatik yönlendiren ana sayfalar için önerir. Yani Japonya'dan gelen bir kullanıcı sitenizde Japonca sürüm bulamayınca Google ona x-default satırındaki sayfayı gösterir.

Hangi sayfayı göstermeli sorusuna benim cevabım net: en geniş kitleye hitap eden sürümü. Küresel bir marka için bu genellikle İngilizce sayfadır. Ancak talhaaslan.com'da x-default olarak Türkçe kök sayfayı seçtim; çünkü hedef kitlemin büyük bölümü Türkiye'de ve kök alan adı zaten Türkçe. Bu kararı kendi trafiğinize göre vermelisiniz.

Ayrıca x-default'un ikinci bir faydası var. Google Search Central blogu, Mayıs 2023 tarihli "x-default nasıl yardımcı olur" yazısında bu değerin Googlebot'un başka türlü görmeyebileceği URL'leri keşfetmesine de yardım ettiğini yazar. Dolayısıyla x-default yalnız dil seçici için değil, keşif için de değerlidir.

Öte yandan Ahrefs'in geniş çaplı çalışmasına göre hreflang kullanan sitelerin yüzde 56,3'ünde x-default satırı eksik. Bu, listedeki en yaygın sorun. Üstelik çözümü tek satır: her sayfaya bir x-default ekleyin ve bu satırın hangi sayfayı gösterdiğini tüm sitede tutarlı tutun.

Hreflang'ı hangi yöntemle eklemelisiniz: HTML, HTTP başlığı, sitemap?

Google üç yöntemi eşdeğer kabul eder: HTML head içindeki link etiketi, HTTP yanıtındaki Link başlığı ve XML site haritasındaki xhtml:link öğeleri. Üçünü aynı anda kullanmak ek fayda sağlamaz; hatta tutarsızlık riskini artırır. Bu nedenle tek bir yöntem seçip ona sadık kalmanızı öneririm. Aşağıdaki tablo seçimi kolaylaştırır.

YöntemNeredeUygun olduğu durumBakım yüküDezavantaj
HTML link etiketiHer sayfanın head bölümüKüçük ve orta siteler, tek şablonlu yapılarDüşük; şablon üretirSayfa sayısı arttıkça head şişer
HTTP Link başlığıSunucu yanıt başlığıPDF gibi HTML olmayan dosyalarOrta; sunucu yapılandırması gerekirTarayıcıda görünmez, test etmesi zordur
XML site haritasısitemap.xml içindeki xhtml:linkBinlerce sayfalı büyük sitelerDüşük; tek dosyadan yönetirsinizSayfa kodunda görünmez, unutulmaya açıktır

Kendi sitemde HTML yöntemini kullanıyorum; çünkü sayfa sayısı yönetilebilir ve her sayfa aynı şablondan çıkıyor. Ancak binlerce ürünü olan bir e-ticaret sitesinde site haritası yöntemini tercih ederim. Örneğin PDF katalog yayınlayan bir üretici firma için ise HTTP başlığı tek seçenektir. Yani doğru yöntem yoktur, sitenize uygun yöntem vardır.

HTML head'de hreflang etiketini nasıl eklersiniz?

HTML yönteminde her sayfanın head bölümüne, sitedeki sürüm sayısı kadar satır artı bir x-default satırı eklersiniz. Üç dilli talhaaslan.com'da bu, her sayfada dört satır demek. Aşağıda Türkçe ana sayfamın head bölümündeki gerçek blok yer alıyor; İngilizce ve Almanca sayfalarda da aynı dört satırı aynen kullanıyorum.

  • <link rel="alternate" hreflang="tr" href="https://talhaaslan.com/">
  • <link rel="alternate" hreflang="en" href="https://talhaaslan.com/en/">
  • <link rel="alternate" hreflang="de" href="https://talhaaslan.com/de/">
  • <link rel="alternate" hreflang="x-default" href="https://talhaaslan.com/">

Bloğun mantığı basit: ilk satır sayfanın kendisini gösterir, sonraki iki satır diğer dilleri, son satır ise eşleşmeyen kullanıcılar için varsayılanı. Dikkat ederseniz Türkçe sayfa kendisini de listeliyor. Bu öz referans zorunludur ve ileride ayrı bir bölümde nedenini anlatacağım. Ayrıca her adres mutlak ve sondaki eğik çizgiyi de içeriyor.

Hreflang etiketi satırlarını elle yazmak yerine sitedeki hreflang oluşturucu aracını kullanabilirsiniz; dil ve adresleri girersiniz, dört satır hatasız çıkar. Bu sayede en-UK gibi kod hatalarını da baştan önlersiniz. Kısacası HTML yöntemi küçük sitelerde en şeffaf yoldur; kaynak koda bakan herkes etiketi görür ve denetler.

XML sitemap ile hreflang nasıl verirsiniz?

Site haritası yönteminde her url öğesinin içine, o sayfanın tüm dil sürümlerini listeleyen xhtml:link alt öğeleri koyarsınız. Her sürüm için ayrı bir url öğesi açar ve her birinin içinde aynı sürüm listesini tekrarlarsınız. Google, xhtml:link alt öğelerinin site haritası URL limitine sayılmadığını belgesinde açıkça belirtir.

Bu yöntemin gücü, ölçekte ortaya çıkıyor. Örnek hesap: 3 dilde 40 sayfanız olsun; bu 120 URL demek. Her sayfada 4 hreflang satırı bulunacağından toplam 480 bağlantı yönetirsiniz. HTML yönteminde bu 480 satırı 120 ayrı sayfanın kodunda tutarsınız. Site haritası yönteminde ise hepsi tek dosyada durur ve tek seferde denetlenebilir.

Ayrıca bir sayfa silindiğinde ne olduğunu düşünün. Aynı örnekte İngilizce bir sayfayı kaldırırsanız Türkçe ve Almanca karşılıklarındaki İngilizce satır kırık kalır, üstelik silinen sayfanın kendi dört satırı da boşa düşer. Site haritasında bu düzeltme tek dosyada üç dakika sürer; HTML yönteminde ise iki sayfanın kodunu ayrı ayrı açmanız gerekir.

Site haritasını sıfırdan kuracaksanız XML sitemap oluşturucu aracıyla temel dosyayı üretip xhtml:link satırlarını eklemeniz yeterli. Ancak dosyanın başında xhtml ad alanını tanımlamayı unutmayın; aksi hâlde Google site haritasını geçersiz sayar. Bu detay, gördüğüm sitemap tabanlı hreflang hatalarının büyük bölümünü açıklıyor.

Karşılıklı bağlantı kuralı neden bu kadar kritik?

Karşılıklı bağlantı kuralı, hreflang'ın çalışıp çalışmadığını belirleyen tek kuraldır. Google'ın resmi ifadesi net: iki sayfa birbirini karşılıklı göstermezse Google etiketleri yok sayar. Yani Türkçe sayfa İngilizce sürümü gösterirken İngilizce sayfa Türkçe sürümü göstermezse, iki taraftaki etiket de çalışmaz. Kural, sahtekârlığı önlemek için var; kimse başkasının sayfasını kendi çevirisi olarak gösteremesin diye.

Küçük sitelerde en sık bu hatayı görüyorum. Senaryo hep aynı: site sahibi İngilizce sayfayı sonradan ekler, İngilizce şablona hreflang koyar, ancak Türkçe şablonu güncellemeyi unutur. Sonuç olarak İngilizce sayfa Türkçeyi gösterir, Türkçe sayfa İngilizceyi göstermez ve Google ikisini de yok sayar. Ahrefs verisine göre hreflang kullanan sitelerin yüzde 15,3'ünde bu karşılıklı etiket eksikliği var.

Çözüm, hreflang etiketi satırlarını sayfa sayfa değil, grup grup düşünmektir. Bir sayfa grubu, birbirinin çevirisi olan tüm sürümlerden oluşur ve gruptaki her sayfa aynı satır listesini taşır. Bu yüzden ben etiket bloğunu tek bir kaynaktan üretip her dil şablonuna aynı bloğu basıyorum. Böylece bir sürüm eklendiğinde veya silindiğinde tek yerde değişiklik yapıyorum.

Öz referans neden gerekli?

Öz referans, sayfanın kendi hreflang listesinde kendisini de göstermesidir ve Google bunu zorunlu tutar. Resmi belgede kural şöyle geçer: her dil sürümü hem kendisini hem diğer tüm sürümleri listelemeli. Dolayısıyla Türkçe sayfadaki dört satırdan biri yine Türkçe sayfayı gösterir. İlk bakışta gereksiz görünen bu satır, aslında grubun bütünlüğünü sağlar.

Nedenini şöyle düşünün: Google her sayfadaki listeyi bağımsız okur ve listeleri birbiriyle karşılaştırır. Türkçe sayfa kendisini listelemezse, İngilizce sayfadaki "tr" satırı ile Türkçe sayfadaki liste birbirini tam tutmaz. Yani grup eksik kalır. Ahrefs çalışmasında öz referans eksikliği yüzde 18 ile ikinci sırada; bu oran, kuralın ne kadar sık atlandığını gösteriyor.

Pratikte öz referansı unutmamanın en kolay yolu, etiket bloğunu sürüm listesinden otomatik üretmektir. Şablon her sayfada aynı dört satırı bastığında, sayfanın kendisi listede zaten yer alır. Ayrıca bu yaklaşım bir sayfada "kendi satırı yanlış" hatasını da önler; çünkü satır, sayfanın gerçek adresinden değil, ortak listeden gelir.

Hreflang ile canonical birlikte nasıl çalışır?

Hreflang ile canonical birlikte çalışırken kural tektir: her dil sürümü kendi canonical'ına sahip olur ve hreflang satırları yalnız canonical adreslere işaret eder. Yani Türkçe sayfanın canonical'ı Türkçe sayfadır, İngilizce sayfanın canonical'ı İngilizce sayfadır. Çevirileri tek bir canonical'a bağlamak en sık gördüğüm yapısal hatadır.

Hata şöyle oluşuyor: bazı eklentiler veya geliştiriciler "asıl içerik Türkçe" diye düşünüp İngilizce sayfanın canonical'ını Türkçe sayfaya yönlendiriyor. Bu durumda Google İngilizce sayfayı kopya sayar ve dizinden düşürür. Ardından hreflang satırı dizinde olmayan bir sayfayı gösterir ve etiket boşa düşer. Ahrefs verisinde kanonik olmayan URL'ye işaret etme oranı yüzde 8.

Kontrol için üç adımlık bir yöntem uyguluyorum. İlk olarak her dil sayfasının canonical değerini kendi adresiyle karşılaştırırım. Daha sonra hreflang satırlarındaki adreslerin, hedef sayfanın canonical'ıyla birebir aynı olduğunu doğrularım. Son olarak parametreli veya sondaki eğik çizgisi eksik adresleri temizlerim. Canonical ve meta satırlarını hızlıca üretmek için meta tag oluşturucu aracını kullanabilirsiniz.

Çok dilli site için URL yapısını nasıl seçersiniz?

URL yapısını seçerken üç seçeneğiniz var: ülke kodlu alan adı, alt alan adı ve alt dizin. Google, çok bölgeli siteler belgesinde üçünü karşılaştırır. Ülke kodlu alan adı net coğrafi sinyal verir ama pahalıdır; alt alan adı kurulumu kolaydır ama kullanıcı hedefi URL'den anlamayabilir; alt dizin ise kurulumu kolay ve bakımı düşük seçenektir.

YapıÖrnekCoğrafi sinyalMaliyetOtorite paylaşımı
Ülke kodlu alan adısite.de, site.com.trGüçlü, tek ülkeYüksek; her alan adı ayrıYok; her site sıfırdan başlar
Alt alan adıde.site.comZayıf; ayar isterOrta; ayrı barındırma mümkünKısmi; Google ayrı site gibi görebilir
Alt dizinsite.com/de/Zayıf; ayar isterDüşük; tek siteTam; ana alan adının gücünü paylaşır

Ben talhaaslan.com'da alt dizin yapısını seçtim: kök Türkçe, /en/ İngilizce, /de/ Almanca. Sebep, otorite paylaşımı; üç dil tek alan adının bağlantı gücünü paylaşıyor. Ancak yalnız Almanya'ya satan ve orada mağazası olan bir marka için site.de daha mantıklı olabilir. Sitesini baştan çok dilli kurmak isteyen müşterilerle bu kararı web tasarım aşamasında veriyorum; sonradan yapı değiştirmek her zaman pahalıdır.

IP'ye göre otomatik yönlendirme neden zararlı?

IP'ye göre otomatik yönlendirme zararlıdır; çünkü Googlebot çoğunlukla Amerika Birleşik Devletleri'nden tarar ve otomatik yönlendirme onu hep aynı sürüme götürür. Sonuç olarak Türkçe ve Almanca sayfalarınızı hiç göremeyebilir. Google bu konuda açık konuşur: kullanıcıları bir dil sürümünden başka bir dil sürümüne otomatik yönlendirmekten kaçının.

Kullanıcı tarafında da sorun var. Örneğin Almanya'da yaşayan ve Türkçe okuyan bir kullanıcı, IP'si yüzünden Almanca sayfaya düşer. Oysa hreflang tam bu durumu çözmek için var: Google, tarayıcı dili ve arama diline göre doğru sürümü zaten gösterir. Yönlendirme, arama motorunun verdiği doğru kararı bozar.

Peki alternatif ne? Ben dil önerisi bandını tercih ediyorum. Kullanıcı Almanca tarayıcıyla Türkçe sayfaya gelirse üstte küçük bir şerit "Diese Seite gibt es auch auf Deutsch" der ve bağlantı sunar. Kullanıcı isterse tıklar, istemezse kapatır. Böylece hem Googlebot her sürümü tarar hem de kullanıcı tercihini korursunuz.

  1. Sunucu tarafındaki IP yönlendirmesini kapatın.
  2. Her dil sürümünü kendi adresinde, yönlendirmesiz yayınlayın.
  3. Dil seçiciyi göz önünde bir yere koyun; tercihen üst menüye.
  4. İsteğe bağlı dil önerisi bandı ekleyin ve kullanıcı tercihini çerezde saklayın.

Hreflang hatalarını nasıl bulur ve test edersiniz?

Hreflang hatalarını bugün yalnız tarayıcı araçlarıyla bulabilirsiniz; çünkü Google Search Console'daki Uluslararası Hedefleme raporu 2022'de kalktı. Google, yardım sayfasında etiketleri desteklemeye ve kullanmaya devam edeceğini söylüyor. Yani etiket çalışıyor; ancak hatasını size gösteren resmi bir panel artık yok.

Bu yüzden ben beş adımlı bir sözdizimi kontrolü uyguluyorum. Her yeni dil sürümü yayına girdiğinde bu listeyi baştan sona geçerim; işlem küçük bir sitede yarım saat sürer.

  1. Kod doğru mu: dil kodu önde, bölge kodu ISO listesinde, alt çizgi yok.
  2. URL mutlak mı: her href "https://" ile başlıyor ve canlı adresle birebir aynı.
  3. Adres 200 dönüyor mu: yönlendirme veya 404 yok.
  4. Karşılık var mı: hedef sayfa da bu sayfayı listeliyor.
  5. Canonical eşleşiyor mu: satırdaki adres, hedef sayfanın canonical'ı ile aynı.

Üçüncü adım için yönlendirme denetleyici aracıyla her hreflang adresinin 200 döndüğünü tek tek kontrol edebilirsiniz. Ayrıca yeni satır üretirken hreflang oluşturucuyu kullanırsanız ilk iki adımı baştan geçmiş olursunuz. Büyük sitelerde ise masaüstü tarayıcı yazılımları tüm siteyi gezip karşılıksız ve kırık satırları raporlar.

En sık yapılan hreflang hataları nelerdir?

En sık yapılan hreflang hataları, Ahrefs'in 374.756 alan adını kapsayan hreflang çalışmasında net biçimde yer alıyor. Çalışmaya göre etiketi kullanan sitelerin yüzde 67'sinde en az bir sorun var. Yani üç siteden ikisi etiketi bir şekilde yanlış kuruyor. Aşağıda her hatayı oranıyla ve tek cümlelik çözümüyle listeledim.

  • Eksik x-default (yüzde 56,3): her sayfaya varsayılan sürümü gösteren bir x-default satırı ekleyin.
  • Eksik öz referans (yüzde 18): her sayfa kendi adresini de listelesin; bloğu ortak listeden üretin.
  • Yönlendirme veya kırık adres (yüzde 16,9): satırlardaki adresleri 200 döndürecek şekilde güncelleyin.
  • Karşılıklı etiket eksikliği (yüzde 15,3): sürüm eklerken tüm dillerin şablonunu aynı anda güncelleyin.
  • Kanonik olmayan adrese işaret (yüzde 8): hreflang satırlarını hedef sayfanın canonical'ıyla eşitleyin.
  • Hatalı dil veya ülke kodu (yüzde 4,6): kodları ISO listesinden doğrulayın; en-UK yerine en-GB yazın.

Listedeki ilk iki hata, teknik değil, dikkat hatasıdır. Dolayısıyla şablondan otomatik üretim ikisini birden çözer. Üçüncü ve dördüncü hata ise site büyüdükçe ortaya çıkar; sayfa silme ve taşıma işlemleri satırları sessizce kırar. Bu nedenle her içerik değişikliğinden sonra beş adımlı kontrolü tekrar etmeniz gerekir.

Hreflang etiketi Bing'de nasıl çalışır?

Hreflang etiketi Bing'de çalışır; ancak Google'daki kadar güçlü bir sinyal değildir. Microsoft Bing ekibinden Fabrice Canal, 10 Eylül 2020'de hreflang'ın Bing'de content-language etiketinden çok daha zayıf bir sinyal olduğunu söyledi. Yani Bing, sayfanın dilini anlamak için önce başka bir etikete bakıyor.

Bu nedenle Bing için ek bir satır öneriyorum: head bölümüne <meta http-equiv="content-language" content="tr"> ekleyin. Satır, Google için bir şey değiştirmez; ama Bing'in dil algısını netleştirir. Türkiye'de Bing payı küçük olsa da Almanya ve Amerika'daki masaüstü kullanıcılarda hâlâ dikkate değer bir kitlesi var.

Ayrıca html etiketindeki lang özniteliğini de doğru tutun. Google bu özniteliği dil tespitinde kullanmasa bile ekran okuyucular ve tarayıcılar kullanır. Kısacası üç satırlık bir paket düşünün: hreflang etiketi Google için, content-language Bing için, lang özniteliği erişilebilirlik için. Üçü birbiriyle çelişmediği sürece hepsini bir arada tutmanın zararı yoktur.

Aynı dilde farklı ülkeleri nasıl kurgularsınız?

Aynı dilde farklı ülkeler için dil kodunu sabit tutar, bölge kodunu değiştirirsiniz. Örneğin Almanya için de-DE, Avusturya için de-AT, İsviçre için de-CH satırları açarsınız. İçerik büyük ölçüde aynı olsa da fiyat, para birimi, teslimat süresi veya hukuki metin farklıysa ayrı sayfa ve ayrı satır hak eder.

Türkçe için de aynı mantık geçerli. Türkiye'deki kitle için tr-TR, Almanya'daki Türkçe konuşan kitle için tr-DE satırı açabilirsiniz. Teknik olarak iki sayfayı aynı dilde yazarsınız; ancak Almanya sürümünde euro fiyat, Almanya teslimatı ve Almanca müşteri hizmeti bilgisi yer alır. Bu senaryo özellikle Almanya'ya satış yapan Türk e-ticaret markaları için anlamlı.

Öte yandan iki uyarım var. Birincisi, içerik gerçekten farklı değilse ayrı sayfa açmayın; Google iki sayfayı kopya sayabilir ve yalnız birini dizine alır. İkincisi, bölgesel sürüm açtığınızda genel "tr" veya "de" satırını x-default gibi bir çatı olarak korumak isteyebilirsiniz; böylece listede olmayan ülkelerden gelen kullanıcılar boşa düşmez.

Örnek kurgu: bir mağazanın ürün sayfasında de-DE, de-AT, tr-TR, tr-DE ve x-default olmak üzere beş satır bulunabilir. Bu yapıyı kurmak için önce fiyat ve stok verisini ülkeye göre ayırmanız gerekir. Çok ülkeli mağaza kurulumunu e-ticaret danışmanlığı kapsamında planlıyorum; çünkü karar teknik değil, önce ticari.

Yarım çeviri sayfalarda hreflang etiketi vermeli misiniz?

Yarım çeviri sayfalarda hreflang etiketi vermemelisiniz; çünkü etiket, sayfaların birbirinin eşdeğeri olduğunu söyler. Yalnız başlığı ve menüsü İngilizce, gövdesi Türkçe kalmış bir "İngilizce" sayfa eşdeğer değildir. Google sayfanın dilini okurun gördüğü içerikten algoritmayla belirler; dolayısıyla o sayfayı zaten Türkçe sayar ve hreflang satırınız çelişki üretir.

Bu durumu sahada sık görüyorum. Özellikle otomatik çeviri eklentileri, sitedeki her sayfa için boş veya yarım bir İngilizce sürüm açar. Sonuç, yüzlerce yarım sayfa ve yüzlerce yanıltıcı hreflang satırı. Bu sayfalar dizine girse bile kullanıcıya kötü deneyim sunar ve dönüşüm getirmez. Yani eksik çeviri, hiç çeviri olmamasından daha zararlıdır.

Benim kuralım basit: bir sayfanın çevirisi tamamlanmadıysa o dil için satır açmayın. Örneğin talhaaslan.com'da KVKK aydınlatma metni ve mesafeli satış sözleşmesi yalnız Türkçe; bu sayfalarda hreflang bloğu yok ve bu bilinçli bir karar. Çeviri tamamlandığında satırı eklersiniz. Böylece Google'a hep doğru bilgi verirsiniz ve etiket güvenilirliğinizi korursunuz.

Hreflang kurulumu için adım adım kontrol listesi

Hreflang kurulumunu on adımda tamamlayabilirsiniz. Aşağıdaki liste, yeni bir dil sürümü açan her müşteriyle birlikte geçtiğim sıralamadır. Sırayı bozmadan ilerlerseniz karşılıklı bağlantı ve öz referans hataları kendiliğinden ortadan kalkar.

  1. URL yapısını seçin: alt dizin, alt alan adı veya ülke kodlu alan adı.
  2. Her dil sürümünün tam çevrildiğinden emin olun; yarım sayfalara satır açmayın.
  3. Dil ve bölge kodlarını ISO listesinden doğrulayın.
  4. Tek bir yöntem seçin: HTML, HTTP başlığı veya site haritası.
  5. Her sayfa grubu için ortak bir sürüm listesi oluşturun.
  6. Listeden her sayfaya öz referans dahil tüm satırları basın.
  7. Bir x-default satırı ekleyin ve tüm sitede aynı sayfayı gösterin.
  8. Her dil sayfasının canonical değerini kendi adresine ayarlayın.
  9. IP tabanlı otomatik yönlendirmeyi kapatın, dil seçici ekleyin.
  10. Beş adımlı sözdizimi kontrolünü yapın ve sonucu kaydedin.

Ayrıca her içerik değişikliğinden sonra listeyi kısaca tekrar geçin. Bir sayfa silindiğinde veya taşındığında yalnız o sayfa değil, gruptaki diğer sürümler de bundan pay alır. Bu yüzden kontrolü takvime bağlamanızı öneririm; küçük sitelerde ayda bir, büyük sitelerde her yayın sonrası yeterli.

Hreflang etiketi sıralamayı doğrudan yükseltir mi?

Hreflang etiketi sıralamayı doğrudan yükseltmez; sıralama sinyali değil, sürüm seçme sinyalidir. Google, sayfanın hangi sırada çıkacağına içerik ve bağlantı gibi sinyallerle karar verir; hreflang ise o sırada hangi dil sürümünün görüneceğini belirler. Bu ayrımı net koymak gerekiyor, çünkü etiketten sihir bekleyen çok müşteri gördüm.

Ancak dolaylı etkisi gerçektir. Yanlış dil sürümü gösterildiğinde kullanıcı sayfayı hemen terk eder ve dönüşüm düşer. Örneğin Almanya'dan gelen bir ziyaretçiye Türkçe fiyat sayfası çıkarsa satış ihtimali neredeyse sıfırdır. Doğru sürüm göründüğünde ise aynı ziyaretçi formu doldurur veya arar. Yani etiket sıralamayı değil, sıralamadan gelen trafiğin verimini artırır.

Ayrıca hreflang etiketi, dil sürümlerinin birbiriyle rekabet etmesini önler. Hreflang olmadan Google iki sürümü kopya sayabilir ve yalnız birini gösterir. Sonuç olarak hreflang etiketi, çok dilli bir sitenin en az maliyetli ve en yüksek getirili teknik ayarlarından biridir. Kurulumda takıldığınız bir nokta olursa iletişim sayfasından bana yazabilirsiniz; sitenizin mevcut etiketlerini birlikte gözden geçiririz.

Sıkça Sorulan Sorular

Hreflang etiketi nereye eklenir?
Hreflang etiketi sayfanın HTML head bölümüne, link rel="alternate" biçiminde eklenir; body içine yazılan satırı Google okumaz. Alternatif olarak aynı bilgiyi HTTP Link başlığında veya XML site haritasındaki xhtml:link öğelerinde verebilirsiniz. Üç yöntem eşdeğerdir; ancak tek birini seçip tüm sitede tutarlı kullanmanız gerekir. Küçük sitelerde HTML, binlerce sayfalı sitelerde site haritası daha pratik bir seçimdir.
Hreflang x-default ne demek?
x-default, hiçbir dil veya bölge satırıyla eşleşmeyen kullanıcılara gösterilecek varsayılan sayfayı belirten özel hreflang değeridir. Google bu değeri dil seçici sayfalar ve otomatik yönlendiren ana sayfalar için önerir. Ayrıca Googlebot'un başka türlü göremeyeceği adresleri keşfetmesine yardım eder. Genellikle en geniş kitleye hitap eden sürümü, yani küresel sitelerde İngilizce sayfayı x-default olarak seçersiniz.
Hreflang mı canonical mı, ikisi birlikte kullanılır mı?
İkisi birlikte kullanılır; çünkü farklı sorulara cevap verirler. Canonical, aynı içeriğin kopyaları arasından asıl sayfayı seçer; hreflang ise farklı dillerdeki eşdeğer sayfaları birbirine bağlar. Kural şudur: her dil sürümünün canonical değeri kendisini gösterir, hreflang satırları ise yalnız canonical adreslere işaret eder. Çevirileri tek bir canonical'a bağlarsanız Google diğer sürümleri kopya sayar ve dizinden düşürür.
Hreflang etiketi olmadan çok dilli site sıralanır mı?
Evet, sıralanır; çünkü Google sayfanın dilini hreflang'dan değil, görünür içerikten algoritmayla belirler. Ancak etiket olmadan yanlış dil sürümünün gösterilme riski artar ve dil sürümleri birbiriyle rekabet edebilir. Örneğin Almanya'daki kullanıcıya Türkçe sayfa çıkabilir, bu da dönüşümü düşürür. Yani etiket sıralama için şart değildir; ama doğru sürümü doğru kullanıcıya göstermek için gereklidir.
WordPress'te hreflang nasıl eklenir?
WordPress'te çok dilli eklentiler hreflang satırlarını genellikle otomatik üretir; WPML, Polylang ve benzeri araçlar her çeviri çiftini eşleştirip head bölümüne satırları yazar. Bazı SEO eklentileri de bu çıktıyı tamamlar. Ancak otomatik üretim, karşılıklı bağlantı ve x-default hatalarını tamamen önlemez. Bu yüzden kurulumdan sonra kaynak kodu açıp her dil sayfasında öz referans, karşılık ve x-default satırlarının bulunduğunu elle doğrulamanızı öneririm.
Hreflang hataları nasıl kontrol edilir?
Hreflang hatalarını tarayıcı araçlarıyla ve beş adımlı sözdizimi kontrolüyle bulursunuz; Search Console'daki Uluslararası Hedefleme raporu 2022'de kalktığı için resmi bir panel artık yok. Sırasıyla dil kodunu, adresin mutlak olup olmadığını, 200 dönüp dönmediğini, karşılık satırının varlığını ve canonical eşleşmesini kontrol edin. Sitedeki hreflang oluşturucu ve yönlendirme denetleyici araçları bu adımların çoğunu birkaç dakikaya indirir.
#hreflang#çok dilli SEO#uluslararası SEO#x-default#canonical#teknik SEO#XML sitemap
Paylaş:
Talha Aslan
Talha Aslan

Google Partner dijital pazarlama uzmanı. 2012’den beri SEO, Google Ads, web tasarım ve e-ticaret projelerinde sahada; bu blogda gördüğünüz her yazı o deneyimden çıkar.

Sıradaki proje

Projenizi konuşalım.

Aracı yok, katman yok: doğrudan işi yapacak uzmanla konuşursunuz. İlk istişare ücretsizdir; hedefinizi dinler, net bir yol haritasıyla dönerim.

WhatsApp Hemen Ara