Url Rewriting

Bu makalede size ASP.net ile nasıl URL REDIRECTing yapacağımızı anlatmaya çalışacağım. Bu makaleyi bir şekilde Google’den aratıp bulmuşsanız, .NET için UrlRewriting özelliğinin PHPde olduğu gibi  built-in bir özellik olmadığını, az çok anlamışsınızdır. Eğer kendinize ait bir SERVER iniz varsa ISS ayarlarıyla oynayarak UrlRewriting özelliğini bazı yönlendirmeler ve uzun uğraşlar sonunda yapabiliyorsunuz. Ama benim gibi Shared Hosting servisi veren bir firmadan hosting alıyorsanız, size ISS leriyle oynatmayacaklardır.

Öncelikle şunu belirteyim, Piyasada .NET için URL Rewriting özelliğini destekleyen bir firma yok, En son EASYCGI ile konuştum, ve onlarda desteklemediklerini söylediler. Piyasada gördüğünüz /bu-bir-url-rewriting.aspx gibi .NET le yapılmış siteler ya kendi serverlerine sahiptirler, yada hosting firmasıyla özel anlaşmışlardır (benim yaptığım gibi). Bu konuda TURHOST.com a teşekkürlerimi bildirmek istiyorum. Destek ekibi mükemmel, her türlü sorununuza anında çözüm geliştirebiliyorlar. Benim için kendilerindenIntelligencia.UrlRewriter.dll i server’lerine eklemelerini söyledim, müşterilerinin buna .NET platformu için çok ihtiyacı olduğunu anlattım ve sonunda eklediler. Yani aşağıdaki .dll i bir şekilde gerçek ortama deploy etmek istiyorsanız ya hosting inizi TURHOSTtan alın, yada biraz sancılı bir dönem sizi bekliyor. Reklamı hiç sevmediğim halde reklam gibi oldu fakat şuanda gerçekleri konuşuyoruz.

Peki neden URL rewriting? Neden kendimizi böyle sancılı bir kodlamanın içine çekiyoruz? Eğer web siteniz için google ve arama motorları kaçınılmaz dostunuzsa, cevaplar sizi tatmin edecek cinsten.

– Bildiğinize üzere Google ve MSN gibi arama motorları haricinde yüzbinlerce arama motoru var ve bunların çoğu QueryString tabir edilen /arama.aspx?tag=AnahtarKelime “?”dan sonrasını kayıtlarına dahil etmemektedirler.

– Google’da sürekli aynı sayfaya dönmeyi çok sevmiyor,/arama.aspx?makale=1 arama.aspx?makale=2 gibi. Bunun yerine Google’ye takip edebileceği bir yol sunmamız lazım, kedinin fareyi kovalaması gibi, /aramalar/138/fare.aspx/aramalar/234/peynir.aspx  burada 138, 234 gibi kelimeler aslında ID numaralarıdır ve muhtemelen, aslında gidilen sayfa/arama.aspx?makale=138 gibidir. Deneyimlerim Google’nin bu sistemi çok sevdiğini gösteriyor, Google Maps ‘e eklediğim 1500 küsür sayfa linkinin 2 hafta içersinde hepsi Indexlendi.
– Çoğu zaman kodlamanın güvenlik kısmına çok dikkat etmeyiz bu da, kendini Hacker zanneden bizim Lamer tabir ettiğimiz çocuklara SQL injection gibi basit uygulamalarla kendilerini tatmin etme şansı verir. UrlRedirecting bizi bu tür saçmalıklardan da koruyabilir çünkü gerçek dosya yollarını tahin etme şansları kalmaz. Hatta .aspx olan bir dosya uzantısı .html olarak bile gösterebiliriz, yada hiç göstermeyebiliriz! /aramalar/234/ gibi. URL bağımsız site oluşturmanın zevkini çıkarın.
– Ben UrlRedirecting’i bir Hosting firmasında birden fazla site barındırmak için de kullanıyorum, Bir sitemdewww.birincisite.com/ikincisite/ de yayınlanan ikinci domainimi www.ikincisite.com  olarak gösterebiliyorum. Hosting’e fazla para vermek istemeyen arkadaşlar için bir çözüm olabilir. Tabiki bunu yapabilmek içinde her iki domain’e de sahip olmanız ve ikincisite domaininizi ilgili url ye yönlendirmeniz lazım

Gelelim projemize, karışık gibi görünmesine rağmen size tavsiyem proje dosyalarını indirin ve aşağıda anlatılanları proje üzerinde görmeye çalışın, ilk denemenizden sonra ne kadar kolay olduğunu göreceksiniz

Öncelikle projemize Referanslar -> Browse sekmesinden binklasöründeki Intelligencia.UrlRewriter.dll eklentisini projemize ekliyoruz.

Daha sonra Web.Config dosyamıza aşağıda görüldüğü şekilde;

<configuration>

<configSections>
<!– ##### URL REWRITER CODE START #### –>

<section name=”rewriter” requirePermission=”false”type=”Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter”/>

<!– ##### URL REWRITER CODE END #### –>
</configSections>
</configuration>

Ve

<configuration>
<system.web>

<httpModules>

<!– ##### URL REWRITER CODE START #### –>

<add name=”UrlRewriter”type=”Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter”/>

<!– ##### URL REWRITER CODE END #### –>

</httpModules>

</system.web>

</configuration>

Kodlarını ekleyerek (kod parçacıklarının aralıklarına dikkat ediniz) Rewriting DLL imizin konfigürasyonlarını tanıtmış oluyoruz.

İşin en zevkli yanı yine Web.Config dosyasında artık URL lerle istediğimiz gibi oynayabiliyoruz.

<configuration>

<!– #################### URL REWRITER CODE START ##################################### –>

<rewriter>

<!– OUTBOUND LINK TO ACTUAL DOMAIN CHECK START –>

<!– Bu kısımda sitemize herhangi bir yanlış link ile gelinmişse, redirect yapmak istediğimiz linki giriyoruz –>

<redirect url=”~/tr/index.html” to=”~/tr/index.aspx”/>

<redirect url=”~/tr/index-1.html” to=”~/tr/index.aspx”/>

<redirect url=”~/tr/index-2.html” to=”~/tr/index.aspx”/>

<redirect url=”~/on/tr/(.+)” to=”~/tr/$1″/>

<!– OUTBOUND LINK TO ACTUAL DOMAIN CHECK END –>

<rewrite url=”~/tr/hizmetlerimiz/(.+).aspx” to=”~/tr/index.aspx?tag=$1″/>

<rewrite url=”~/tr/hizmetlerimiz/” to=”~/tr/hizmetler.aspx”/>

<rewrite url=”~/tr/il-ve-ilceler/(.+)-ili-(.+)-ilcesi-nakliye-hizmetleri-(.+).aspx” to=”~/tr/index.aspx?tag=$1-ili-$2-ilcesi-nakliye-hizmetleri&amp;ilceid=$3″/>

<rewrite url=”~/tr/il-ve-ilceler/(.+)-ili-nakliye-hizmetleri-(.+).aspx” to=”~/tr/index.aspx?tag=$1-ili-nakliye-hizmetleri&amp;ilid=$2″/>

<rewrite url=”~/tr/il-ve-ilceler/(.+)-ilceleri-nakliye-hizmetleri-(.+).aspx” to=”~/tr/il-ve-ilceler.aspx?il=$1&amp;secim=ilceleriyaz&amp;id=$2″/>

<rewrite url=”~/tr/il-ve-ilceler/” to=”~/tr/il-ve-ilceler.aspx”/>

<!– TEST –>

<rewrite url=”~/tr/Products/(.+)” to=”~/tr/index.aspx?tag=$1″/>

</rewriter>

<!– #################### URL REWRITER CODE END ##################################### –>

</configuration>

Burada dikkat edilmesi gereken nokta ne kadar (.+) koyarsanız sırasıyla yönlendirmek istediğiniz url de $1, $2, $3 gibi sıralama yapmanız gerekir.

That’s it. Güzel URL ler geliştirmeniz dileğiyle.

Proje Dosyasını indirmek için BURAYA tıklayın

Yazılımmutfagi.com Serkan Bal ‘dan alıntı yapılmıştır.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: