Kategoriler
Kodlama

Cloudflare URL normalization

Cloudflare’ın URL normalization kısmında sunduğu ekstralar hakkında, artısı eksisi ve neden kullanılmalı?

Cloudflare’ı seviyoruz. Cloudflare URL normalization / URL Normalleştirme(RFC-3986) esasen sunucu kaynaklarını daha verimli kullanmak adına ve SEO noktasında faydalı ve önemli bir özellik, burada Cloudflare ekstralarını kullandığınız taktirde bazı şeylerden feragat etmiş oluyorsunuz bunlardan bir tanesinin üzerine yazacağım. Ayrıca Cloudflare URL normalization hakkında özet bilgiyi de burada bulabileceksiniz.

URL normalization / URL normalleştirme

Cloudflare, gelen isteklerin URL’lerini tutarlı bir biçimlendirme standardına uyacak şekilde değiştirmek için bir URL normalleştirme özelliği sağlar. Bu özelliği Cloudflare panelinde “/rules/settings” sayfasında aktif edebilirsiniz bu ayar eğer değiştirmediyseniz normal şartlarda “RFC-3986 (Default)” ve ekstra Cloudflare normalleştirmeleri kapalıdır.

URL normalleştirmeyi etkinleştirdiğinizde, gelen tüm URL’ler, WAF özel kuralları, İşçiler ve Erişim gibi URL girdisini kabul eden sonraki genel ağ özelliklerine geçmeden önce normalleştirilir. Bu nedenle, trafiği URL’lere göre filtreleyen kural ifadeleri, gelen URL’nin biçiminden bağımsız olarak doğru şekilde tetiklenir. URL normalleştirme devre dışı bırakıldığında, Cloudflare URL’yi orijinal biçiminde kaynağa iletir.

Trafik Cloudflare aracılığıyla proxylendiğinde, URL normalleştirmenin belirli bir bölge için etkin olup olmadığına bakılmaksızın temel istek URL normalleştirmesi her zaman uygulanır. Örneğin, URL normalleştirmeyi kapatarak bir istek URL’sinde iki veya daha fazla bitişik eğik çizginin tek bir eğik çizgiye dönüştürülmesini devre dışı bırakamazsınız.

URL normalleştirme herhangi bir yönlendirme gerçekleştirmez ve bu nedenle ziyaretçinin tarayıcısında görüntülenen adresi değiştirmez. Normalleştirme işlemi etkinleştirildiğinde küresel ağda gerçekleşir ve daha sonra yürütülen Cloudflare özelliklerini ve (isteğe bağlı olarak) kaynak sunucuda alınan URL’yi etkiler.

Bu resim CloudFlare’in ne yaptığını bir nebze açıklıyor: Web sitelerini hızlandırıyor ve saldırganları engelliyor.
Bu resim CloudFlare’in ne yaptığını bir nebze açıklıyor: Web sitelerini hızlandırıyor ve saldırganları engelliyor.

Daha fazla reknik bilgi için: developers.cloudflare.com/rules/normalization/how-it-works/

URL normalization / URL normalleştirme ve Double slashes(//)

Normal şartlarda Cloudflare URL normalleştirme kullanmadan sonuncunuzun .htaccess dosyasında yapacağınız bir ekleme ile birden fazla eğik çizi/duble slashes(//) sorununu yönlendirme ile halledebilirsiniz, fakat bu yüksek trafikli bir proje ise sunucunuzu gereksiz yoran maliyetli bir yöntem olacaktır. JavaScript ise bildiğiniz gibi sunucu değil tarayıcı tabanlı çalışır dolayısıyla onula yapacağımız müdahale sunucuya yük bindirmeden yapılabilmekte, birazdan onu göreceğiz.

URL normalleştirme ayarında Cloudflare standardınıNormalize incoming URLs” ve “Normalize URLs to originher ikisini de açtığınız taktirde sunucunuza/sitenize gelen sorgular wolkanca.com/iletisim/ veya wolkanca.com//iletisim/ veya wolkanca.com////iletisim// şeklilerinde olsa bile sizin sunucunuzdan sunulacak sayfa her zaman wolkanca.com/iletisim/ olacaktır (daha fazla örnek: developers.cloudflare.com/rules/normalization/examples/). Bu durum sunucunuzun yorulmamasına sebep olarak bütçenize katkı sunar, öte yandan kullanıcıların bu URL’leri paylaşması durumu ve sayfalarda canonical head taglerinden biri yok ise arama motorları noktasında bir sıkıntı yaşanması olası dolayısıyla benim aşağıda sunacağım Javascript yöntemi ile bunun üstesinden gelmek mümkün.

Javascript:

let href = window.location.href,
	cleanhref = new RegExp(/([^:]\/)\/+/g);
if (cleanhref.test(href)){
	window.location.replace(href.replace(cleanhref, "$1"))
}

Bu kodu açıklamak gerekirse; regex window.location.href içerisinde https:// hariç sonraki path alanında Double slashes(//) var ise eşleşiyor, eşleştikten sonra bu fazladan eğik çizgileri temizleyip tarayıcının adres çubuğundaki URL’i normal olması gereken URL yapıyor, burada bilinçli olarak window.location.replace() kullandım çünkü bu yöntem ile(replace) tarayıcı önceki geçersiz kötü URL’e geri dönemez. Böylece hatalı URL’lerin paylaşılması ve SEO noktasındaki endişeleri çözmüş oluyoruz.

Özet:

Benim bu makaleyi hazırlamamdaki motivasyon insanların Cloudflare forumlarında ve stackoverflow’da gerçekten bu konuyu çok tartışmış olduklarını görmem oldu, konuyu özetlemek gerekirse Cloudflare URL normalization’da Cloudflare standartı ve “Normalize incoming URLs” ve “Normalize URLs to origin” ayarlarını açmanız bütçeniz ve sunucunuzun güvenliği için iyi fakat benim yazdığım JavaScript yöntemi ile SEO noktasındaki endişeleri de gidermenin faydalı olacağı.

Ek olarak bir önceki yazımda bahsetmiş olduğum Cloudflare URL Yönlendirmeler(Redirect Rules) konusunu da incelemenizi öneririm.

Kolay gelsin.