Çok Dilli Faceted Navigation SEO Sorunları

Çok dilli sitede faceted navigation SEO sorunları ve URL yönetimi

Faceted navigation, kullanıcıların renk, beden, fiyat aralığı veya marka gibi özellik kombinasyonlarıyla ürünleri filtrelemesine olanak tanır. Her filtre seçimi çoğunlukla yeni bir URL üretir. Tek dilli bir sitede bu URL çoğalması zaten yönetilmesi gereken bir teknik sorun yaratır; beş filtre özelliği, her biri beş değer taşısa teorik olarak binlerce kombinasyon URL'si üretebilir. Çok dilli bir sitede bu sayı her dil sürümüyle çarpılır. Üç dilli bir katalog için bu, potansiyel olarak aynı filtreleme sorununu üç ayrı URL kümesinde yönetmek anlamına gelir.

Sorun salt matematiksel değildir. Filtrelenmiş URL'lerin çoğu gerçek arama niyetini karşılamaz; kullanıcılar "kırmızı erkek spor ayakkabı 42 numara deri" şeklinde arama yapmaz. Bu URL'lerin dizine girmesi, örtüşen içerik ve tarama bütçesi israfı üretir. Dizine girmemesi ise kimi zaman meşru seo değeri taşıyabilecek filtrelerin fırsatını kaybettirir. Bu iki uç arasında doğru çizgiyi bulmak zaten güçtür; çok dilli bağlamda her karar her dil sürümü için ayrıca geçerli hale gelir.

Platform seçimi bu sorunun biçimini doğrudan etkiler. Shopify, WooCommerce, Magento ve özel geliştirme ortamlarının her biri faceted URL'leri farklı biçimde üretir — ve çok dilli eklentilerin bu URL'leri nasıl işlediği platformdan platforma önemli ölçüde farklılaşır. Dolayısıyla bu konuda tek bir genel çözüm tarif etmek mümkün değildir; ancak tüm platformlarda geçerli olan kararların mantığı ortaktır.

Çok dilli sitede faceted navigation'ın ürettiği ölçek problemi

Tek dilli bir sitede 10.000 ürün ve 8 filtre boyutu içeren bir katalog, makul bir yönetimle birkaç yüz ya da birkaç bin dizine alınabilir URL üretir. Aynı katalog üç dil sürümüne taşındığında URL havuzu üçe katlanır; ancak asıl sorun sayının değil yönetim karmaşıklığının çoğalmasıdır.

Her dil sürümü bağımsız bir URL kümesi taşır. Almanca sürümdeki /de/schuhe/?farbe=rot&groesse=42, İngilizce sürümdeki /en/shoes/?color=red&size=42 ile içerik olarak eşdeğerdir; ancak teknik olarak birbirinden bağımsız URL'lerdir. Bu eşdeğerlik ilişkisini hreflang ile işaretlemek hem doğru bir sinyal üretir hem de Googlebot'un dil sürümleri arasındaki ilişkiyi anlamasına yardımcı olur. Ancak her filtre kombinasyonu için bu eşleştirmeyi dinamik olarak üretmek, statik hreflang yönetiminin çok ötesinde bir teknik altyapı gerektirir.

Çok dilli kategori sayfası kurulumunda temel hiyerarşi kararları verilirken faceted navigation'ın bu ölçek etkisini baştan hesaba katmak, sonradan yapılacak müdahalelere kıyasla çok daha az maliyetlidir. Filtreleme mimarisi kategoriden ayrı düşünülürse, kategori sayfası için alınan doğru kararlar filtre URL'lerine yayılmaz ve iki katmanlı bir sorun birikir.

Tarama bütçesi: her dil sürümü filtre URL'lerini ayrı bir maliyet olarak taşır

Googlebot bir siteyi taradığında sınırlı bir kapasite çerçevesinde çalışır. Büyük kataloglarda bu kapasitenin önemli bir bölümü değer taşımayan filtre URL'leri tarafından tüketildiğinde, gerçek anlamda dizine alınması gereken ürün ve kategori sayfaları daha seyrek taranır ya da hiç taranmaz. Çok dilli bir sitede bu sorun dil sayısıyla orantılı olarak büyür.

Tarama bütçesi kaybının belirtileri Google Search Console'da görünür hale gelir: keşfedilip dizine alınmamış URL sayısının artması, yeni ürün sayfalarının dizine girmesinin uzaması ve tarama istatistiklerinde beklenmedik artışlar bunların başında gelir. Ancak bu belirtiler genellikle gecikmeyle ortaya çıkar; faceted navigation sorunu baş gösterdiğinde etki çoktan birikmiş olur.

Filtre URL'lerini robots.txt ile taramadan tamamen dışlamak hızlı ve basit bir çözüm gibi görünür; ancak bu yaklaşım körce uygulandığında SEO değeri taşıyabilecek bazı filtre kombinasyonlarını da dışarıda bırakır. Örneğin "çocuk bisikleti 20 inç" gibi bir kombinasyon gerçek bir arama niyetini karşılıyorsa ve yeterli talep taşıyorsa, bu URL'yi engellemek organik görünürlük kaybına yol açar. Doğru yaklaşım, URL'leri toplu olarak engellemek değil; değer taşıyanları öne çıkarmak ve taşımayanları Googlebot'un zamanından ve dizin kapasitesinden dışlamaktır.

Canonical kararı: filtrelenmiş URL'lerde hangi sürüm yetkili?

Filtrelenmiş URL'lerin büyük çoğunluğu için canonical etiketi o filtre kombinasyonunun temel kategori sayfasına işaret etmelidir. Renk filtresi uygulanmış bir ayakkabı kategorisi sayfası için canonical, filtresiz kategori URL'sine çeker. Bu, arama motoruna "bu sayfa gerçek bir hedef değil, kategorinin filtrelenmiş görünümüdür" mesajını verir.

Çok dilli sitede bu kararın her dil sürümü için ayrı ayrı doğru uygulandığından emin olmak gerekir. Almanca filtre URL'sinin canonical etiketi Almanca kategori URL'sine; İngilizce filtre URL'sinin canonical etiketi İngilizce kategori URL'sine işaret etmelidir. Diller arası canonical — Almanca filtre URL'sinin canonical olarak İngilizce kategori URL'sini göstermesi — teknik olarak hatalıdır ve arama motorunun sinyalleri doğru dağıtmasını engeller.

Çok dilli canonical yönetimindeki temel ilke burada da geçerlidir: canonical etiket her zaman aynı dil sürümü içinde kalmalıdır. Filtre URL'lerinde bu kural sıkça ihlal edilir çünkü CMS'in otomatik canonical üretimi her zaman dil sürümünü dikkate almaz.

Bir istisna mevcuttur: kimi filtre kombinasyonları gerçek bir arama niyetiyle örtüşüyorsa ve bu kombinasyon için ayrı içerik üretilmişse, canonical o filtrelenmiş URL'nin kendisine işaret edebilir. Ancak bu karar, her filtre kombinasyonunu bireysel olarak değerlendirmeyi gerektirir ve çoğu katalog için uygulanabilir değildir. Pratik kural olarak: özel içerik üretilmemişse canonical daima filtresiz temel sayfaya çeker.

Hreflang ve filtre sayfaları: hangi kombinasyon çalışır?

Canonical etiketi filtrelenmiş URL'yi temel kategoriye çekiyorsa, o URL için hreflang uygulamak anlamsız hale gelir. Googlebot filtrelenmiş sayfayı canonical aracılığıyla zaten kategoriye bağlamış durumdadır; üstüne hreflang eklemek çelişkili sinyal üretir.

Genel kural şudur: canonical etiket kendisini gösteren — yani self-referencing — URL'lerde hreflang uygulanır. Canonical başka bir URL'ye işaret eden sayfalarda hreflang uygulamak teknik olarak desteklenmez ve büyük ihtimalle yok sayılır. Çok dilli faceted navigation'da bu kuralın uygulanması şu pratiği doğurur: yalnızca dizine alınması hedeflenen filtre kombinasyonları (yani kendi canonical'ını taşıyanlar) için hreflang eklenir; geri kalanlar için eklenmez.

Bu mantığı CMS düzeyinde otomatik hale getirmek, özellikle büyük kataloglarda kritik öneme sahiptir. Her filtre sayfası için manuel hreflang kararı vermek pratikte mümkün değildir. Şablon mantığı şu şekilde kurulabilir: eğer sayfanın canonical URL'si sayfanın kendi URL'sinden farklıysa, hreflang bloğu çıktıya dahil edilmez.

Sitemap, bu kararın yansıtıldığı bir diğer katmandır. Çok dilli sitemap yapısında yalnızca canonical URL'si kendisine işaret eden sayfalar yer almalıdır. Filtrelenmiş URL'lerin sitemap'e eklenmesi hem tarama bütçesini hem de dizin kapasitesini olumsuz etkiler; hreflang anotasyonlarının sitemap yöntemiyle uygulandığı yapılarda ise bu hata daha da büyür.

Platform ve CMS düzeyinde kontrol noktaları

Shopify, filtre URL'lerini çoğunlukla parametre tabanlı üretir: /collections/shoes?color=red&size=42. Shopify Markets ile çok dilli yapıya geçildiğinde bu parametreler dil subpath'i veya subdomaini ile birleşir. Shopify, filtre URL'leri için otomatik canonical üretir; ancak bu canonical her zaman doğru dil sürümüne işaret etmeyebilir. Özellikle Markets yapısında dil subdomain'leri arasındaki canonical davranışı manuel doğrulama gerektirir.

WooCommerce ile WPML kombinasyonu farklı bir sorun yaratır. WPML, her dil için filtre slug'larını çevirebilir; bu iyi bir şeydir. Ancak çevrilmiş slug'ların ürettiği URL kombinasyonları için canonical ve hreflang ataması otomatik olarak doğru çalışmayabilir. WooCommerce'in filtre eklentileri (örneğin WooCommerce Product Filters veya YITH WooCommerce Ajax Product Filter), WPML ile birlikte çalışırken beklenmedik canonical değerleri üretebilir. Her eklenti kombinasyonu kurulduktan sonra birkaç filtre URL'si elle kontrol edilmelidir.

Magento ve benzer kurumsal platformlarda faceted navigation genellikle yerleşik olarak gelir ve URL yönetimi yapılandırma seçenekleri aracılığıyla kontrol edilir. Bu platformlarda çok dilli kurulum yapıldığında, "mağaza görünümü" bazlı dil ayrımının filtre URL'leriyle nasıl etkileştiği platform belgelerinden bağımsız olarak test edilmelidir. Yaygın bir hata: mağaza görünümleri arasında canonical etiket paylaşılmasıdır; bu durumda Almanca mağaza görünümündeki filtre sayfası İngilizce mağaza görünümünün URL'sini canonical olarak taşır.

Dizine girecek ve giremeyecek URL'leri ayırt etmek

Tüm filtre URL'lerini engellemek tarama bütçesini korur ama SEO fırsatlarını kaybettirir. Hiçbirini engellemeden bırakmak ise URL enflasyonu ve içerik örtüşmesi üretir. Dengeli bir yaklaşım için filtre kombinasyonlarını değer taşıyıp taşımadığına göre sınıflandırmak gerekir.

Değer taşıyan filtre kombinasyonlarının ortak özellikleri vardır: o kombinasyona özgü gerçek bir arama niyeti mevcuttur, kombinasyon yeteri kadar ürün döndürür (tek ürün sayfaları zayıf kategori sinyali üretir) ve diğer filtre URL'leriyle anlam örtüşmesi yoktur. "Mavi deri erkek çizmeler" bunun güçlü bir örneğidir; "mavi çizmeler sayfa 3" ise değer taşımaz.

Çok dilli sitede bu değerlendirme her dil sürümü için ayrı yapılmalıdır çünkü arama niyetleri dil pazarlarına göre farklılaşır. İngilizce kullanıcıların "waterproof hiking boots" kombinasyonu için yüksek arama hacmi ürettiği bir kategori, Türkçe sürümde aynı yoğunlukta aramaya konu olmayabilir. Dolayısıyla İngilizce sürümde dizine alınmaya değer bulunan bir filtre URL'si Türkçe sürümde noindex ile işaretlenebilir.

Uygulamada bu ayrımı yönetmek için üç yöntem kullanılır. Birincisi noindex meta etiketi: filtrelenmiş sayfanın head bölümüne eklenir ve sayfanın Googlebot tarafından taranmasına izin verirken dizine alınmasını engeller. İkincisi robots.txt ile taramayı engelleme: sayfanın hiç taranmamasını sağlar; bu daha sert bir engeldir ve bağlantı değerinin akışını da keser. Üçüncüsü parametre tabanlı yönetim: Google Search Console'un URL parametreleri aracı artık eski işlevselliğini tam olarak sunmasa da bazı platformlar kendi parametre yönetim katmanlarını barındırır. Teknik SEO denetim listesinde faceted URL'lerin bu üç yöntemden hangisiyle yönetildiğinin kayıt altına alınması, ilerideki bakım süreçlerini büyük ölçüde kolaylaştırır.

Faceted navigation, çok dilli sitelerde en çok ihmal edilen teknik SEO konularından biridir. Bunun temel nedeni sorunun anında değil kademeli olarak ortaya çıkmasıdır. Yeni bir dil sürümü eklendikten ya da yeni filtreler devreye girdikten aylar sonra tarama bütçesi şikayetleri veya dizine alma sorunları baş gösterdiğinde, kökün faceted navigation'da olduğunu tespit etmek zaman alır.

Bu gecikme etkisini azaltmanın en pratik yolu, çok dilli kurulum aşamasında filtreleme mimarisini ayrı bir teknik kalem olarak değerlendirmektir. Kategori hiyerarşisi, dil URL yapısı ve hreflang kurulumu kararlaştırılırken filtre URL'lerinin nasıl üretileceği, hangi kombinasyonların dizine alınacağı ve canonical atamasının CMS düzeyinde nasıl otomatikleştirileceği aynı sürecin parçası olarak planlanmalıdır. Sonradan yapılan müdahaleler hâlâ işe yarar; ancak baştan kurulan doğru bir yapı çok daha az geri dönüşüm gerektirir.