www.domain.com/makale.aspx?id=456 ( klasik URL )
www.domain.com/url-rewrite-teknigi-nasil-yapilabilir/456.article ( anlamlı bir url )
1.Uygulama
Uygulama tarafında yapmamız gereken öncelikle .makale uzantısı ile gelecek isteklerin çalıştırılacağı bir Interface'i ( IHttpHandlerFactory ) implemente eden bir kod yazmak. Aşağıdaki class ( www.domain.com/url-rewrite-teknigi-nasil-yapilabilir/456.makale ) URL ine cevap veren kod bloğudur.
public class myHandler : IHttpHandlerFactory
{
public myHandler()
{ // // TODO: Add constructor logic here // }
#region IHttpHandlerFactory Members
public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{
// s1 ve s2 bize / ve . nın string içindeki indexlerini getiriyor. www.domain.com/url-rewrite-teknigi-nasil-yapilabilir/456.article
int s1 = context.Request.RawUrl.LastIndexOf("/");
int s2 = context.Request.RawUrl.LastIndexOf(".");
// s1 ve s2 indexleri arasında kalan string ifadeyi okuyalım
string sID = context.Request.RawUrl.Substring(s1 + 1, s2 - s1 -1);
//HttpContext ine ait context Nesnesinin RewritePath metodunu kullanarak
context.RewritePath(context.Request.RawUrl + string.Format("?id={0}", sID));
// Asıl işimizi yapacak olan sayfayı, PageParser sınıfının aşağıdaki metodu ile ilgili parametrelerle istiyoruz ve döndürüyoruz.
return PageParser.GetCompiledPageInstance("~/default.aspx", pathTranslated, context);
}
Web.config
...
2.IIS Ayarları
IIS 6.0 da uygulamanın properties ekranına gelip Configuration tıkladığımızda, karşımıza yeni extension ekleyebileceğimiz bir ekran çıkıyor. Bu ekranda Add diyerek .article extension ını ekleyebiliriz. Tabi executable seçeneğine C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll yazmayı unutmayalım. Çünkü bu extension da, tıpkı aspx gibi çalışacağından, bu uzantıdan gelen istekleri de aspnet_isapi.dll karşılayacak.

Ve işte uygulamamız çalıştı

Uploaded with ImageShack.us
Hiç yorum yok:
Yorum Gönder