VO.
← Bloga dön

İki dilli bir siteyi arama motorlarına doğru anlatmak

Dile göre adresler, otomatik dil seçimi, hreflang, x-default ve site haritası.

2 dk okuma#seo#nextjs#i18n

Bu site Türkçe ve İngilizce. İki dilli bir sitede asıl iş çeviri değil; arama motorlarına hangi sayfanın hangi dilde olduğunu ve birbirlerinin karşılığı olduğunu anlatmak.

Her dilin kendi adresi

Her sayfanın iki adresi var: /tr/blog ve /en/blog. Dil bilgisi çerez ya da tarayıcı ayarında saklı değil, adresin içinde; böylece arama motoru iki sürümü de ayrı ayrı görüp dizine ekleyebiliyor.

Otomatik dil seçimi

Biri doğrudan vezironi.com adresine geldiğinde tarayıcının gönderdiği Accept-Language başlığına bakıyorum. tr-TR,tr;q=0.9,en;q=0.8 gibi bir değeri öncelik puanlarına göre sıralayıp desteklediğim ilk dili seçiyorum. Ziyaretçi daha önce dili elle değiştirdiyse çerezdeki seçim kazanıyor. Arama motoru botları genelde bu başlığı göndermediği için onlara varsayılan olarak İngilizce açılıyor.

Bu yönlendirme kalıcı değil (307), çünkü sonuç ziyaretçiye göre değişiyor. Eski sitedeki /about gibi adresler ise kalıcı (301) yönlendirmeyle yeni karşılıklarına gidiyor.

hreflang ve x-default

Her sayfanın başında diğer dil sürümünü gösteren etiketler var:

<link rel="alternate" hreflang="tr" href="https://vezironi.com/tr/blog" />
<link rel="alternate" hreflang="en" href="https://vezironi.com/en/blog" />
<link rel="alternate" hreflang="x-default" href="https://vezironi.com/en/blog" />

x-default, dili eşleşmeyen ziyaretçiler için hangi sürümün açılacağını söylüyor. Bir blog yazısı sadece tek dilde yazılmışsa diğer dilin etiketi hiç eklenmiyor ve o dildeki adres 404 dönüyor; olmayan bir sayfayı arama motoruna göstermiyorum.

Site haritası ve yapılandırılmış veri

sitemap.xml her adresi, diğer dildeki karşılığıyla birlikte listeliyor. Ana sayfada kim olduğumu anlatan Person, blog yazılarında BlogPosting türünde yapılandırılmış veri var. Her sayfanın paylaşım görseli de otomatik üretiliyor.

Test sürümü dizine girmesin

Siteyi canlıya almadan önce ayrı bir test adresinde deniyorum. Orada tek bir ayarla bütün sayfalar "dizine ekleme" diyor ve robots.txt her şeyi kapatıyor; böylece test sürümü canlı siteyle yarışmıyor.