View Categories

Çok Dilli SEO: hreflang, x-default, Kanonik — Uygulamalı Rehber

Tahmini Okuma Süresi: 3 dak

Özet: Çok dilli sitelerde hangi sayfanın hangi dile/bölgeye ait olduğu arama motorlarına hreflang ile bildirilir. Bu rehber, HTML <head>, HTTP Link Header ve XML site haritası yöntemlerini; x-default ve kanonik etiketinin birlikte nasıl çalıştığını; QA kontrol listesini ve sık hataları örnek kodlarla anlatır.
Bağlam: Yerelleştirme Hizmetleri

1) Hreflang ne zaman gerekir?

  • Aynı içeriğin farklı dil ve/veya bölge sürümlerini (ör. tr-TR, en-GB) yayımlıyorsanız.
  • Kullanıcıların yanlış dilde sayfaya düşmesini azaltmak istiyorsanız.
  • Coğrafi hedefleme değil, dil/bölgeye uygun sonuç göstermek istiyorsanız.
  • Tek dilli sitelerde genellikle gerekmez. Hreflang otomatik yönlendirme yapmaz.

2) URL stratejisi: alt dizin mi, alt alan mı?

2.1) Alt dizin

  • Örnek: https://example.com/tr/, https://example.com/en/
  • Artı: Otorite ana alanla paylaşılır; bakım ve analitik kolaydır.
  • Eksi: Merkezi içerik disiplini ve sürümleme gerekir.

2.2) Alt alan

  • Örnek: https://tr.example.com/, https://en.example.com/
  • Artı: Operasyonel esneklik; ülke ekipleri bağımsız çalışabilir.
  • Eksi: Otorite dağılımı ve devri ek çalışma isteyebilir.

Parametre (?lang=tr) ve hash (#) temelli çözümler SEO için uygun değildir. Hangi modeli seçerseniz seçin, her dil sayfasında self-canonical kullanın; farklı diller birbirine canonical edilmez.

3) Dil/bölge kodları ve eşleştirme

  • Dil (ISO 639-1) + isteğe bağlı bölge (ISO 3166-1 alpha-2): tr-TR, en-US gibi.
  • Sadece dil (en) genel sürüm; en-GB/en-US bölgeye özgüdür.
  • Yaygın hatalar: tr_TR, en_UK, geçersiz bölge kodları.
  • Hreflang referansları karşılıklı olmalıdır (A↔B).

4) Yöntem #1: HTML <head>

Her sayfanın <head> bölümüne link rel="alternate" etiketleri ekleyin:

  • <link rel="alternate" hreflang="x-default" href="https://example.com/" />
  • <link rel="alternate" hreflang="tr-TR" href="https://example.com/tr/" />
  • <link rel="alternate" hreflang="en" href="https://example.com/en/" />
  • <link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/" />
  • Artı: Basit ve CMS’lerde pratik.
  • Dikkat: Büyük sitelerde çok satır üretir; sorun değildir. Karşılıklılık şarttır; noindex sayfalara hreflang verilmez.

5) Yöntem #2: HTTP Link Header

HTML’e erişilemiyorsa sunucu yanıt başlıklarına ekleyin (satırları ayrı ayrı yazın):

  • Link: <https://example.com/>; rel="alternate"; hreflang="x-default"
  • Link: <https://example.com/tr/>; rel="alternate"; hreflang="tr-TR"
  • Link: <https://example.com/en/>; rel="alternate"; hreflang="en"
  • Ne zaman: Headless mimari, CDN/edge templating, dinamik çıktılar.
  • Dikkat: Cache/purge ve header’ın CDN’den son kullanıcıya taşındığını test edin.

6) Yöntem #3: XML site haritası

Her <url> düğümüne aşağıdaki satırları ekleyin:

  • <loc>https://example.com/</loc>
  • <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/" />
  • <xhtml:link rel="alternate" hreflang="tr-TR" href="https://example.com/tr/" />
  • <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/" />
  • Artı: Merkezi yönetim; büyük/çok dilli sitelerde düzen sağlar.
  • Dikkat: Tek yöntem seçip tutarlı uygulayın. HTML/HTTP/XML yöntemlerinde dil seti aynı olmalıdır.

7) x-default ve kanonik

  • x-default, genel ya da dil/bölge seçici landing’i işaret eder.
  • Her dil sayfası kendi canonical’ına işaret eder (self-canonical); farklı diller birbirine canonical edilmez.
  • Konum/dil otomatik yönlendirme varsa, yönlendirme öncesinde dil/ülke seçimi sunan bir landing’i x-default yapın.

8) CMS / platform notları

  • WordPress: Şablonda <link rel="alternate"> üreten çözüm kullanın; karşılıklılığı kontrol edin.
  • Headless/Shopify: Şablonda dil döngüsü kurun veya HTTP Link Header kullanın. Edge cache key’e Accept-Language eklemeyin.
  • CDN: Bölgesel varyant için teknik yönlendirme yerine hreflang sinyalini temel alın; sitemap ve header kalıcılığını test edin.

9) QA ve doğrulama

  1. Site haritası: Dil seti tüm sayfalarda tutarlı mı? Boş/yanlış URL yok mu?
  2. Karşılıklılık: A sayfası B’yi, B sayfası A’yı işaretliyor mu?
  3. Self-canonical: Her dil sayfası kendi canonical’ına mı işaret ediyor?
  4. Header taraması: curl -I ile Link: başlıklarını kontrol edin.
  5. Arayüz QA: Dil seçici, menüler ve içerik doğru dilde mi? Kırık bağlantı var mı? Ayrıntılı adımlar için L10n QA Kontrol Listesi makalesine bakın.

9.1) Hızlı kontrol listesi

  • Her sayfanın tüm dil varyantları listelendi.
  • Varyantlar karşılıklı işaretli (A↔B).
  • Her dil sayfası self-canonical.
  • x-default landing tanımlı (gerekiyorsa).
  • HTML / HTTP / XML yöntemlerinden yalnızca biri etkin (karma yok).
  • ISO kodları doğru (ör. tr-TR, en-GB).

10) Sık hatalar ve çözümleri

  • Tek yönlü işaretleme → Karşılıklılığı sağlayın.
  • Yanlış ISO kodu → tr_TR yerine tr-TR; en_UK yerine en-GB.
  • noindex sayfaya hreflang → noindex sayfaları eşlemeden çıkarın.
  • Çapraz canonical → Her dilde self-canonical kullanın.
  • Tutarsız yöntem seti → HTML’de 3 dil, XML’de 2 dil gibi çelişkileri kaldırın; yöntemi tek ve tutarlı kullanın.
  • x-default eksik → Dil/bölge seçici landing varsa ekleyin.

11) Mini SSS

x-default zorunlu mu?

Her zaman zorunlu değildir; dil/ülke seçici bir landing varsa önerilir.

Bölge kodu şart mı?

Hayır. Sadece dil (ör. en) de geçerlidir; bölgeye özgü içerikte en-GB veya en-US tercih edilir.

Otomatik yönlendirme ile birlikte kullanabilir miyim?

Evet; ancak yönlendirme öncesinde dil/ülke seçimi sunan bir landing’i x-default olarak konumlandırın.

12) İlgili içerik ve sonraki adım

Projeniz için doğru hreflang kurulumunu birlikte tasarlayalım: İletişim.

Go to Top