Sayfalar

27 Ağustos 2010 Cuma

URL Rewrite Nasıl Yapılabilir?

URL rewrite yapmak için 1 den fazla yol olduğunu söylemek isterim.Bu yüzden makalenin başlığını "nasıl yapılır" değil "nasıl yapılabilir" olarak değiştirdim. URL Rewrite tekniği kısaca açıklamak gerekirse, sitemize ait URL lerin arama motorları için daha anlamlı ve şık hale getirmek amaçlı bir çalışmadır.Bu makalede IIS 6.0 ve IHttpHandlerFactory Interface'ini kullanarak şık URL ler yapacağız.

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

Bing'ı Seviyoruz. :)
Google'ı Seviyoruz. :)