İçeriğe geç
teknik-seo

Hreflang Nasıl Uygulanır? Çok Dilli SEO İçin Eksiksiz Rehber

·9 dk dakika okuma·Teknik SEO Editörü

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: tr yerine tur yazmak, en-uk yerine en-GB kullanmamak. 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.