murattunalı.

Çok dilli sitemap.

Çok dilli bir sitemap, her URL girdisinin o sayfanın tüm dil sürümlerini de bildirdiği site haritasıdır.

Sitemap iki iş yapıyor: sayfaların keşfedilmesini sağlıyor ve her sayfa hakkında ek bilgi taşıyor. Çok dilli sitelerde ikinci iş özellikle değerli çünkü hreflang bağları sayfa düzeyinde olduğu kadar harita düzeyinde de bildirilebiliyor.

İki yerde birden bildirmek gereksiz görünüyor ama bir güvence sağlıyor: sayfa düzeyindeki bir işaretleme hatası harita tarafından telafi edilebiliyor, ve büyük sitelerde harita tek bir yerden denetlenebiliyor.

Yapı

Her URL girdisi, kümedeki tüm sürümleri ayrı satırlar hâlinde bildiriyor — kendisi dahil. Yani üç dilli bir sitede her girdi üç ya da dört alternatif satırı taşıyor.

Bu, dosyayı hızla büyütüyor. Bu sitede 170 URL için 454 alternatif satırı var. Sayı tek bir çarpımdan çıkmıyor: üç dilde var olan 57 URL dörder bağ alıyor, yalnız Türkçe olan 113 URL ikişer. Çeviri kapsamı değiştikçe dosya da değişiyor.

Aynı karşılıklılık kuralı burada da geçerli: A girdisi B'yi bildiriyorsa B girdisi de A'yı bildirmeli. Harita tek bir dosyadan üretiliyorsa bu yapısal olarak garanti oluyor; elle yazılan haritalarda ilk kaçırılan şey bu.

Kaç dosya

Dil başına ayrı sitemap mı, tek dosyada hepsi mi? İkisi de geçerli ve seçim boyuta bağlı.

  1. Tek dosya — küçük ve orta siteler. Denetlemesi kolay, karşılıklılık tek yerden görülebiliyor.
  2. Dil başına dosya + indeks — büyük siteler. Her dil ayrı yönetiliyor, indeks hepsini toplar.
  3. Boyut sınırı — bir sitemap dosyası elli bin URL'i ya da sıkıştırılmamış elli megabaytı geçemez.
  4. İndeks dosyası — birden fazla sitemap varsa bir indeks dosyası hepsini listeler.

Bu sitede tek dosya kullanılıyor ve 170 URL için fazlasıyla yeterli. Dosya üreticiden çıkıyor; elle düzenlenmiyor ve bir sayfa eklendiğinde girdisi kendiliğinden oluşuyor.

Lastmod: en çok yanlış kullanılan alan

Her girdi bir son değişiklik tarihi taşıyabiliyor ve bu alan, doğru kullanıldığında değerli bir sinyal. Yanlış kullanıldığında ise tamamen görmezden geliniyor.

Yanlış kullanımın klasik biçimi: her yayında tüm URL'lerin tarihini bugüne çekmek. Tek satır CSS değişse bile motor tüm sayfaların güncellendiğini duyuyor ve birkaç turdan sonra bu sinyale güvenmeyi bırakıyor.

Doğru kullanım, tarihin gerçekten o sayfanın içeriği değiştiğinde ilerlemesi. Bu sitede tarih bir deftere bağlı: her sayfanın çıktısı parmak izleniyor ve damga yalnız iz değiştiğinde ilerliyor. İzden build zamanı ve sayfa ağırlığı çıkarılıyor — ikisi de içerik değişmese bile her koşumda değişip izi yalancı kılardı.

Her yayında bugüne çekilen bir tarih, bir süre sonra hiç okunmayan bir sinyale dönüşüyor.

Denetim

Sitemap sessizce bozulan bir dosya: bir sayfa silindiğinde girdisi kalabiliyor, bir sayfa eklendiğinde girdisi unutulabiliyor, ve hreflang bağları tek yönlü kalabiliyor. Üçü de arama motoruna yanlış bilgi veriyor.

  1. Her URL diskte var mı — haritada olup sayfası olmayan adres 404 vaat eder.
  2. Her sayfa haritada var mı — üretilmiş ama listelenmemiş sayfa keşfe kalıyor.
  3. Alternatif bağlar karşılıklı mı — A, B'yi bildiriyorsa B de A'yı bildirmeli.
  4. Kendini dahil ediyor mu — her girdi kendi dilini de listelemeli.
  5. Tarihler gerçekten değişimi mi gösteriyor — her yayında bugüne çekilmiyor ya?
  6. Robots dosyası haritaya işaret ediyor mu — keşfin başlangıç noktası.

İlk iki madde birbirinin aynadaki görüntüsü ve ikisinin de kontrol edilmesi gerekiyor. Bu sitede ikisi de bir teste bağlı: sitemap'teki her URL canlı HTTP ile 200 vermeli, ve URL sayısı diskteki üretilmiş sayfa sayısına eşit olmalı.

İkinci test bir kusur ölçüldükten sonra yazıldı: sitemap NİYETTEN türüyordu — «bu koleksiyon var mı?» — GERÇEKTEN değil — «bu sayfa üretildi mi?». Fark, üç adresin haritada olup diskte olmamasıyla ortaya çıktı. Artık üretilmiş sayfa listesinden türüyor.

Keşif ve öncelik

Sitemap bir keşif kanalı ama bir öncelik sinyali değil. Haritada olmak bir sayfanın taranacağını garanti etmiyor; yalnız varlığını bildiriyor. Öncelik iç bağlantı yapısından okunuyor.

Bu, çok dilli sitelerde önemli bir sonuç doğuruyor: bir dil sürümü yalnız haritada varsa ama hiçbir sayfadan ona bağlantı verilmiyorsa, o sürüm seyrek taranıyor. Dil seçicideki bağlar bu yüzden yalnız kullanıcı için değil tarayıcı için de gerekli.

İkinci bir kanal daha var: robots dosyasındaki harita bildirimi. Bu, keşfin başlangıç noktası ve olmadığında harita yalnız elle bildirimle bulunuyor. Bu sitede bildirim yerinde ve doğrulama süiti ayrıca ölçüyor.

Ve bir ölçek notu: dil sayısı arttıkça harita hızla büyüyor. Yedi dilli bir sitede her URL sekiz alternatif satırı taşıyor; bin sayfalık bir site sekiz bin satır demek. O ölçekte dil başına ayrı harita ve bir indeks dosyası pratik hâle geliyor.

Kapanışta bir hatırlatma: sitemap bir garanti değil bir bildirim. Haritada olmak bir sayfanın dizine gireceğini göstermiyor; yalnız keşfedileceğini kolaylaştırıyor. Dizine girmeyen bir sayfa için çözüm haritayı düzeltmek değil, içeriği düzeltmek. Bu ayrım karıştırıldığında haftalar yanlış yerde harcanıyor.

Son bir üretim notu: sitemap elle yazılmamalı. Küçük bir sitede mümkün görünüyor ama ilk sayfa eklemesinde bayatlıyor ve bayat bir harita, olmayan bir haritadan kötü — motora var olmayan sayfalar gösteriyor.

Bu sitede harita üreticiden çıkıyor ve üretilmiş sayfa listesinden türüyor. Bir sayfa diskte yoksa haritaya giremiyor; bir sayfa üretildiyse haritada mutlaka var. İki yönlü garanti bir teste bağlı.

Kapanışta bir çerçeve: sitemap çok dilli bir sitede iki iş yapıyor ve ikincisi genelde atlanıyor. Keşif herkesin bildiği iş; dil bağlarını taşımak ise sayfa düzeyindeki bildirimin ikinci savunma hattı. İkisini birlikte kurmak, tek bir hatanın tüm kümeyi bozmasını engelliyor.

KAYNAKLAR