İçeriğe geç
SEO

International SEO: hreflang ve Çok Dilli Site Yapısı

Tarık Tunç
International SEO: hreflang ve Çok Dilli Site Yapısı

International SEO: hreflang ve Çok Dilli Site Yapısı

Birden fazla dil veya ülke hedefleyen web siteleri, arama motorlarının doğru dildeki sayfayı doğru kullanıcıya göstermesi için ek optimizasyonlara ihtiyaç duyar. International SEO, hreflang tag'leri, URL yapısı stratejileri ve çok dilli içerik yönetimini kapsayan geniş bir alandır. Bu yazıda hreflang implementasyonundan URL yapısı tercihlerine, Next.js i18n konfigürasyonundan yaygın hatalara kadar uluslararası SEO'nun tüm boyutlarını inceliyoruz.

International SEO Neden Önemli?

Çok dilli veya çok bölgeli bir site işletiyorsanız, arama motorlarının şunları anlaması gerekir:

  • Hangi sayfanın hangi dil ve ülke için tasarlandığı.
  • Farklı dil versiyonları arasındaki ilişki.
  • Kullanıcıya gösterilecek en uygun versiyon.
  • Duplicate content olarak değerlendirilmemesi gereken çeviriler.

hreflang Tag Nedir?

hreflang, arama motorlarına bir sayfanın hangi dil ve ülke için hedeflendiğini bildiren bir HTML attribute'udur. Google ve Yandex hreflang'i destekler; Bing ise content-language meta tag'ini tercih eder.

<!-- HTML head'de hreflang tanımı -->
<head>
  <!-- Mevcut sayfa: Türkçe versiyon -->
  <link rel="alternate" hreflang="tr" href="https://tariktunc.com/blog/international-seo">

  <!-- İngilizce versiyon -->
  <link rel="alternate" hreflang="en" href="https://tariktunc.com/en/blog/international-seo">

  <!-- Almanca (Almanya) versiyon -->
  <link rel="alternate" hreflang="de-DE" href="https://tariktunc.com/de/blog/international-seo">

  <!-- Almanca (Avusturya) versiyon -->
  <link rel="alternate" hreflang="de-AT" href="https://tariktunc.com/de-at/blog/international-seo">

  <!-- x-default: Eşleşme yoksa gösterilecek varsayılan -->
  <link rel="alternate" hreflang="x-default" href="https://tariktunc.com/blog/international-seo">
</head>
İpucu: hreflang değerleri ISO 639-1 dil kodu (2 harf) ve opsiyonel olarak ISO 3166-1 Alpha-2 ülke kodu kullanır. Örneğin tr (Türkçe, tüm bölgeler), en-US (İngilizce, ABD), pt-BR (Portekizce, Brezilya). Her zaman x-default tanımlayın.

URL Yapısı Stratejileri

Çok dilli siteler için üç ana URL yapısı stratejisi vardır:

Strateji Örnek Avantaj Dezavantaj
Subdirectory tariktunc.com/en/ Kolay kurulum, tek domain otoritesi Ülke hedefleme zayıf
Subdomain en.tariktunc.com Bağımsız hosting imkanı Otorite bölünmesi riski
ccTLD tariktunc.de Güçlü ülke sinyali Maliyet ve bakım zorluğu
Bilgi: Google, subdirectory yapısını çoğu senaryo için önerir çünkü domain otoritesini tek bir alanda toplar ve yönetimi kolaydır. ccTLD yalnızca belirli bir ülkeye güçlü sinyal vermeniz gerektiğinde tercih edilmelidir.

Next.js ile i18n Konfigürasyonu

// next.config.js - App Router i18n yapısı
const nextConfig = {
  // App Router'da i18n middleware ile yönetilir
};

// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
import { match } from '@formatjs/intl-localematcher';
import Negotiator from 'negotiator';

const locales = ['tr', 'en', 'de'];
const defaultLocale = 'tr';

function getLocale(request: NextRequest): string {
  const headers = { 'accept-language': request.headers.get('accept-language') || '' };
  const languages = new Negotiator({ headers }).languages();
  return match(languages, locales, defaultLocale);
}

export function middleware(request: NextRequest) {
  const { pathname } = request.nextUrl;

  // Locale prefix kontrolü
  const pathnameHasLocale = locales.some(
    locale => pathname.startsWith(`/${locale}/`) || pathname === `/${locale}`
  );

  if (pathnameHasLocale) return NextResponse.next();

  // Locale yönlendirmesi
  const locale = getLocale(request);
  request.nextUrl.pathname = `/${locale}${pathname}`;
  return NextResponse.redirect(request.nextUrl);
}

export const config = {
  matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],
};

hreflang Implementasyon Yöntemleri

hreflang tag'leri üç farklı yerde tanımlanabilir:

  1. HTML head: En yaygın yöntem. Her sayfanın <head> bölümüne eklenir.
  2. HTTP header: PDF gibi HTML dışı kaynaklar için kullanılır.
  3. XML Sitemap: Çok sayıda dil versiyonu olan büyük siteler için tercih edilir.
<!-- Sitemap'te hreflang tanımı -->
<?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://tariktunc.com/blog/international-seo</loc>
    <xhtml:link rel="alternate" hreflang="tr"
                href="https://tariktunc.com/blog/international-seo"/>
    <xhtml:link rel="alternate" hreflang="en"
                href="https://tariktunc.com/en/blog/international-seo"/>
    <xhtml:link rel="alternate" hreflang="x-default"
                href="https://tariktunc.com/blog/international-seo"/>
  </url>
</urlset>
Uyarı: hreflang ilişkileri çift yönlü (bidirectional) olmalıdır. Sayfa A, Sayfa B'ye hreflang ile referans veriyorsa, Sayfa B de Sayfa A'ya referans vermelidir. Tek yönlü referanslar Google tarafından göz ardı edilir.

Yaygın hreflang Hataları

  • Tek yönlü referans: Her dil versiyonu, diğer tüm versiyonları ve kendisini referans göstermelidir.
  • Yanlış dil kodu: uk (Ukraynaca) ve en-UK (yanlış; doğrusu en-GB) gibi karışıklıklar.
  • x-default eksikliği: Varsayılan versiyon belirtilmezse eşleşmeyen kullanıcılar yanlış sayfaya yönlendirilebilir.
  • Canonical uyumsuzluğu: hreflang hedef URL'leri canonical URL'lerle eşleşmelidir.
  • Noindex sayfalarına hreflang: Noindex sayfalar hreflang hedefi olmamalıdır.

Sonuç

International SEO, çok dilli web sitelerinin doğru kitlelere ulaşmasını sağlayan kritik bir optimizasyon alanıdır. hreflang tag'leri ile dil ve bölge hedeflemenizi netleştirin, tutarlı URL yapısı stratejisi belirleyin ve hreflang ilişkilerinin çift yönlü olduğundan emin olun. Next.js'in i18n altyapısı bu süreci önemli ölçüde kolaylaştırır. Google Search Console'un International Targeting raporunu düzenli olarak kontrol ederek hreflang hatalarını erken tespit edin.

Kaynaklar

İlgili Yazılar