Http Redirect ve Url Rewrite nedir ve ne işe yarar?

Bu flood’da Http Redirect ve Url Rewrite’ın nasıl çalıştığını ve hangi amaçlarla kullanıldığını anlatacağım.

Http/Url Redirect ya da Url Redirect bir web sayfasının birden fazla Url’den erişilebilecek şekilde kullanıma sunulmasıdır. Http Redirection, web sunucunun, web istemcinin yaptığı isteklere 301 (Moved Permanently) ya da 302 (Moved Temporarily — Found) kodları ile cevap vermesiyle oluşur. İstemci www․xyz․com’u istediğinde sunucu istemciye http 30x cevabı vererek istemciyi www․xyz․com/welcome sayfasına yönlendirebilir.

Aşağıdaki örnekte https://www․google․com'a yapılan isteğe 302 cevabı verilmiş ve istemci location bölümündeki adrese yönlendirilmiştir.

Yukarıdaki örnekte isteğe 302 yani geçici yönlendirme cevabı verilmiş ve istemcinin yönlendirilen adresi saklamaması istenmiştir. Eğer 301 yani sürekli yönlendirme cevabı verilseydi istemci gelen cevabı saklayacak ve sonraki isteklerde ilgili yönlendirmeyi web sunucuya sormadan kendi içinden yapacaktı. Tahmin edeceğiniz gibi bu iki kodun kullanılabileceği yerler farklıdır. Sitemizi www․xyz․com’dan www․abc․com’a taşıdıysak www․xyz․com’a yapılan isteklere 301 cevabı vererek tarayıcıda yönlendirmenin saklanmasını istemek yerinde olacaktır. Bazı web sitelerinin güncellenmesi sırasında “Sitemizi size daha iyi hizmet verebilmek için güncelliyoruz” mesajını görürsünüz. Web sunucu bu durumda istemciye güncellenme bitene kadar Http 302 cevabını verecek ve istemciyi www․xyz․com/maintenance gibi bir sayfaya yönlendirecektir.

Aşağıdaki örnekte Url kısaltma servislerinden biri olan bit․ly tarafından kısaltılan bit․ly/2zoi8ut’ye 301 cevabının verildiğini görüyoruz.

Not: HTTP/1.1 spesifikasyonu ile 301 ve 302 kodlarının yanına 303 (See Other) ve 307 (Temporary Redirect) kodları da eklenmiştir.

Bütün tarayıcılarda “redirect loop”a girilmesini önlemek adına bir maksimum redirect limiti bulunmaktadır. A sayfasının B’ye, B’nin C’ye ve C’nin de A’ya geri yönlendirdiği bir durumda redirect loop’a girileceği için tarayıcılar belirli bir limitten sonra redirect hatası verir.

Tarayıcılar redirect isteklerini otomatik olarak takip ederler, curl ise redirect'leri takip etmek için -L parametresini kontrol eder.

Url Rewriting de yukarıda anlatılan Url Redirect’e benzer işlevleri yerine getirir ancak Url Redirect’in aksine istemci etkileşimi gerektirmez, bütün işlemler web uygulaması içinde gerçekleşir. Uzun bir Url’i kısaltmak, anlaşılır ve sade göstermek için kullanılır. Örnek olarak http://xyz․com/search.php?book_title=abc Url’i yerine http://xyz․com/search/abc Url’i istemci tarafında görülür. Sunucu tarafına iletilen bu Url, sunucu içerisindeki Url Rewriting modülü sayesinde sunucunun anlayacağı ilk versiyonuna dönüştürülerek işlenir.

Url Rewriting sayesinde kullanıcılar daha sade Url’ler görür, arama motorlarına yardımcı olunur ve dolayısıyla site daha doğru indekslenir.