---
title: "Kapsamlı Çok Dilli XML Site Haritası Oluşturma ve Doğrulama"
---

# Kapsamlı Çok Dilli XML Site Haritası Oluşturma ve Doğrulama

XML site haritası oluşturmak, arama motorları tarafından keşfedilmek isteyen her web sitesi için temel bir görevdir. Aynı sitenin birden fazla dilde içerik sunması durumunda karmaşıklık dramatik biçimde artar. Arama motorlarının dil, bölgesel hedefleme ve çevrilmiş sayfalar arasındaki ilişki hakkında net sinyallere ihtiyacı vardır. Bu makale, Google, Bing ve diğer büyük tarayıcıların gereksinimlerini karşılayan, aynı zamanda büyük ölçekli web siteleri için iş akışını otomatikleştiren çok dilli bir XML site haritasını tasarlama, oluşturma, doğrulama ve sürdürme konularını açıklamaktadır.

## Çok Dilli Bir Site Haritasının Önemi

Arama motorları her dil versiyonunu ayrı bir sayfa olarak değerlendirir. Açık dil sinyalleri olmadan, yinelenen içerik filtreleri yalnızca bir versiyonun görünürlüğünü korurken diğerlerini bastırabilir. **hreflang** özniteliği, doğru yapılandırılmış bir XML site haritası ile birleştirildiğinde, tarayıcılara hangi URL’nin hangi dil ve bölgeye ait olduğunu bildirir. Doğru uygulama, daha yüksek tıklama oranları, daha düşük çıkma oranları ve yerel SERP’lerde daha güçlü bir varlık sağlar.

## Çok Dilli XML Site Haritasının Temel Öğeleri

Geçerli bir çok dilli site haritası, standart XML şemasını takip eder ancak her URL için bir dizi `<xhtml:link>` girdisi ekler. Temel öğeler şunlardır:

* `<url>` – tek bir sayfa için kapsayıcı.
* `<loc>` – sayfanın mutlak URL’si.
* `<lastmod>` – sayfanın en son güncellendiği tarih, YYYY‑MM‑DD biçiminde.
* `<xhtml:link>` – her dil versiyonu için bir satır, `rel="alternate"`, `hreflang` ve `href` içerir.

Aşağıda İngilizce (ABD) ve İspanyolca (İspanya) dillerinde mevcut bir sayfa için minimal bir örnek verilmiştir.

```xml
<?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/en-us/product</loc>
    <lastmod>2026-05-28</lastmod>
    <xhtml:link rel="alternate" hreflang="en-us" href="https://example.com/en-us/product"/>
    <xhtml:link rel="alternate" hreflang="es-es" href="https://example.com/es-es/producto"/>
  </url>
</urlset>
```

**ISO 639‑1** dil kodları ile **ISO 3166‑1 alpha‑2** bölge kodlarının birleştirilmesine dikkat edin. Bu konvansiyon, [Google Search Central belgelerinde](https://developers.google.com/search/docs/advanced/crawling/localized-versions) zorunludur.

## URL Yapısını Planlama

Site haritasını oluşturmadan önce, dil ve bölgenin URL içinde nasıl temsil edileceğine karar verin. Yaygın iki yaklaşım şunlardır:

1. **Alt‑alanlar** – `en.example.com` ve `es.example.com`.
2. **Yol ön ekleri** – `example.com/en/` ve `example.com/es/`.

Her iki desen de kabul edilebilir, ancak yol ön ekleri sunucu yapılandırmasını basitleştirir ve alanlar arası kanonik sorun riskini azaltır. Hangi yöntemi seçerseniz seçin, desenin tüm site genelinde tutarlı olmasına dikkat edin.

## Derleme Araçlarıyla Otomasyon

Büyük çok dilli siteler genellikle binlerce sayfa içerir. Site haritasını elle düzenlemek kısa sürede uygulanamaz hâle gelir. Aşağıdaki iş akışı, bir statik site üreticisine (SSG) veya sürekli entegrasyon (CI) pipeline’ına site haritası oluşturmayı entegre eder:

1. **İçerik Metaverisi** – Her içerik dosyasının front‑matter’inde dil ve bölge bilgisi saklayın (ör. `lang: en`, `region: US`).
2. **Site Haritası Oluşturma Betiği** – Güvendiğiniz bir dilde (Python, Node.js, Go vb.) bir betik yazın. Betik, içerik klasörünü tarar, metaverileri okur ve uygun `<xhtml:link>` girdileriyle XML yapısını üretir.
3. **Doğrulama Adımı** – Oluşturulduktan sonra site haritasını çevrimiçi bir doğrulayıcıya ya da `xmllint` gibi bir komut satırı aracına gönderin. Hataları yakalayın ve doğrulama başarısız olursa CI işini durdurun.
4. **Dağıtım** – Son `sitemap.xml` dosyasını web sitesinin kök dizinine yükleyin ve `robots.txt` dosyasında referans verin.

Aşağıda adım 1‑3’ü gösteren kısa bir Python kod parçacığı yer almaktadır. Betik, her dil versiyonunun ayrı bir alt klasörde bulunduğu bir dizin yapısını varsayar.

```python
import os
import xml.etree.ElementTree as ET
from datetime import datetime

BASE_URL = "https://example.com"
CONTENT_ROOT = "./content"

urlset = ET.Element("urlset", {
    "xmlns": "http://www.sitemaps.org/schemas/sitemap/0.9",
    "xmlns:xhtml": "http://www.w3.org/1999/xhtml"
})

def add_url(loc, lastmod, alternates):
    url_el = ET.SubElement(urlset, "url")
    ET.SubElement(url_el, "loc").text = loc
    ET.SubElement(url_el, "lastmod").text = lastmod
    for hreflang, href in alternates.items():
        ET.SubElement(url_el, "xhtml:link", {
            "rel": "alternate",
            "hreflang": hreflang,
            "href": href
        })

for root, dirs, files in os.walk(CONT
```

## <span class='highlight-content'>İlgili</span> Ba