<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sunucu Yönetim - Server Management &#187; Url Rewriting</title>
	<atom:link href="http://www.sunucuyonetim.com/tag/url-rewriting/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sunucuyonetim.com</link>
	<description>vps, vds, esx, sunucu, server kiralama, alan adı, hosting, reseller</description>
	<lastBuildDate>Mon, 21 May 2012 08:52:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Url Rewriting</title>
		<link>http://www.sunucuyonetim.com/url-rewriting.html</link>
		<comments>http://www.sunucuyonetim.com/url-rewriting.html#comments</comments>
		<pubDate>Thu, 07 May 2009 14:34:27 +0000</pubDate>
		<dc:creator>Barış BODUR</dc:creator>
				<category><![CDATA[01 Sunucu Yönetim]]></category>
		<category><![CDATA[Url Rewriting]]></category>

		<guid isPermaLink="false">http://www.sunucuyonetim.com/?p=428</guid>
		<description><![CDATA[Sanırım web de dolaşırken siz de çok kez ismini duymuş ya da farklı farklı sitelerde uygulamalarını görmüşsünüzdür. Eğer neden sitenizde urlrewriting olması gerektiğini ve sitenize nasıl uygulayabileceğinizi merak ediyorsanız tam yerine geldiniz. Sağladıkları: 1. Sitenizin arama motorları tarafından daha detaylı indexlenir 2. Lamerlerin querystringlerinizle oynayıp bir şeyleri karıştırmasını engeller 3. Kullanıcıya daha hoş görünen bir [...]]]></description>
			<content:encoded><![CDATA[<p>Sanırım web de dolaşırken siz de çok kez ismini duymuş ya da farklı farklı sitelerde uygulamalarını görmüşsünüzdür. Eğer neden sitenizde urlrewriting olması gerektiğini ve sitenize nasıl uygulayabileceğinizi merak ediyorsanız tam yerine geldiniz.</p>
<p>Sağladıkları:</p>
<p>1. Sitenizin arama motorları tarafından daha detaylı indexlenir<br />
2. Lamerlerin querystringlerinizle oynayıp bir şeyleri karıştırmasını engeller<br />
3. Kullanıcıya daha hoş görünen bir adrese sahip olursunuz<br />
<span id="more-428"></span><br />
Normalde sitemizde bir makale yayınladığımız zaman adresi:</p>
<p>www.recepguzel.com/?articleID=1234 gibi olur.</p>
<p>Url Rewriting sonrasında ise:</p>
<p>www.recepguzel.com/1234/Url-Rewriting-Nedir gibi bir adrese sahip olabiliriz.</p>
<p>Özelliklerinden kısaca bahsetmeye çalıştıktan sonra şimdi de nasıl yapabileceğimize bakalım.</p>
<p>Aslında işlem temelde 3 aşamadan oluşuyor:</p>
<p>1-)IIS tarafındaki değişiklikler</p>
<p>IIS tarafında yapacağımız ufacık bir işlem yeterli olacaktır</p>
<p>* IIS’i açıyoruz ve url rewriting özelliği eklemek istediğimiz website/vdirectory üzerine sağ tıklayıp properties(özellikler)’e tıklıyoruz<br />
*</p>
<p>Virtual Directory/Web site tabı içerisinde Configuration düğmesine tıklıyoruz</p>
<p><img src="http://www.recepguzel.com/image.axd?picture=2008%2f12%2furl1.jpg" alt="" /></p>
<p>Karşımıza aşağıdaki gibi bir ekran gelecek, burada Add butonuna tıklıyoruz</p>
<p><img src="http://www.recepguzel.com/image.axd?picture=2008%2f12%2furl2.jpg" alt="" /></p>
<p>Açılan ekrandaki browse butonuna basıp “aspnet_isapi.dll” dosyasını buluyoruz.</p>
<p><img src="http://www.recepguzel.com/image.axd?picture=2008%2f12%2furl3.jpg" alt="" /></p>
<p>Genellikle bu adreste bulunur: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll</p>
<p>Extension alanına “.*” yazıyoruz.<br />
Limit to alanına “GET,HEAD,POST” yazıyoruz.<br />
# Son olarak da Check that file exist checkboxunun seçimini kaldırıyoruz.<br />
# Çıkan diğer ekranlara OK OK diyerek işin iis fazını bitirmiş oluyoruz.</p>
<p>Not: Windows server 2003 üzerinde Virtual Directory üzerinde Configuration üzerine tıkladığımızda farklı bir ekran gelir.</p>
<p>Çıkan ekranda Application extentions yerine Wildcard application maps altındaki insert butonuna tıklamanız gerekmektedir.</p>
<p><img src="http://www.recepguzel.com/image.axd?picture=2009%2f3%2fwin20031.jpg" alt="" /></p>
<p>Burada yine xp’de olduğu gibi aspnet_isapi.dll’i browse edip, Verify that file exist kutucuğunun checkini kaldırıyoruz ve OK ile işlemi kaydediyoruz.</p>
<p><img src="http://www.recepguzel.com/image.axd?picture=2009%2f3%2fwin20032.jpg" alt="" /></p>
<p>     2-)Web.config de yapılması gereken değişiklikler :</p>
<p>        Aşağıdaki satırları web.config içersinde gerekli yerlere yapıştırıyoruz</p>
<p>             a.) <configsections> tagları arasına aşağıdaki kodu yapıştıryoruz:</p>
<sectionname ="rewriter"requirePermission="false"type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
<p>             b.) <httpmodules>  tagları arasına aşağıdaki kodu yapıştırıyoruz:</p>
<p><addname ="UrlRewriter"type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/></p>
<p>             c.) <system .webServer>tagları arasına aşağıdaki kodu yapıştırıyoruz:</p>
<p><modulesrunallmanagedmodulesforallrequests ="true"><br />
<addname ="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule" /><br />
< !–[if !supportLineBreakNewLine]–><br />
< !–[endif]–>             Eğer yoksa Aşağıdaki kodu da aynı blok içine yazıyoruz:          </p>
<p>< !–[if !supportLists]–><br />
<validation validateIntegratedModeConfiguration="false" /></p>
<p>             d.)Son olarak <configuration> tagı içine aşağıdaki kodu yapıştırıyoruz:</p>
<p><rewriter><br />
<rewriteurl ="/([0-9]{6})(.*)/(.*)-(.*)"to="~/ArticleDetail/default.aspx?aid=$1"/><br />
</rewriter><br />
< !–[if !supportLineBreakNewLine]–>< !–[endif]–><br />
             Not:Burada benim makale gösterdiğim sayfam ArticleDetail klasörü içinde default.aspx olduğu için bu şekilde edit ettim, siz kendi sitenize göre değiştirebilirsiniz). Ayrıca rewriter url içine yazdığım ([0-9]{6}) regex komutunu yalnızca 6 karakterli rakamlarla sınırlamak için kullandım. siz kodunuzda  bu kısmı kaldırabilirsiz. Şu an ki hali &#8220;/123456/merhaba-dunya&#8221; şeklindeki formata göre yazılmıştır.</p>
<p>  3-) Classımızda yapılacak değişiklikler</p>
<p>             Class da bir değişiklik yapmadan önce referanslarımız arasına “Intelligencia.UrlRewriter.dll” dosyasını eklememiz gerekiyor. Sonra aşağıdaki fonksiyonu makaleye link verdiğimiz yani; makaleleri listelediğimiz sayfanın class ı içine kopyalıyoruz(bunu ayrı bir helper class ına da atabilirsiniz)</p>
<p>public static string GenerateURL(object Title, object strId)</p>
<p>        {</p>
<p>            //Article’ın konusu</p>
<p>            string strTitle = Title.ToString();</p>
<p>             #region Generate SEO Friendly URL based on Title</p>
<p>            //boşlukları trimleyelim.</p>
<p>            strTitle = strTitle.Trim();</p>
<p>            strTitle = strTitle.Trim(‘-’);</p>
<p>            strTitle = strTitle.ToLower();</p>
<p>            char[] chars = @&#8221;$%#@!*?;:~`+=()[]{}|\’<>,/^&#038;&#8221;".&#8221;.ToCharArray();</p>
<p>            strTitle = strTitle.Replace(&#8220;c#&#8221;, &#8220;C-Sharp&#8221;);</p>
<p>            strTitle = strTitle.Replace(&#8220;vb.net&#8221;, &#8220;VB-Net&#8221;);</p>
<p>            strTitle = strTitle.Replace(&#8220;asp.net&#8221;, &#8220;Asp-Net&#8221;);</p>
<p>             //noktaları da “-“ karakteri ile değiştirelim</p>
<p>            strTitle = strTitle.Replace(&#8220;.&#8221;, &#8220;-&#8221;);</p>
<p>             //Lüzumsuz karakterleri de bi güzel çevirelim</p>
<p>            for (int i = 0; i < chars.Length; i++)</p>
<p>            {</p>
<p>                string strChar = chars.GetValue(i).ToString();</p>
<p>                if (strTitle.Contains(strChar))</p>
<p>                {</p>
<p>                    strTitle = strTitle.Replace(strChar, string.Empty);</p>
<p>                }</p>
<p>            }</p>
<p>             //Sıra geldi aradaki boşluklara, onları da “-“ yapalım</p>
<p>            strTitle = strTitle.Replace(" ", "-");</p>
<p>             //Yanyana gelen “-“lerden de kurtuluyoruz</p>
<p>            strTitle = strTitle.Replace("–", "-");</p>
<p>            strTitle = strTitle.Replace("—", "-");</p>
<p>            strTitle = strTitle.Replace("—-", "-");</p>
<p>            strTitle = strTitle.Replace("—–", "-");</p>
<p>            strTitle = strTitle.Replace("—-", "-");</p>
<p>            strTitle = strTitle.Replace("—", "-");</p>
<p>            strTitle = strTitle.Replace("–", "-");</p>
<p>             strTitle = strTitle.Trim();</p>
<p>             //Halâ “-“ var mı acaba?</p>
<p>            strTitle = strTitle.Trim(‘-’);</p>
<p>            #endregion</p>
<p>             //Şimdi de linki istediğimiz şekle çeviriyoruz</p>
<p>            strTitle = "~/Article/" + strTitle + "-" + strId + ".aspx";</p>
<p>             return strTitle;</p>
<p>}</p>
<p>                Kod bloğumuzu da kopyaladıktan sonra artık link vermeye hazırız.</p>
<p>               Normalde bu şekilde vermemiz gereken linki:</p>
<p>            string url =”articledetail.aspx?ArticleId=1234”;</p>
<p>     bu şekilde veriyoruz :</p>
<p>            string url =GenerateURL(Title,ArticleId).ToString());</p>
<p>Not: Orijinal urlrewriter dosyasını kullandığımda aşağıdaki problemi yaşadığım için dll’i googlebot hatasına karşı editledim. isterseniz editlenmiş halini sayfanın sonundaki linkten indirebilirsiniz.</p>
<p>Exception type: HttpException<br />
Exception message: Cannot use a leading .. to exit above the top directory.</p>
<p>2009_3_Intelligencia.UrlRewriter</p>
<p>http://www.recepguzel.com</configuration></configuration></modulesrunallmanagedmodulesforallrequests></system></httpmodules></configsections></p>
<img src="http://www.sunucuyonetim.com/?ak_action=api_record_view&id=428&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.sunucuyonetim.com/url-rewriting.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

