hreflang hataları: en sık 12 hata ve tespiti
hreflang hatalarının çoğu tek tek sayfada değil, sistemde. En sık görülen 12 hata ve production ortamında bunları yakalayan üç katmanlı doğrulama yöntemi.
Yazan Roozbeh Nazari · CEO
hreflang, teknik SEO'nun en çok yanlış kurulan alanlarından biri. Sebebi karmaşıklığı değil; sessiz başarısızlığı. Yanlış kurulmuş bir hreflang hiçbir hata vermiyor, sayfa normal görünüyor, kimse fark etmiyor. Sorun ancak aylar sonra, yanlış dildeki sayfa yanlış ülkede sıralanmaya başladığında ortaya çıkıyor.
Klinik dikeyinde çok dilli mimarinin nasıl kurulacağını çok dilli SEO mimarisi playbook'umuzda ele almıştık. Bu yazı ise tamamlayıcısı: mimari kurulduktan sonra production ortamında en sık karşılaşılan 12 somut hata ve bunları yakalamanın yöntemi.
Karşılıklılık ve grup hataları
İlk dört hata, hreflang'in temel mantığıyla ilgili: hreflang bir sayfa etiketi değil, bir grup beyanı.
1. Tek yönlü bildirim. TR sayfası EN sayfasını gösteriyor ama EN sayfası TR'yi göstermiyor. Google'ın dokümantasyonu bildirimlerin karşılıklı olmasını şart koşuyor; karşılıklı olmayan bildirimler dikkate alınmayabiliyor. Bu, listedeki en yaygın hata.
2. Kendine referansın eksik olması. Her sayfa, gruptaki diğer sayfaların yanı sıra kendisini de belirtmeli. Kendi referansı olmayan sayfa, grubun bir üyesi olarak değil, dışarıdan bir gözlemci olarak davranıyor.
3. Eksik üye. Grupta dört dil varken bazı sayfalarda yalnızca üçü listeleniyor. Genellikle şablon farklılığından kaynaklanıyor: blog şablonu dört dili basarken hizmet şablonu üç dille kalmış oluyor.
4. Grup üyeliğinin sayfa bazında tutarsız olması. A sayfası B ve C'yi işaret ediyor, B sayfası A ve D'yi işaret ediyor. Ortaya tutarlı bir küme çıkmıyor ve tüm grup güvenilmez hale geliyor.
Bu dört hatanın ortak kaynağı neredeyse her zaman aynı: hreflang'in tek bir doğruluk kaynağından değil, şablon şablon üretiliyor olması.
Kod ve URL hataları
Sonraki dört hata daha mekanik ama en az onlar kadar yaygın.
5. Geçersiz dil kodu. En sık görülenler uydurulmuş bölge kodları ve dil ile ülkenin karıştırılması. Arapça için "ar" bir dil kodu; "ar-AE" dil-bölge kombinasyonu. "uk" Ukraynaca demek, Birleşik Krallık değil.
6. Yalnızca bölge kodu kullanmak. hreflang değeri dil kodu olmadan yalnızca ülke kodu içeremiyor. Bu, sessizce yok sayılan bir tanım.
7. Göreli URL kullanmak. hreflang değerleri mutlak URL olmalı, protokol dahil. Göreli yol yazan kurulumlar, çoğu zaman staging ortamından production'a geçerken bu haliyle kalmış oluyor.
8. Yönlendirilen veya erişilemeyen URL'leri işaret etmek. hreflang'in gösterdiği adres son adres olmalı. Yönlendirmeye, 404'e ya da robots.txt ile engellenmiş bir sayfaya işaret eden bildirim, grubu kırıyor.
Çelişen sinyaller
Son dört hata en zor fark edilenler, çünkü hreflang kodunun kendisi doğru görünüyor. Sorun, sayfanın başka bir yerden farklı bir şey söylemesi.
9. Canonical çelişkisi. Sayfa hreflang ile "ben Arapça sürümüm" derken, canonical ile İngilizce sürümü işaret ediyor. Bu durumda Arapça sürüm kendi başına bir sayfa olmaktan çıkıyor. Her locale kendi kendine canonical olmalı.
10. Otomatik yönlendirme. hreflang doğru kurulmuş olsa bile, IP veya tarayıcı diline göre yapılan zorunlu yönlendirme tarayıcıyı tek bir sürüme kilitliyor. Mekanizmayı ve on beş dakikalık test prosedürünü locale auto-redirect yazımızda anlattık.
11. Sayfa dilinin beyanla uyuşmaması. hreflang "fa" derken sayfanın gövdesi büyük ölçüde İngilizce kalmış oluyor — genellikle yarım çeviri sonucu. Beyan ile içerik çeliştiğinde beyan değil içerik kazanıyor.
12. x-default'un yanlış kullanımı. x-default, dil seçimi yapılmamış kullanıcılar için varsayılan sayfayı gösteriyor; "en önemli dil" anlamına gelmiyor. Birden fazla sayfaya x-default vermek ya da hiç vermemek, farklı ama ikisi de düzeltilmesi gereken durumlar.
Neden Search Console tek başına yetmiyor
Ekiplerin ilk refleksi hreflang durumunu Search Console'dan takip etmek oluyor. Bu makul ama iki yapısal sınırı var.
Birincisi kapsam: raporlar, Google'ın taradığı ve işlediği sayfalara dayanıyor. Henüz taranmamış yeni bir dil sürümündeki sistematik bir hata, raporda haftalarca görünmeyebiliyor. Yeni yayına alınan bir locale'i doğrulamak için beklemek, hatanın en pahalı yayılma dönemini kaçırmak demek.
İkincisi çözünürlük: raporlar size bir sorun olduğunu söylüyor, hangi şablonun ürettiğini söylemiyor. On iki hatanın çoğu tek tek sayfaların değil, bir şablonun hatası. Şablonu göremediğinizde tek tek sayfa düzeltmeye başlıyorsunuz ve aynı hata bir sonraki yayında geri geliyor.
Bu yüzden Search Console'u doğrulama aracı değil, doğrulama sonrası izleme aracı olarak kullanmak daha doğru. Kendi taramanız hatayı bulur, Search Console düzeltmenin Google tarafında karşılık bulup bulmadığını zaman içinde gösterir. İkisi birbirinin yerine geçmiyor.
Bir de sitemap tarafı var: hreflang bildirimlerini sayfa etiketi yerine XML sitemap üzerinden vermek, özellikle çok sayfalı sitelerde şablon dağınıklığını azaltıyor. Yöntemi değiştirmek hataları kendiliğinden çözmüyor ama tek doğruluk kaynağı kurmayı kolaylaştırıyor — ki listedeki hataların kök nedeni çoğu zaman tam olarak bu kaynağın olmaması.
Production'da tespit: üç katmanlı doğrulama
Bu hataların hiçbiri gözle sayfa açarak güvenilir biçimde bulunamıyor. Tekrarlanabilir bir doğrulama için üç katman gerekiyor.
Birinci katman: işlenmiş HTML üzerinden tarama. Sitenin tamamını tarayıp her URL'nin hreflang bildirimlerini çıkarın. Kritik nokta, kaynak HTML'i değil işlenmiş HTML'i almak — hreflang etiketleri istemci tarafında ekleniyorsa kaynak HTML'de görünmüyor. Çıktı, her URL için bildirilen locale listesi olmalı.
İkinci katman: graf doğrulaması. Tarama çıktısını bir yönlü graf olarak ele alın ve şunları programatik olarak kontrol edin: her kenarın karşılığı var mı, her düğüm kendini içeriyor mu, her bileşenin boyutu beklenen dil sayısına eşit mi, dil kodları geçerli listede mi, hedef URL'ler 200 dönüyor mu. Bu beş kontrol, listedeki on iki hatanın çoğunu otomatik olarak yakalıyor.
Üçüncü katman: çelişki kontrolü. Her URL için hreflang beyanını canonical, sayfa lang özniteliği ve sitemap'teki girdiyle karşılaştırın. Bu üç kaynak arasındaki her uyuşmazlık bir bulgu.
Bu üç katmanın çıktısı bir liste değil, bir rejim olmalı. hreflang bir kez düzeltilip bırakılabilen bir şey değil; her yeni sayfa şablonu, her yeni dil ve her migrasyon yeni kırılma noktası üretiyor. Doğrulamayı yayın akışının içine koymak, altı ay sonra yapılan bir denetimden hem daha ucuz hem de daha etkili.
Bu tür sürekli doğrulama kurulumlarını teknik SEO çalışmalarımızın standart parçası olarak ele alıyoruz; kurulumu birlikte gözden geçirmek isterseniz bize yazabilirsiniz.
Son bir not sıralama üzerine: bu on iki hatayı bulduğunuzda hepsini aynı anda düzeltmeye çalışmayın. Önce çelişen sinyalleri (9-12) çözün, sonra kod ve URL hatalarını (5-8), en son grup yapısını (1-4). Ters sıradan gidildiğinde, düzeltilmiş grup yapısı hâlâ çelişen canonical'lar yüzünden işe yaramıyor ve düzeltme yapılmamış gibi görünüyor.