Zemin Zemin
bos
         Makalelerde Haberlerde Gruplarda
Arama Göstergesi
Site içi arama Site içi arama
Anasayfam Yap Favorilerime Ekle Bize Ulaşın IE7 Provider
BETA 2.1
IE6.0+, FireFox 2.0'ı destekler
 
   
bos bos bos
bos
Kapat
type kısmı eksik olmuş ilhan doğan [04.04.2007 18:16:29]
Aslında type="myhandler, myhander, Version=0.0.0.0, Culture=null, PublicKeyToken=null" gibi. Birde HttpCOntext.Rewrite özelliğide kullanılabilir

Tüm Yorumları Oku

Başlık
Yorum
« Geri Yorumlar Makaleyi Sakla Arkadaşıma Gönder Yazdır

Yazar : Timur Gündoğdu
Okunma Sayısı : 26715
Tarih : 28.01.2007 21:46:28
Kategori : ASP.NET
Konu : URL Rewrite Nasıl Yapılabilir?
Açıklama : 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.

URL Rewrite Nasıl Yapılabilir?

Örnek Uygulamayı İndir

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
<system.web>
<httpHandlers>
<!-- Tüm request çeşitlerinde eğer path imizin sonunda .article varsa myHandler sınıfı işlet -->
<add verb="*" type="myHandler" path="*.article"/>
</httpHandlers>
...
</system.web>

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.

Resmi Büyütebilirsiniz

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


Timur Gündoğdu
Yazılım Geliştirici
timurg@aspnedir.com
http://timurg.blogspot.com

 
Şifremi Unuttum
Üye Ol

ASP.NET AJAX
ASP.NET AJAX Kitabı

Röportaj Dr. Arzu Baloğlu ile Türkiye ve Bilişim üzerine keyifli bir röportaj...


isarayan.org
Yenibiriş Logo
 
bos bos bos
bos Hakkımızda