URL Eşleştirme ve Yeniden Yazma (URL Mapping)

Eyl 06, 2013
Dinamik oluşturulan sayfaların artmasından dolayı, görünüş itibariyle karışık URL lerin sayısı da artmaktadır. Var olmayan ya da uzun ve karışık bir adres üzerinden başka bir sayfayı gösterme işlemine URL eşleştirme denir. Bu sayede asıl web sayfası gizlenmiş olmakla beraber, güvenlik açısından daha verimli sayfalar elde edilmiş ve bağlantının karışıklığı giderilmiş olur. 

Örneğin, "http://www.örneksite.com.asp?secenek=araba&prodID=234" şeklindeki bir URL;

  • Web sitesinin arka planında kullanılan teknolojiyi açığa çıkarmaktadır (bu örnekte ASP). Bu durum site kaynağına zarar vermek isteyenlere nasıl bir tür saldırı yapılabileceğine dair ipuçları verebilir. Dolayısıyla bu tür bilgiler mümkün oldukça gizlenmelidir.
  • Soru işareti, "ve" bağlacı(ampersand) gibi işaretler ve anlaşılması zor bir imla ile hazırlanmıştır.  Özellikle "ve" işareti olan "&"(ampersand) bazı sitelerdeXHTML uyumluluğu sorunu yaşanmasına sebep olmakta, çözüm için tüm "&" işaretlerin "amp&" şeklinde düzeltilmesi gerekmektedir. Gerek kullanıcının anlaması, gerekse kullanılabilirlik açısından oldukça verimsizdir. Kullanıcının bu tip bir URL ile karşılaşmaması önemlidir.
  • Kullanılan teknoloji değiştirilmek istendiğinde, örneğin PHP, çalışmayacaktır. Dolayısıyla tüm bağlantıların yeniden yazılması gerekecektir.

URL'yi yeniden yazma ile yukarıdaki karışık bağlantı daha anlaşılır, daha mantıklı, daha akılda kalıcı ve tüm arama motorları tarafından tanınabilecek şekilde basitleştirilebilir. Yeni URL, "www.örneksite.com/secenekler/araba/234" şeklinde olabilir.

ASP.net  bu ve benzer karışıklıktaki URLleri kısa ve anlaşılır hale getirmek için Web.config dosyası içinde kullanılan <urlMappings> etiketi sayesinde kolay bir çözüm sunmaktadır. Bu özellikle URL eşleştirmek bazı büyük kısıtlamalarla birlikte basit bir hal alır.

Örneğin;

  <urlMappings>
      <add url="~/olmayanAdres.aspx"        
           mappedUrl="~/Csharp/VarOlanAdres.aspx"/>

      <add url="~/ASPNet.aspx"         
           mappedUrl="~/Articles/ASPNet/Default.aspx"/>
      <add url="~/Framework.aspx"         
           mappedUrl="~/Articles/Framework/Default.aspx"/>
    </urlMappings>

şeklindeki yapılandırma ayarı kullanıcıyı mappedUrl özelliğinde belirtilen URL'ye yönlendirir. Dolayısıyla asıl URL'nin gizlenmesi sağlanmış olur. Örnek kod parçasındaki ilk eşleme örneği, benzer şekiller ile aşağıda gösterilmiştir.

Bu özelliğin geri adım attıran noktası, web sayfaları sayısı çok hızlı arttığı zaman ortaya çıkmaktadır. Bu durumda, URL Mapping özelliğini yapılandırma dosyası(web.config) içinde kullanmak çok zorlayıcı bir hal alabildiğinden, çözüm niteliğinde görülen URL Rewriting yönteminin sunduğu olanaklar kullanılabilmektedir. Ancak bu yöntemin kullanılabilmesi için HTTPHandler ve HTTPModule bilgisi ve IIS erişimi gereklidir.