Merhaba arkadaşlar, bu dökümanda php’de kolay ama asp.net ve iss için biraz baş belası olan url rewrite tekniğinden bahsedeceğim.Yaptığım örnekte Intelligencia.UrlRewriter.dll kütüphanesini kullandım.öncelikle bu dll’yi indirip bin klasörümüze kopyalayalım.Rewrite sınıfımızı (hazır) App_Code klasörine kopyalayım.indirmek için tıklayınız.web.config dosyamızda gerekli ayarları yapalım.1- Config sections tagından hemen sonra aşağıdaki kodu ekleyelim


2- rewriter modulunu web config’e ekleyelim.biz component kullandığımız için direkt olarak intelligenica ile ilişkilendireceğiz.system.web içine ekliyoruz.

3- rewrite yapacağımız sayfaları tanımyalayım.yine configiration tagı içinde yapıyoruz. ama system.web içine eklemeyin. congfiguration tagı kapanmadan hemen önce ekleyebilirsiniz.

burası bir az can alıcı nokta. rewrite tagında url bölümüne biçimi belirtiyoruz. gördüğünüz 2 * işaretli bölümler bu sayfanın 2 tane get parametresi alacağını gösteriyor. 2 bölümde de bunların değer bilgilerini tanımlıyoruz.$1 ve $2 olarak (id ve title)yani bu işlem haberdetaylari.aspx?id=23&title=haber_basligi şeklindeki linki haberler/23/haber_basligi.html haline getirecek. burda birden fazla tanımlama yapabilirsiniz.

ekran görüntüsü
ekran görüntüsü

Aslında olay bu kadar. visual web developer express’de bunu test edebilirsiniz.localde sorunsuz çalışacaktır.test için default.aspx sayfamıza aşağıdaki linkleri ekleyelim.Link gerçek
haberdetaylari.aspx?id=23&title=basligimiz_buraya_gelecek

link rewrite
haberler/23/basligimiz_buraya_gelecek.html


haberdetaylari.aspx sayfamıza page load’aResponse.Write(“id:”+Request.QueryString[“id”]+”
“);Response.Write(“başlık:” + Request.QueryString[“title”] + “
“);

evet örneğimiz sorunsuz çalışıyor haberdetaylari.aspx sayfamızda title ve id değerlerini alabiliyoruz.IIS ayarlarıLocalde herşey güzelken sunucuda bizi sürprizler bekliyor 🙂 aslında yapılması gereken ufak bir ayar ama çoğu server sahibi bunu anlamıyor. yardımcı olmuyor yada bilmiyor. ülkemizde hosting işlerinin nasıl yürüdüğünü az çok hepimiz biliriz.yine de ısrarcı olup yaptırabilirsiniz. ben hostumla anlaştım bu konuda.neyse kısa kesip ayarlara geçiyorum.Html uzantı tercih ettiğimiz için sunucudaki html ayarlamalarını yapmamız gerekiyor. lütfen hostunuzda iis’deki kendi siteniz ayaları için aşağıdaki ayarları yapmasını isteyin.

ISS UrlRewrite Ayarı
ISS UrlRewrite Ayarı

dizinin yapılandırma configuration’da html uzantılarını aspnet_isapi.dll’ye yölendirin. Limit olarak HEAD,GET,POST yazın ve dosya varlığı sına (check file exists) ayarını kaldırın.böylelikle istenilen html dosyasını aspnet_isapi karşılayacak ve dosyanın gerçekte olup olmadığını umursamayacak.aşağıda *.* için yapılmış örnek var siz sadce .html için yapın.

ISS UrlRewrite Ayarı
ISS UrlRewrite Ayarı

evet bu aşamadan sonra sunucunuzda rahatlıkla rewrite sayfaları çağırabilirsiniz.msdn dökümanı burada.Önemli not: iss .html ayarlarini değiştirdiğiniz için .html sayfalarını görüntüleyemebilirsiniz onun yerine .htm kullanabilirsiniz.Proje örnek kodu indirmek için tıklayın.benzer örneklerasp.netcodeprojectaynı mantıkla yapılmış sitedeki urlleri inceleyebilirsiniz.http://www.totnews.com/home.htmlumarım faydalı olmuştur.