Google'ın iki dilli içeriğinizi anlamasını sağlamanın tam rehberi — hreflang etiketleri, x-default, canonical URL'ler ve sıralamalarınızı batıran yaygın hatalar.
Çokdilli SEO Problemi
Ayni icerigini iki dilde ayni alan adinda yayinladiginizda, arama motorlari bir ikilemle karsilasir: hangi surum hangi kitle için siralanmali? Acik sinyaller olmadan Google, Turkce sayfanizi Ingilizce konusanlara gosterebilir veya daha kotusu, her iki surumu de yinelenen içerik olarak degerlendirip her ikisinin de sıralamalarini cezalandirir.
Bu sorunla doğrudan JekCMS pazarlama sitesinde (jekcms.alfadizayn.com) karsilastik — her sayfayi hem Turkce hem Ingilizce olarak sunar. Blog yazilari, dokumantasyon, özellik sayfalari — her sey ayni alan adinda iki dilde bulunur, URL yapısıyla ayirt edilir. 12 iki dilli siteden olusan agimizda farkli yaklasimlari alti ay test ettikten sonra, Google Arama sonuçlarinda tutarli olarak dogru dil hedeflemesi sunan bir sisteme ulastik.
Bu rehber her teknik karari belgeliyor, neyin isleyip neyin işlemedigini gosteren gerçek Search Console verileriyle.
URL Yapisi: Alt Dizin mi, Alt Alan mi, Parametre mi
Çokdilli URL'ler için uc standart yaklasim vardir:
example.com/en/about— Alt dizin (bizim secimimiz)en.example.com/about— Alt alanexample.com/about?lang=en— Parametre (bundan kacinin)
Alt dizinler kullaniyoruz cunku alan adi otoritesini birlestirir. Herhangi bir dil surumune gelen her geri bağlantı tum alan adini guclendirir. Alt alanlar otoriteyi boler — Google bazen bunlari ayri siteler olarak degerlendirir. Parametreler en kotu secenektir cunku Google genellikle indeksleme amacliyla URL parametrelerini yok sayar.
hreflang Uygulamasi
hreflang ozelligi arama motorlarina bir sayfanin hangi dili ve bolgeyi hedefedigini soyler. Birden fazla dilde mevcut olan her sayfa, kendisi dahil tum mevcut surumlere işaret eden hreflang etiketleri icermelidir.
JekCMS'in header.php dosyasindan uygulama:
function output_hreflang_tags($currentLang, $slugEn, $slugTr) {
$baseUrl = rtrim(SITE_URL, '/');
$trUrl = $baseUrl . '/blog/' . $slugTr;
$enUrl = $baseUrl . '/en/blog/' . $slugEn;
echo '<link rel="alternate" hreflang="tr" href="' . $trUrl . '" />' . "
";
echo '<link rel="alternate" hreflang="en" href="' . $enUrl . '" />' . "
";
echo '<link rel="alternate" hreflang="x-default" href="' . $trUrl . '" />' . "
";
}
Bu uygulamadaki uc kritik detay:
- Kendine referans: Turkce sayfa kendisine işaret eden bir hreflang icerir (
hreflang="tr"). Google bunu gerektirir — her sayfa kendi surumu dahil tum dil surumlerine referans vermalidir. - Cift yonlu: Hem Turkce hem Ingilizce sayfalarin tamamen ayni hreflang etiketi setini icermesi gerekir. Turkce sayfa Ingilizce surumu gosterir ama Ingilizce sayfa geri gostermezse, Google sinyali yok sayar.
- x-default: Bu, arama motorlarina baska hicbir hreflang kullanıcınin diliyle eslesmedignde hangi surumun gosterilecegini soyler. Birincil kitlemiz oldugundan Turkce'ye ayarladik.
Canonical URL'ler: Dil Basina Bir Tane
Yaygin bir hata, her iki dil surumu için tek bir canonical URL kullanmaktir. Bu, Google'a bir surumun "orijinal" ve digerinin bir kopya oldugunu soyler — tam olarak istediginizin tersi.
Her dil surumu kendi kendine işaret eden kendi canonical URL'sine sahip olmalidir. JekCMS'de canonical etiketi mevcut dile gore dinamik olarak oluşturulur. strtok($url, '?') cagrisi herhangi bir sorgu parametresini cikarir. Bu, sayfalama parametrelerinin, UTM izleme kodlarinin veya sıralama parametrelerinin yinelenen canonical URL'ler oluşturmasini onler.
Dil Bazli Sitemap'ler
Google, sitemap'inizde hreflang açıklamalarini HTML'nin yani sira eklemenizi onerir. Bu ikinci bir sinyal sağlar ve Google'in HTML'yi taramadan once sitemap üzerinden buldugu sayfalar için dil varyantlarini kesfetmesine yardimci olur.
Hem Turkce hem Ingilizce URL girişlerinin hreflang açıklamalarinin tam setini icerdigine dikkat edin. Her URL girişi, HTML uygulamasindaki gibi tum dil varyantlarina referans vermalidir.
JekCMS bu sitemap'i dinamik olarak oluşturur. Veritabanindan tum yayinlanmis yazilari ceker ve her biri için hem Turkce hem Ingilizce URL girişlerini tam hreflang setleriyle uretir.
Open Graph ve Sosyal Paylasim
Sosyal medya platformlari, bağlantı on izlemeleri oluşturmak için Open Graph etiketlerini kullanir. Iki dilli içerik için dile ozgu OG etiketlerine ihtiyaciniz var:
<!-- Turkce sayfa -->
<meta property="og:locale" content="tr_TR" />
<meta property="og:locale:alternate" content="en_US" />
<!-- Ingilizce sayfa -->
<meta property="og:locale" content="en_US" />
<meta property="og:locale:alternate" content="tr_TR" />
og:locale etiketi sadece dil kodu yerine tam yerel ayar kodunu (ornegin tr_TR) kullanir. og:locale:alternate etiketi platformlara baska bir dil surumunun var oldugunu soyler.
Yaygin Hatalar ve Nasil Kacinilir
12 iki dilli JekCMS sitesinde hreflang uyguladiktan ve alti ay boyunca Search Console'u izledikten sonra, karsilastigimiz en yaygin hatalar:
Hata 1: Eksik Donus Bağlantılari
Turkce sayfada Ingilizce surume işaret eden hreflang="en" var, ama Ingilizce sayfada geri işaret eden hreflang="tr" yok. Google onaylanmamis hreflang sinyallerini yok sayar. Her iki sayfa birbirine referans vermalidir.
Hata 2: Yanlis Dil Kodlari
hreflang="tr" yerine hreflang="tr-TR" kullanmak. Bolge alt etiketi (-TR) yalnizca ayni dilin birden fazla bolgesel varyantina sahip oldugunuzda gereklidir. Bolgesel hedefleme olmayan Turkce ve Ingilizce için sadece tr ve en kullanin.
Hata 3: Canonical Olmayan URL'lerde hreflang
Bir sayfa baska bir URL'ye yönlendirme (301) yapiyorsa, hreflang etiketleri yönlendirme yapan URL'de degil, son hedef URL'de olmalidir.
Hata 4: Diller Arasinda Farkli İçerik
Google, hreflang ile bağlantıli sayfalarin birbirinin cevirileri olmasini bekler, tamamen farkli içerik degil. Ingilizce "Hakkimizda" sayfaniz Turkce sayfanizdan farkli bilgilere sahipse, Google hreflang bağlantısini yok sayabilir.
Hata 5: Canonical ve hreflang Sinyallerini Karistirma
Ingilizce sayfanin canonical'ini Turkce sayfaya işaret edecek sekilde ayarlarken hreflang etiketleri de kullanmak bir catisma oluşturur. Canonical "Turkce sayfa orijinaldir" der, hreflang ise "bunlar esit alternatiflerdir" der. Her dil surumu için canonical'i kendine referansli tutun.
Google Search Console Dogrulamasi
hreflang etiketlerini dagittiktan sonra Google Search Console üzerinden doğrulayin:
- Search Console > Uluslararasi Hedefleme'ye gidin
- hreflang hatalari için Dil sekmesini kontrol edin
- Yaygin hatalar: "Donus etiketi yok", "Bilinmeyen dil kodu", "Canonical olmayan sayfada etiket"
- Belirli sayfalarin dogru hreflang açıklamalarini gosterdigini doğrulamak için URL Denetimi'ni kullanin
Google'in hreflang degisikliklerini tam olarak işlemesi 2-4 hafta surer. Bu donem boyunca, Google hangi sorgu için hangi surumu gosterecegini yeniden degerlendirdikce gecici sıralama dalgalanmalari gorebilirsiniz. Bu ayarlama doneminde panikleyip degisiklik yapmayin.
12 sitemizde bu eksiksiz hreflang kurulumunu uyguladiktan sonra, 6 hafta icinde Ingilizce konusan ulkelerden gelen organik trafikte ortalama %23 artis gorduk — sadece Google'in Ingilizce aramacilar için Turkce surum yerine Ingilizce surumu gostermesiyle.
Uygulamanizi Test Etme
Search Console'a guenmeden once (gecikmelidir), uygulamanizi hemen su yontemlerle test edin:
- Sayfa kaynagini görüntuleyin:
<head>bolumunde hem hreflang etiketlerinin hem canonical etiketlerin mevcut oldugunu kontrol edin - Google'in Zengin Sonuclar Testi: URL'nizi girin ve oluşturulan HTML'yi hreflang etiketleri için inceleyin
- Screaming Frog: Sitenizi tarayin ve tutarsizliklar için hreflang raporunu kontrol edin
- Manuel capraz kontrol: Turkce sayfayi ziyaret edin, hreflang URL'lerini not edin, sonra her URL'yi ziyaret edin ve donus hreflang etiketleri oldugunu doğrulayin
Çokdilli SEO, uygulamada hassasiyet gerektirir ancak getirisi onemlidir. Her dil surumu hedef dilindeki sorgular için bağımsız olarak siralanabilir ve herhangi bir yinelenen içerik sorunu oluşturmadan organik arama görünürluguluzmu etkili bir sekilde iki katina cikarir.