Merhabalar.Günümüzde SEO (Search Engine Optimization) çok yaygın bir hale geldi. Bu da artık webmaster’ların web sitelerini uyumlu hale getirmek zorunda olduklarını hissettiriyor. Çünkü google de üst sıralarda gösterilmek bir webmaster için en büyük unsurlardan birisidir.Bizde bu yazımıda SEO uyumlu web sitesi yapacağız. Biliyorsunuzki Google de en iyi şekilde taranan web siteleri HTML türünde olan web siteleridir. Ancak günümüz şartlarında HTML türü web siteler pek fazla gözde değildir. Çünkü E-ticaret web siteleri emlak web siteler hatta artık günümüz şartlarında bir çok kurumsal siteler sonradan veri eklemek isterler. Bu HTML türündeki web sitelerinde ise sonradan bilgi eklenememekterdir.İlk önce bu bilgileri sonradan eklenip eklenmemesi olayından biraz bahsetmek istiyorum. Bilgileri sonradan eklenmesi database dir. Database bilgileri hafızasında tutarak istediğiniz zaman erişmenize düzenlemenize olanak tanır. Database yi HTML den kontrol etmek mümkün değildir. (şu an için öyle) Ama başka bir programlama dili olsun (örn: PHP, ASP, ASP.Net) çok rahat bir şekilde kontrol edilebilmektedir.
Şimdi siz diyeceksinizki URL Rewriter hakkında hiç bir bilgi içermiyor. Database anlatılıyor. Database ile URLRewriter in ne alakası var diyebilirsiniz. Şimdi bende size şöyle bir şekilde olayı özetleyim. Güzel bir web sitesi yaptınız. Tamamen dinamik ve bütün bilgileri database den çekmektedir. database den sayfa bilgilerini isterken belirli bir takım özelliklere göre isterseniz. (database ile ilgili gerekli yazıya buradan ulaşabilirsiniz.) Mesela her satır için bir ID numarası oluşturabilir ve buna göre gerekli bilgileri isteyebilirsiniz. Diyelimki web sitenizde menü olsun bu menü bilgilerinide databaseden çekiyor olsun. Menü bilgilerini çekerken ID numaralarınıda çekersiniz ve menü de herhangi bir iteme tıkladığınızda size ID numarasını da verir ve sizde ID numarasına göre içerisinde bulunduğunuz sayfayı yönlendirebilirsiniz (Bu örnek size belki bir anlam ifade etmeye bilir ancak daha sonraki yazılarımıda kontrol ederseniz anlamış olacaksınız). Şimdi ID numarasına göre sayfayı yönlendirirken QueryString olarak tabir ettiğimiz şekilde yönlendirirsiniz. Şöyleki; http://sitenizinadi.com/Default.aspx?ID=11 Burda kalın yazı ile yazılı olan kısım querystring dir. Bu ID bilgisine göre database deki bilgileri çağırır. İşte URLRewriter burda devreye giriyor. Eskiden http://sitenizinadi.com/Default.aspx?ID=11 olan sayfa URL nizi http://sitenizinadi.com/06/06/2009/itenizdeki-her-hangi-bir-icerik-/11.html şeklinde yapabilirsiniz. bu linkin sonuna baktığınızda HTML göreceksiniz. Aslında bu URLRewriter ile HTML oldu. Daha öncesinde ASPX) di. Mantığı ise çok basit. Sizin elinizdeki querystringi alıp başka bir URL ye eşitleme yapmaktadır. Eğer örnekleyecek olursak ID=11 ==>> Item-adi-11.html oluyor. Böylelikle hem SEO uyumlu oluyor hemde daha düzgün linkler elde etmiş oluyorsunuz. Peki SEO ile ne alakası var derseniz yukarı taraftada anlattığım gibi HTML siteler daha iyi indexlenir ve bizim sitemizda artık HTML uzantılı. Böylelikle seo uyumlu oluyor. Artık kodlamamıza geçelim isterseniz.public class hlt{public static string ReWriterPath(string ID, string ItemAdi, string Tip){//ilk önce adresimizi düzenleyelim isterseniz.string temp = “”;temp = ItemAdi.ToLower();temp = temp.Replace(“ç”, “c”); temp = temp.Replace(“ş”, “s”);temp = temp.Replace(” “, “-); temp = temp.Replace(“ğ”, “g”);temp = temp.Replace(“ö, “o”); temp = temp.Replace(“ü, “u);temp = temp.Replace(“.”, “-“); temp = temp.Replace(“-, “<);//Yukarıdaki işlem harf eşitleme işlemidir. Şöyleki ç harfi girildiğinde Adres çubuğuna c yapıyor gibi.//Tip=1 ise Haberler, Tip=2 ise Oyunlar, Tip=3 ise Makale lere yönlendirsin.switch (int.Parse(tip)){case 1:return "Haberler/" + DateTime.Now.Date.Day.ToString() + "/" + DateTime.Now.Date.Month.ToString() + "/" + DateTime.Now.Date.Year.ToString() + "/" + ID + "-" + Temp + ".html";break;case 2:return "Oyunlar/" + DateTime.Now.Date.Day.ToString() + "/" + DateTime.Now.Date.Month.ToString() + "/" + DateTime.Now.Date.Year.ToString() + "/" + ID + "-" + Temp + ".html";break;case 3:return "Makale/" + DateTime.Now.Date.Day.ToString() + "/" + DateTime.Now.Date.Month.ToString() + "/" + DateTime.Now.Date.Year.ToString() + "/" + ID + "-" + Temp + ".html";break;default :return "Oyunlar/" + DateTime.Now.Date.Day.ToString() + "/" + DateTime.Now.Date.Month.ToString() + "/" + DateTime.Now.Date.Year.ToString() + "/" + ID + "-" + Temp + ".html";break;}Bu class da adresisimizi düzenleyip yeni adresimizi oluşturacağız. Bu Class ile işimiz bitti. Şimdi yeni bir class daha ekleyelim ve şu kodları yazalım.public class hltHttpModule : IHttpModule{public hltHttpModule(){}}//Artık bı classımız bir HTTP modül oldu. Birkaç ekleme daha yaparak düzenlenmiş adresimizi yakalayıp ilgili veri ile yönlendircez.public void Dispose(){}public void Init(HttpApplication context){context.BeginRequest + = new EventHandler (Application_BeginRequest);}void Application_BeginRequest (object sender, EventArgs e){string myPath = HttpContext.Current.Request.RawUrl;if ( myPath.Indexof("Haberler") != -1){if ( System.IO.Path.GetExtension(myPath) == ".html"){string[] path = System.IO.Path.GetFileName(myPath).Split('-');HttpContext.Current.ReWritePath("~/Haberler", "", "id="+ path[0], true);}}if ( myPath.Indexof("Oyunlar") != -1){if ( System.IO.Path.GetExtension(myPath) == ".html"){string[] path = System.IO.Path.GetFileName(myPath).Split('-');HttpContext.Current.ReWritePath("~/Oyunlar", "", "id="+ path[0], true);}}if ( myPath.Indexof("Makaleler") != -1){if ( System.IO.Path.GetExtension(myPath) == ".html"){string[] path = System.IO.Path.GetFileName(myPath).Split('-');HttpContext.Current.ReWritePath("~/Makaleler", "", "id="+ path[0], true);}}}//Evet arkadaşlar. Artık burda girilen sayfanın gerekli değerini alıp ona göre bilgiye yönlendirebilir hale geldik. Yani kısacası artık işimiz bitti. Son bir işimiz kaldı oda artık o menüdeki itemleri neye göre göndereceğiz ??< a href='< % = % >Haberler< br />
< a href='< % = % >Oyunlar< br />
< a href='< % = % >Makaleler< br />
//işte bukadar ama son olarak web.config dosyasınada şu kod satırını ekledikten sonra tamamen işimiz birmiştir ve URLRewriter hazır hale gelmiştir.————->> Web.config dosyasına eklenecek kod satırı.

Evet elimize sağlık artık tamamen işimiz bitmiştir. Güle güle kullanın.Açıklamalar
1) Bu makaledeki kodları ezbere yazdığım için belki bazı yerlerde kodlama hataları yapmış olabilirim. Eğer takıldığınız yer ve hata varsa sorun bende sizlere yardımcı olmaya çalışayım.
2) Yazdığınız kod localde çalışıp belki hostinginizde çalışmaya bilir. Bununla ilgili olarak hosting firmanızla görüşüp Ben URLReWriter kullanıyorum. Lütfen HTML ile ilgili gerekli yapılandırmayı yapabilirmisiniz yazdığınızda çalışmaya başlayacaktır. Onunda sebebi asp.net dosyayı HTML yaptığınızdan dolayıdır. Ama yok ben hosting sağlayıcımla uğraşamam diyorsanız kodlamadaki bütün HTML leri ASPx yapıp projeyi tekrar çalıştırmanız yeterli olacaktır.Bir sonraki makalemde tekrar görüşmek üzere hoşçakalın..