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>
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 |
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:
- HTML head: En yaygın yöntem. Her sayfanın
<head>bölümüne eklenir. - HTTP header: PDF gibi HTML dışı kaynaklar için kullanılır.
- 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>
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) veen-UK(yanlış; doğrusuen-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.