Hreflang Etiket Üretici

Türkçe ve İngilizce sayfalarınız birbirinin kopyası sanılıyorsa sebebi genelde eksik hreflang. Etiketler karşılıklı olmak zorunda.

Hazır kümeler

Dil ve adres girin

Giriş

Sitenizin Türkçe ve İngilizce sürümleri var. İkisi de yayında, ikisi de düzgün. Ama arama sonuçlarında İngiltere'den arayan biri Türkçe sayfayı görüyor, ya da iki sayfadan yalnız biri dizinde kalıyor. Sebep neredeyse her zaman aynı: hreflang eksik ya da tek taraflı kurulmuş.

Hreflang, arama motoruna "bu sayfanın şu dildeki karşılığı şurada" diyen bir etiket. Bir sıralama sinyali değil; hangi dildeki ziyaretçiye hangi adresi göstereceğini belirleyen bir eşleştirme. Doğru kurulduğunda iki sayfa birbirinin kopyası sayılmıyor, yanlış kurulduğunda ise etiketin tamamı yok sayılıyor.

Bu sayfa hreflang'in tek katı kuralını, x-default'un ne işe yaradığını, tr ile tr-TR arasındaki farkı, etiketleri koyabileceğiniz üç yeri ve en sık yapılan üç hatayı anlatıyor.

Hreflang nedir?

Aynı içeriğin farklı dil ve ülkelere yönelik sürümlerini arama motoruna bildiren etikete hreflang deniyor. Türkçede "dil ve bölge etiketi" karşılığı kullanılıyor; yaygın adı İngilizcesiyle aynı kalıyor.

Etiket iki bilgiyi taşıyor: dil ve isteğe bağlı olarak bölge. tr yalnız dili söylüyor, tr-TR Türkiye'deki Türkçeyi, de-AT ise Avusturya'daki Almancayı gösteriyor. Dil kodu ISO 639-1, bölge kodu ISO 3166-1 alpha-2 listesinden olmak zorunda.

Tek katı kuralı karşılıklılık: A sayfası B'yi gösteriyorsa, B de A'yı göstermek zorunda. Karşılıklılık kopuksa Google etiketin tamamını yok sayıyor ve bunu hata mesajıyla bildirmiyor; etiket sayfada durmaya devam ediyor, yalnız işe yaramıyor.

Bu araç adresleri ve dilleri girdiğinizde kurallara uygun etiket bloğunu yazıyor. İngilizce kaynaklarda karşılığı hreflang tag generator. Yayına aldıktan sonra karşılıklılığın gerçekten kurulduğunu hreflang denetleyicisiyle sınayabilirsiniz.

Tek katı kural: karşılıklılık

Hreflang'de esneme payı olmayan tek kural bu. A sayfası B'yi gösteriyorsa, B de A'yı göstermek zorunda.

Türkçe sayfanız İngilizce sayfayı işaret ediyor ama İngilizce sayfa geri işaret etmiyorsa, Google eşleştirmeyi kabul etmiyor. Etiketi görmezden geliyor, iki sayfayı da ilişkisiz sayıyor ve çoğu zaman ikisinden birini dizinden düşürüyor. Yani yarım kurulmuş bir hreflang, hiç kurulmamış olmasından iyi değil.

Karşılıklılığın az bilinen bir uzantısı var: her sayfa kendisini de listelemeli. Türkçe sayfanın etiket bloğunda hem İngilizce karşılık hem de kendi adresi bulunmalı.

Pratik sonuç şu: iki dilli bir sitede her iki sayfaya da aynı blok konuyor. Blok sayfaya göre değişmiyor; kümenin tamamını her üye taşıyor. Araç bu yüzden tek blok üretiyor ve "her sayfaya aynısını koyun" diyor: sayfa başına elle hazırlanan her varyasyon bir hata kapısı.

Karşılıklılığın gerçekten kurulup kurulmadığını hreflang denetleyicisiyle yayına aldıktan sonra ölçebilirsiniz; o araç alternatifleri tek tek açıp geri dönüp dönmediklerine bakıyor.

x-default ne işe yarıyor?

x-default, listedeki dillerin hiçbirine uymayan ziyaretçi için hangi sayfanın gösterileceğini söylüyor.

Türkçe ve İngilizce sayfanız var; Almanya'dan Almanca tarayıcıyla gelen biri hangisini görecek? x-default yoksa Google kendi tahminini kullanıyor. Varsa, sizin işaret ettiğiniz sayfayı gösteriyor.

Zorunlu değil ama kurulması on saniye süren ve tahmin yerine karar koyan bir satır. Genelde İngilizce sürüme ya da dil seçim sayfasına veriliyor.

Bir yanlış anlama var: x-default "varsayılan dil" demek değil. Ana diliniz Türkçe olsa bile x-default olarak Türkçe sayfayı göstermek, dünyanın geri kalanına Türkçe sayfayı açmak anlamına geliyor. Uluslararası ziyaretçi bekliyorsanız İngilizce sürüm daha mantıklı bir karşılık.

tr mi, tr-TR mi?

En sık yapılan gereksiz iş bu. Dil kodu ISO 639-1, ülke kodu ISO 3166-1 biçiminde yazılıyor ve ülke kodu çoğu sitede gerekmiyor.

hreflang="tr" demek "Türkçe konuşan herkes" demek. hreflang="tr-TR" demek "Türkiye'deki Türkçe konuşanlar" demek. İkincisini yazdığınızda Almanya'daki Türkçe konuşan bir ziyaretçi bu eşleşmenin dışında kalıyor.

Ülke kodu yalnız tek bir durumda gerekiyor: aynı dilin farklı ülkeler için ayrı sayfaları varsa. Fiyatların farklı para biriminde olduğu, kargo koşullarının değiştiği bir mağaza de-DE ve de-AT ayrımını hak ediyor. Araçtaki "Aynı dil, farklı ülke" hazır kümesi tam olarak bu durumu kuruyor.

Bir de sık karıştırılan bir nokta: ülke kodu ziyaretçinin bulunduğu yeri değil, hedeflenen ülkeyi anlatıyor. Sunucunuzun nerede olduğuyla da ilgisi yok.

Araç en-UK gibi geçersiz kodları yakalıyor. İngiltere'nin ISO kodu GB; UK yaygın bir hata ve tarayıcılar bunu sessizce GB'ye eşlediği için gözden kaçıyor, ama Google etiketi yok sayıyor.

Üç yol: etiket, site haritası, HTTP başlığı

HTML etiketleri. Blok her sayfanın <head> bölümüne giriyor. En yaygın yol ve en kolay denetleneni: sayfanın kaynağına bakınca görünüyor. On beş yirmi sayfalık bir sitede sorun çıkarmıyor.

XML site haritası. Sayfalara hiç dokunmadan aynı işi yapıyor; her <url> düğümü kendi alternatiflerini taşıyor. Binlerce sayfalı sitelerde tercih edilen yol bu: tek dosyada toplandığı için denetlemesi de kolay.

HTTP başlığı. PDF gibi HTML olmayan dosyalarda hreflang vermenin tek yolu. Sunucu yapılandırması gerektirdiği için sıradan bir sitede gereksiz.

Önemli olan aynı anda birden fazlasını kullanmamak. İki yerde farklı bilgi olduğunda hangisinin geçerli olduğu belirsizleşiyor ve çelişki kümenin tamamının yok sayılmasına yol açabiliyor. Araç üçünü de üretiyor; birini seçip ötekini bırakın.

Adresler her durumda tam yazılıyor: https:// ile başlayan mutlak adresler. Göreli yol hreflang'de kabul edilmiyor ve araç bunu satır satır uyarıyor.

En sık üç hata

Tek taraflı etiket. Türkçe sayfa İngilizceyi gösteriyor, İngilizce sayfa geri göstermiyor. Karşılıklılık kuralına takıldığı için eşleştirmenin tamamı düşüyor. Sitenin bir bölümü ayrı bir sistemde çalışıyorsa neredeyse kaçınılmaz oluyor.

Aynı adresin iki dile verilmesi. Genelde İngilizce sayfa henüz hazır değilken Türkçe adresin ikisine birden yazılmasıyla oluyor. Google iki dilin aynı sayfayı gösterdiğini görüyor ve eşleştirmeyi anlamsız buluyor. İngilizce sayfa yoksa hreflang de olmamalı.

Yönlendirilen adrese işaret etmek. Etikette yazan adres bir yönlendirmeye düşüyorsa, örneğin eğik çizgisiz yazılmış ve site eğik çizgiliye yönlendiriyorsa, hreflang zayıflıyor. Etikette son adres yazmalı. Yönlendirme denetleyicisi bu zincirleri gösteriyor.

Araç üçünü de çıktıyı üretmeden önce söylüyor: geçersiz dil kodu, göreli adres ve tek dil kalan küme ayrı ayrı uyarı veriyor.

Tek bir hata bütün kümeyi düşürüyor

Hreflang'in en pahalı yanı, hataların kısmi çalışmaması. Bir kümedeki tek bir bozuk adres, o kümedeki bütün sayfaların etiketlerinin yok sayılmasına yol açıyor.

Bozuk sayılan durumlar: adresin 404 dönmesi, 500 vermesi ya da başka bir adrese yönlendirmesi. Yönlendirme özellikle sinsi; adres tarayıcıda açıldığı için gözle bakınca sorun görünmüyor.

Sektörde yapılan incelemelerde çok dilli sitelerin üçte ikisinden fazlasında hreflang hatası bulunuyor. Bu yüzden etiketi yazdıktan sonra yayında sınamak gerekiyor: hreflang denetleyicisi adresleri tek tek açıp bu üç durumu kontrol ediyor.


Sık sorulanlar

Hreflang, kurulumu bir kez yapılıp sonra unutulan bir şey değil; site her büyüdüğünde bakım isteyen bir eşleştirme. Aşağıdaki dört soru çok dilli siteye geçerken en çok tereddüt edilen noktalar; cevaplarda kuralın yanında ne zaman hiç gerekmediğini de yazdık.

Sitem tek dilli, hreflang gerekir mi?

Hayır, hiç gerekmiyor. Tek dilli bir sitede hreflang yazmanın hiçbir karşılığı yok; bir sayfanın kendisinden başka gösterecek karşılığı olmuyor.

İstisna, aynı dilde farklı ülkelere ayrı sayfa veren siteler. Türkiye ve Almanya'daki Türkçe konuşanlara farklı fiyat ya da farklı kargo bilgisi veren iki ayrı sayfanız varsa, ikisi de Türkçe olsa bile hreflang gerekiyor.

Sitenizde yalnız bir çeviri eklentisi çalışıyorsa ve çeviriler ayrı adreste durmuyorsa hreflang'in yapacağı bir şey yok; etiket ancak gerçek, ayrı adresli sayfalar için anlamlı.

Google etiketleri ne zaman dikkate alıyor?

Sayfaların yeniden taranmasından sonra. Küçük bir sitede birkaç gün, büyük bir sitede birkaç hafta sürebiliyor.

Karşılıklılık kuralı burada da işliyor: A sayfası yeniden tarandı ama B tarandığında eski hâlindeyse eşleştirme henüz tamamlanmıyor. Bu yüzden etiketleri bütün dil sürümlerine aynı anda koymak, tek tek yaymaktan daha hızlı sonuç veriyor.

Search Console'un uluslararası hedefleme raporu kapatıldığı için doğrulamayı artık sayfanın kendisinden yapmak gerekiyor; hreflang denetleyicisi tam olarak bunu ölçüyor.

Hreflang sıralamamı yükseltir mi?

Hayır. Hreflang bir sıralama sinyali değil; hangi dildeki ziyaretçiye hangi adresin gösterileceğini belirleyen bir eşleştirme.

Yine de dolaylı faydası somut. Doğru kurulduğunda iki dil sürümü birbirinin kopyası sayılmıyor, yani ikisi de dizinde kalıyor. Yanlış ya da eksik kurulduğunda Google ikisinden birini seçip diğerini görmezden gelebiliyor; bu da bir sürümün trafiğini tamamen kaybetmek demek.

Kısacası hreflang yükseltmiyor, kaybı önlüyor. Uluslararası bir sitede bu ikisi pratikte aynı kapıya çıkıyor.

Yazdığım adresler bir yere gidiyor mu?

Hayır. Etiketler ve denetimler tamamen tarayıcınızda üretiliyor; adres listeniz bize ulaşmıyor.

Henüz yayına almadığınız bir dil sürümünün adreslerini de bu yüzden rahatça deneyebilirsiniz. Kaydedilen bir liste olmadığı için sayfayı yenilediğinizde alan boşalıyor; ürettiğiniz bloğu kopyalayıp kendi tarafınıza alın.

Aracı beğendiniz mi?

Bu aracı ve altındaki açıklamayı, işini kendi yürüten bir işletme sahibine yetecek açıklıkta yazmaya çalıştık.

Teşekkür ederiz. Bundan sonraki çalışmaları da aynı açıklıkta yazmayı sürdüreceğiz.

Teşekkür ederiz. Eksik bulduğunuz noktayı info (at) kobiseo (nokta) com adresine iletirseniz sayfayı gözden geçirir ve düzeltmeyi geçmişe işleriz.

Kaynaklar ve güncelleme geçmişi

Kaynaklar

  1. Google Search Central: Sayfanın yerelleştirilmiş sürümlerini bildirme, Google (developers.google.com)Resmî kaynak
  2. RFC 5646: Diller için etiketler, IETF (rfc-editor.org)Resmî kaynak

Bu sayfayı paylaşın

Aynı işi elle yapan bir işletme sahibine gönderin.