Cumartesi, Aralık 21, 2024

CloudFlare Page Rules İle Karmaşık URL Yönlendirmeleri Nasıl Yapılır?

yüksek çözünürlüklü cloudflare logosu

Bir URL’i ezberlemesi insanlar için çok zordur. Bu sebeple gidip ya favorileri yada direk alan adını ezberleriz bu URL’ler başından beri kullanıcıların kullanması için değildi, genellikle sunucunun yararına otomatik olarak oluşturuldu ve kullanıldı. “Ne diyor bu adam yaaa” dediğinizi duyar gibiyim, evet sizin anlamanız için oluşturulmuyor ama gün sonunda biz SEO diyerek okunabilir bir hale sokuyoruz, normalde her yerinde query string geçer.

Tamam tamam bunu bir görsel ile anlatalım.

moz url nedir, url yapisi tanım, url yapısını anlatan kopya kağıdı

Tamda ben bu yazıyı kaleme aldığım sıralarda CloudFlare yeni bir özelliğini duyurdu. Dynamic URL Rewriting at the edge with Cloudflare Dinamik bir şekilde istediğiniz her yere yeniden yönlendirme komutları oluşturabilirsiniz. Bunu yaparken size o kadar esneklik sağlar ki kimi zaman web sunucularda yapması çile olan kuralları burada bir çırpıda oluşturabilirsiniz.

İşlemlere başlamadan hemen önce CloudFlare hesabınıza giriş yapın ve aşağıdaki ayarları açın. “Rules > Settings” rotasında görebilirsiniz.

cloudflare dinamik url yapılandırma, cloudflare url normalization, url normalizasyonu

Şimdi bu özelliğimizi açtık artık dönüştürülmüş olan bütün URL’ler bizim okuyabileceğimiz şekilde olacak nasıl mı?

URLNormalleştirilmiş URL
www.example.com/hello/www.example.com/hello/
www.example.com/%68ellowww.example.com/hello
www.example.com\hellowww.example.com/hello
www.example.com/./lang//en/hello./www.example.com/lang/en/hello./

Yani günün sonunda düzgün bir biçimde okunabilir ve anlaşılır bir URL elimize geçecek. Oha lan süper bir olay dimi URL yeniden yazma, istek web sunucusu tarafından alındığında gerçekleşir. Bağlantıda oluşacak bir yavaşlık veya web sunucusunun bu isteği düzgün algılamaması sonucunda pek çok hatalar meydana gelir. Web sunucusu doğru verileri oluşturulan parametrelere göre alır ve ardından tarayıcının adres çubuğundaki URL’de değişiklik yaparak tarayıcıya gönderir.

Aslında her şey tarayıcıya gönderilen bir Location başlığından ibarettir.

yönlendirme yapısı, location parametresi, http location headers

CloudFlare Statik URL Yönlendirme

Kullanıcıların HTTP isteklerinin doğru bir şekilde eşleşmesine statik veya dinamik rewrite kuralları kullanarak URI Path ve/veya Query Stringlerde değişiklik yapmasına olanak tanır. İstek web sitenize uğramadan cloudflare tarafından gerçekleştirilir ve kişi gerekli rotalara yönlendirilebilir. Statik bir rewrite, belirtilen bir URI Path/Query String diğerine değiştirir.

cloudflare statik yönlendirme örneği, statik yönlendirme nedir

İsterseniz bu yönlendirme işlemlerini belirli bir IP adresinden tutunda belirli bir ülkeye de yapabilirsiniz.

CloudFlare Dinamik URL Yönlendirme

Ne demiştik aklınızın kestiği ve mantıklı olan bütün yönlendirmeleri yapabilirdik. Bunu yapmak için biraz regex biraz CloudFlare functions kullanıcaz.

Öncelikli olarak diyeceğiz ki sonu .html olan içerikler ile eşleşirse yeni rotaya gitsin. Söylemesi kadar yazması da aslında kolay.

ends_with(http.request.uri.path, ".html")

Bu işlemin sonucu “True” olarak geldiğinde ise dinamik yönlendirmeye sokarak yeni rotasını belirleyebiliriz.

regex_replace(http.request.uri.path,"^/*.html","/
regex_replace(http.request.uri.path,"^/*.html","/${0}")
")

Kuralın son hali panel üzerinde şu şekilde gözükecek

cloudflare dinamik yönlendirme, dinamik rewrite,dynamic rewrite rules

Aynı kuralı ayrıca “Page Rule” sekmesinden aşağıdaki gibi hazırlayabiliriz.

cloudflare page rules, cloudflare sayfa yönlendirme, cloudflare üzerinden sayfaların yönlendirilmesi

Yukarda az buçuk bahsettiğimiz normalizasyon işlemi olası bir saldırı vektörünü kapatan yeni bir özelliktir. Bu özellik, kötü niyetli kişilerin, HTTP isteklerinde URL kodlaması kullanarak Cloudflare ürünlerindeki güvenlik kurallarını(WAF vb) atlatılmasını önler.

Bu gelişmiş koruma yöntemi, URL kodlamasının güvenlik özelliklerini atlamak için kullanılamamasını sağlar. Ek olarak, tüm gelen trafiği standart bir formatta normalleştirerek kullanıcı deneyimini iyileştirir.