URL ReWriting (sayfa adresini yeniden oluşturma) işlemi özellikle sayfalarımızda QueryString'leri kullanırken sıklıkla başvurmak istediğimiz bir işlemdir. Bu işlem karmaşık olan sayfa adresleri daha okunur ve sade hale getireceği gibi arama motorlarının sitemizdeki sayfaları daha verimli şekilde yakalamasını da sağlar. URL ReWriting'i uygulamanın birçok yolu bulunmaktadır. Kullanım bakımından en kolay yollardan biri de web.config dosyası ile bu işlemi gerçekleştirmektir. web.config dosyasında <system.web> düğümü içerisinde açacağımız <urlMappings> düğümü ile bu işlemin kolay şekilde yapılmasını sağlayabiliriz. Örneğin yazarların bilgilerini görüntüleyen bir sayfada içerik QueryString'den alınan bir veriye göre oluşsun. Sayfa arka planda aslında Yazar.aspx?isim=ugur şeklinde çalışıyor fakat biz adresin Ugur.aspx şeklinde görüntülenmesini istiyoruz. web.config dosyası içerisine ekleyeceğimiz aşağıdaki kod parçaları işimizi görecektir. mappedUrl niteliği sayfanın gerçek URL'ini, url niteliği ise görüntülenmesi istenilen URL'ini belirler. Yani Ugur.aspx gibi bir sayfaya istek geldiğinde aslında böyle bir sayfa olmayacaktır fakat adres kısmında bu URL görünecek ve arka planda Default.aspx?isim=ugur URL'i çalıştırılacaktır.
<configuration>
<system.web>
<urlMappings enabled="true">
<add url="~/Ugur.aspx" mappedUrl="Default.aspx?isim=ugur" />
<add url="~/Emrah.aspx" mappedUrl="Default.aspx?isim=emrah" />
<add url="~/Burak.aspx" mappedUrl="Default.aspx?isim=burak" />
</urlMappings>
…
…
</system.web>
</configuration>
url niteliğinde relative adres belirlemek zorunludur. Yani çağrılacak URL'in tam yolunu ~/ şeklinde belirlemek gerekecektir. Bu işlemin çok az da olsa performans kaybına sebep olacağını da unutmamak lazım!
Not: Tanımlamalarda kullandığınız url bilgisindeki sayfaya ait uzantı ASP.NET tarafından ele alınan bir uzantı değilse(ör: htm, html gibi) bu uzantı için IIS'deki Handler Mappings'den tanımlama yapmalı ve uzantıyı aspnet_isapi.dll dosyasının ele almasını sağlamalısınız. Tabi ki site içerisinde kullandığınız başka htm, html uzantılı dosyalar varsa bu iş biraz başınızı ağrıtabilir.
Merhaba,
Sadece yukarıdaki adımları yazmak yeterli oluyor mu? Aynısını denedim ancak çalışmadı. Başk sitelerden baktığımda dll eklemek gerekiyor diyor?
dll eklemek gerekiyor mu?
Development Server’da sorunsuz çalışması lazım ancak IIS’e atıldığında tanımlama yapmak gerekebilir (sanki hatırlıyorum öyle birşeyler:))
Hangi noktada sorun yaşadınız tam olarak? Herhangi hata alıyor musunuz mesela?
Uğur hocam sanırım bu sistem işe yarayacak gibi fakat bu sistemi elle mi yönetiyoruz? bi de ben bu sistemle eski urlye gelecek istekleri yeni urlye yönlendirsem gogıl botlar farkeder mi?
Yani <add url="~/abc-urunu" mappedUrl="Default.aspx?ad=deneme-urunu&id=5" /> şeklinde kullandığım zaman botlar eski link hala çalışıyormuş gibi işlem yapıp http://www.abc.com/abc-urunu linkini gerçek link gibi görür mü?
Hmm. Tahminimce 301 kodu gönderiyordur ve eski linkler hala aktif olarak görünüyor olabilir. Bunu 1-2 sayfası deneyip birkaç gün bekleyerek görebilirsin. Eğer eski url’ler hala google’da duruyorsa php uzantılı dosyalar için bir custom HttpHandler yazıp, sayfa yönlendirmelerinde şu yazımdaki yolu uygulamalısın: http://www.umutluoglu.com/post/2009/04/25/aspnet-te-seo-uyumlu-sayfa-yonlendirme.aspx