Asp.NET ile URL Rewrite

Bir süredir yoğunluk sebebiyle ilgilenemediğim makale yazma işini bugün bulduğum ilk boşlukta yaptım. Çok rahatlatıcı, öneririm. :)

http://sunali.com/blog/archive/2005/08/23/44.aspx adresine incelendiğinde sırasıyla “blog/archive/2005/08/23” klasörleri oluşturulmuş ve bu klasörün içerisinde de “44.aspx” isminde bir dosya olması gerektiğini düşünebilirsiniz. Fakat böyle bir zorunluluk yoktur. Asp.Net üzerinde bulunan bir interface’i kullanarak belirtilen adresin – URL kısmında kullanıcının yazdığı adres değiştirilmeden kaldığı halde – başka bir adrese yönlendirilmesini sağlayabilirsiniz.

Makalenin devamını http://www.yazgelistir.com/Makaleler/1000000790.ygpx adresinde okuyabilirsiniz.

14 Responses

  1. Yusuf says:

    bu güzel makale için teşekkür ederiz. Url rewrite bazan çetrefil olabilmekte. Bu konudaki karşılaşılan veya karşılaştığınız sorunlar ve çözümleri ile ilgili önerilerinizi paylaşırmısınız?

  2. Coskun SUNALI says:

    Selam,

    Öncelikle fikirlerinizi belirttiğiniz için ben teşekkür ederim.

    Yaşanılabilen sorunlardan bir tanesi, tarayıcıların http://localhost/1/2/3/4.aspx olarak rewrite edilmiş bir URL’de, src özelliği “a.jpg” olarak verilen bir resmi http://localhost/1/2/3/a.jpg olarak aramasıdır.

    Bu sorunu ise src özelliğini “/a.jpg” olarak verdiğinizde aşabilirsiniz. Path özelliklerinin başına tek bir / koyulması, bu path’in aranması işlemine root üzerinde başlanması gerektiğini tarayıcılara bildirmektedir.

    Aklıma gelen başka özel bir sorun yok. Eğer sizin yaşadığınız bir durum varsa, sorunu çözmeye çalışalım.

    İyi çalışmalar.

  3. Yusuf says:

    Bahsettiğiniz sorunla ben de karşılaştım ben de tüm imajların kaynağını server tarafında kaynağını tam vererek çözdüm. örneğin root altındaki grafik kalsöründeki a.jpg için http://www.siteurl.com/grafik/a.jpg. bunu server tarafında kendim belirtiyorum. Biraz zor oluyor ama sağlam bir yöntem.

    yine response.redirect lerde sorun çıkıyor. bunu yine aynı şekilde server tarafında full url yazarak çözüyorum..

  4. Coskun SUNALI says:

    Selam,

    Dediğim gibi src=”/grafik/a.jpg” şeklinde kullansanız, işinizi görmüyor mu?

    Bir de, Response.Redirect’lerde nasıl bir sorun çıkıyor?

    Teşekkürler.

  5. Yusuf says:

    response.redirect te de yine grafiğin kaynağını verirken karşılaştığımız sorunla karşılaşmıştım. daha çok asp.net 1.1 de vardı bu sorunlar. çünkü asp.net 2.0 da master page ile biçok şey sorunsuz çalışıyordu. asp.net1.1 usercontrol ler üzerinden yapmaya çalıştığımız için herşeyi, daha karmaşık ve içiçe bi yapı vardı.

  6. Yusuf says:

    sizin sitenizde olduğu gibi dosyanın uzantısını da saklayabilirmiyiz? asp.net bunun için sanırım sunucu üzerinde bir takım şeyler yapmak lazım. yazılımsal olarak sağlanamıyor. çünkü asp.net te dosya ismini vermeden klasör adını yazınca url ‘e , direk olarak klasör içerisinde default.aspx , default.htm dosyalarını arıyor. bulamazsa sayfayı bulamadım diyor. bu işlemi iis yapıyor. eğer bulursa default.aspx’i , ilgili sayfayı çalıştırıyor. rewrited page de olabilir bu.

  7. Coskun SUNALI says:

    Selam,

    Sitemdeki yazılım PHP ile yazılmış ve benim geçiçi olarak kullandığım bir yazılım. PHP bilgim de olduğu için biraz kişiselleştirdim.

    ASP.NET ile dediğiniz olayı yapmak mümkün. Yalnız bunun için ISAPI ile ilgili kodlar yazmanız gerekiyor.

    Google’da aratmanız durumunda birçok örnek çıkacaktır diye tahmin ediyorum.

  8. Tuna Toksöz says:

    Peki asp.net formunun action adresi? bu durumda değişmeyecektir(benim hatırladığım kadarıyla tabi). bir çok durumda sorun yaratabilir…
    Bunun için de google da arattığımızda çeşitli örnekler mevcut

  9. Coskun SUNALI says:

    Tuna Bey,

    Öncelikle geç cevap verdiğim için özür dilerim.

    Bahsettiğiniz durum için System.Web.UI.HtmlControls.HtmlForm class’ını base alarak Form class’ını kendiniz tanımlamalı ve System.Web.UI.HtmlTextWriter class’ının “WriteAttribute” methodunu kullanarak “action” özelliğini kendiniz tanımlamanız gerekmektedir.

    Umarım fikir işinize yarar.

  10. osman ayhan says:

    Selamlar Coşkun Bey,
    Merak ettiğim bir konu var;
    Neden URL Re-write konusunda MSDN de dahil olmak üzere bir tane bile VB.NET ile yazılmış kod yok? Ben bu kodu vb.net ile yazmayı başaramadım ne yazık ki…
    Konu hakkında fikirlerinizi bekliyorum…

    Selamlar…

  11. ugur says:

    http://www.urlrewriting.net/en/Default.aspx

    bu adresteki modülü kullanabilirsiniz. Test ettiğimde sorunsuz çalışıyordu. fakat file extesion olmadan çalışması için server da klasörleri default.aspx i açacak şekilde ayarlamak gerek. action sorunu için şu linke bakabilirsiniz:

    http://weblogs.asp.net/jezell/archive/2004/03/15/90045.aspx

  12. Ahmet Ertek says:

    Selam, bu bilgileri bizlerle paylaştığınız için teşekkür ederim. Ben biraz daha ileri götürerek bunları html uzantısına çevirdim. Local de sorunsuz çalışırken server da hata vermekte. Uzantıyı aspx yaptığımda ise düzelmekte.

    Yani 287-hava-sicakliklari.html de hata verirken

    287-hava-sicakliklari.aspx çalışıyor.

    Localde her ikiside çalışıyor. Nedeni nedir acebA? Kolay gelsin iyi çalışmalar.

  13. airsakarya says:

    Ahmet Ertek arkadaşım senin sorunun sunucu ile ilgili.

    şu adreste sunucu sahibinin yapması gereken ayarlardan bahsetmiş.

    http://www.kodaman.org/yazi/asp-net-te-url-rewriting

  14. Teşekkürler açıklamalarınız için

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.