Hreflang Nasıl Uygulanır? Çok Dilli SEO İçin Eksiksiz Rehber
Hreflang Nedir ve Neden Kritiktir?
Hreflang, Google'a aynı içeriğin hangi dil veya bölge varyantlarının var olduğunu bildiren bir HTML/HTTP/sitemap etiketidir. Doğru uygulanmadığında Google yanlış dil sayfasını yanlış ülkeye gösterir; bu da bounce rate artışı, dönüşüm kaybı ve zaman içinde organik sıralama düşüşüne yol açar.
Örnek senaryo: Türkçe ve İngilizce içeriğiniz var. Hreflang yoksa Google, ABD'deki bir kullanıcıya Türkçe sayfanızı gösterebilir. Bu kullanıcı geri döner → bounce signal → sıralama kaybı.
Hreflang Sözdizimi
Temel format şöyledir:
<link rel="alternate" hreflang="DILD-ÜLKE" href="https://example.com/sayfa/" />
Dil kodu ISO 639-1 standardını (iki harfli: tr, en, de, fr), ülke kodu ISO 3166-1 Alpha-2 standardını (iki harfli: TR, US, GB, DE) kullanır. İkisi birlikte tr-TR, en-US, en-GB şeklinde kullanılır.
Özel Durum: x-default
hreflang="x-default" etiketini, hiçbir dil/ülke eşleşmesi olmayan kullanıcılar için varsayılan sayfanızı belirtmek amacıyla kullanırsınız. Genellikle dil seçim sayfası veya İngilizce ana sayfa olur:
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
Uygulama Yöntemi 1: HTML Head
En yaygın yöntem. Her sayfanın <head> bölümüne tüm dil varyantlarını eklemeniz gerekir — sadece kendi dilinizi değil, tüm varyantları:
<!-- Türkçe sayfada (tr-TR) -->
<link rel="alternate" hreflang="tr-TR" href="https://example.com/tr/urun/" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en/product/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/gb/product/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/product/" />
<!-- İngilizce (en-US) sayfada da AYNI etiketler olmalı -->
<link rel="alternate" hreflang="tr-TR" href="https://example.com/tr/urun/" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en/product/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/gb/product/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/product/" />
Kritik kural: Hreflang karşılıklı (bidirectional) olmalıdır. Sayfa A, Sayfa B'yi işaret ediyorsa Sayfa B de Sayfa A'yı işaret etmelidir. Tek taraflı işaret eden hreflang Google tarafından dikkate alınmaz.
Uygulama Yöntemi 2: XML Sitemap
Büyük e-ticaret siteleri veya çok sayıda sayfası olan siteler için HTML head yöntemi zahmetli olur. XML sitemap'e eklemek daha yönetilebilirdir:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/tr/urun/</loc>
<xhtml:link rel="alternate" hreflang="tr-TR"
href="https://example.com/tr/urun/"/>
<xhtml:link rel="alternate" hreflang="en-US"
href="https://example.com/en/product/"/>
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/en/product/"/>
</url>
<url>
<loc>https://example.com/en/product/</loc>
<xhtml:link rel="alternate" hreflang="tr-TR"
href="https://example.com/tr/urun/"/>
<xhtml:link rel="alternate" hreflang="en-US"
href="https://example.com/en/product/"/>
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/en/product/"/>
</url>
</urlset>
Uygulama Yöntemi 3: HTTP Response Header
Yalnızca HTML dışı dosyalar (PDF, MP3 vb.) için kullanılır. Apache .htaccess örneği:
Header add Link "<https://example.com/en/doc.pdf>; rel=alternate; hreflang=en"
Header add Link "<https://example.com/tr/doc.pdf>; rel=alternate; hreflang=tr"
Yaygın Hreflang Hataları
- Karşılıklılık eksikliği: En sık yapılan hata. Her varyant, diğer tüm varyantları işaret etmeli.
- Yanlış dil kodu:
tryerineturyazmak,en-ukyerineen-GBkullanmamak. ISO kodlarını karıştırmayın. - Canonical ile çelişki: Eğer bir sayfa
rel="canonical"ile başka bir sayfaya işaret ediyorsa ve o sayfada hreflang yoksa, Google hreflang'ı görmezden gelebilir. - Yönlendirilen (redirect) URL kullanımı: Hreflang URL'leri 200 döndürmelidir; 301/302 olan URL'ler kullanılmamalıdır.
- Sadece ana sayfaya uygulamak: Hreflang tüm sayfa bazında uygulanır, sadece ana sayfaya değil.
Hreflang Doğrulama Araçları
- Google Search Console → Uluslararası Hedefleme: Hatalar ve uyarılar için ilk bakılacak yer
- Screaming Frog: Sitenin tamamını tarayarak karşılıklılık hatalarını listeler
- hreflangchecker.com: URL bazında hızlı kontrol için ücretsiz araç
- Ahrefs Site Audit: Hreflang hatalarını öncelik sırasıyla raporlar
Next.js'te Hreflang Uygulaması
Next.js App Router kullananlar için generateMetadata ile hreflang eklemek:
// app/[locale]/page.tsx
export async function generateMetadata({ params }): Promise<Metadata> {
const { locale } = params;
return {
alternates: {
canonical: `https://example.com/${locale}/sayfa/`,
languages: {
'tr-TR': 'https://example.com/tr/sayfa/',
'en-US': 'https://example.com/en/page/',
'x-default': 'https://example.com/en/page/',
},
},
};
}
Sık Sorulan Sorular
Hreflang sadece Google için mi çalışır?
Hayır — Yandex de hreflang etiketlerini destekler. Bing ise hreflang yerine Content-Language HTTP header'ına ağırlık verir.
Çevrilmemiş içerik için ne yapmalıyım?
Henüz çevrilmemiş sayfalar için o dil varyantını hreflang'a eklemeyin. Varlığı olmayan bir dil etiketlemek Google'ı yanıltır.