pillinetwork hesabınızla giriş yapın.

ASP.Net URLReWriter

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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='< % = <hltHttpModule.ReWriterPath("1", "İlk URLReWriterli Haber Sayfamız", "1" > % >Haberler </ a >< br />
< a href='< % = <hltHttpModule.ReWriterPath("2", "İlk URLReWriterli Oyun Sayfamız", "2" > % >Oyunlar </ a >< br />
< a href='< % = <hltHttpModule.ReWriterPath("3", "İlk URLReWriterli Makale Sayfamız", "3" > % >Makaleler</ a >< 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ı.
<httpModules>
<add name="hltModuleName" type="hltHttpModule" />
</httpModules>

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..

/* HLTSofTiNG yazdı. 07 Haziran 2009 23:51. 13 yorum var */

Yorumlar

yanlış.

html uzantılı siteler daha iyi indexlenmezler.

indexleme işlemi ile sayfa uzantısının uzaktan yakından hiç bir ilgisi yoktur.

url rewrite yapmanın bir tek amacı vardır o da anlaşılır linkler kullanmaktır. Böylece ziyaretçiler daha sitemize girmeden linkteki kelimeleri okuyarak hangi bilgileri içerebilecek bir sayfaya gideceklerini tahmin edebilirler. google da işte bu yüzden anlaşılan linkleri seviyor.

burada ve burada örnekleri var. onları da inceleyin.

/* if life="" then call BatsinBuDunya() */

Haklı olabilirsiniz ancak yaptığım bir çok web sitesinden anladığım örneklere bakarsak seo için bence öyledir.Çünkü HTML düz yazı stilidir. Ama asp.net düz bir yazı stili değildir.(Nedemek istediğimi umarım anlamışsınızdır.) Eğer sayfayı HTML yaparsak düz yazı stiline döner. ve ayrıca CSS yi en iyi destekleyen HTML dir. CSS de SEO ile doğru orantılıdır. Bu konudan emin olabilirsiniz. PR0 olan bir siteyi PR değeri 2 olan sitenin üsteriyor. Tabi ki sizde doğru söylüyorsunuz daha düzenli bir URL ve Google Optimizasyonunda BAŞLIK niteliği taşımasıdır. Bu konuda hak veriyorum ama emin olun HTML asp.net e göre daha iyi taranmaktadır. Bir çok yaptığım çalışmalardan en azından böyle gözlemledim. Eğer bu düşünceler yanlış ise ya google kafasına göre tanımlıyor yada google saçmalıyor. Çünkü bunun başka bir açıklaması olamaz.

/* HLTSofTiNG Devoloper. */

Desenize o zaman pilli siteleri ve kodaman.org yandı.

sitede uzantı yok hahaha:)))

server-client yapısına bir göz atmalısınız. zaten ne olduğunu biliyorsanız bir defa daha göz atın ;)

/* if life="" then call BatsinBuDunya() */

arama motoru url'de geçen kelimeye önem verdiği için bu şekilde göster önemlidir. bir de anlaşılabilirlik. hatta google kategori/konu şeklinde öneriyor.
ama uzantıyla ilgisi yok. google asp.net php yada html yada jsp ayrımı yapmaz zaten çok adeletsiz olurdu.

hltsofting çok komik tabirlerde bulunmuşsun. css'yi destekleyen htmldir ne demek ya :D güldürdün beni. zaten tüm web programlama dillerinin çıktısı htmldir. :)

Peki hiç asp.net de CSS çalışmayı denedinizmi? Nasıl oluyor ?? Benim HTML de yaptığım CSS lerin aynılarını nedense asp.net te yapamadımm peki bu HTML ile daha uyumlu hale getirmezmi? ve hala sanırım derdimi anlatamamaktayım. Bakın ben tecrübelerim bahsediyorum. Tamam dediğiniz gibi her sayfanın çıktısı HTML dir. Ama ben uyumluluğundan bahsediyorum. Diğerlerinde CSS çalışmaz demiyorum. Sadece CSS daha uyumlu olur diyorum. Peki soruyorum size. HTML ile bir sayfa yapıp google nin taramasını bekledinizmi? Ben yaptığım bir web sitesini ilk önce HTML yaptım aradan 4 hafta sonra asp.net ile yaptım. Hatta HTML yaptıktan sonra Google optimizasyonu çalışmaları bile yaptım. İlk yaptığımda 4. sayfada sıralamaya çıkan web sitesi ASP.Net ile yaptıktan sonra 7 ye düştü. Peki bunu nasıl açıklayabileceksiniz?

/* HLTSofTiNG Devoloper. */

HLTSofTiNG, bayağı bir araştırma yapıp bildiğini sandığın şeylerin doğrusunu öğrenmen gerekli.

/* fd */
@HLTSofTiNG sanırım bildirgec içinde biraz gezinti yapmak sana iyi gelecektir.

4.sayfadan 7.sayfaya düşmesinin nedeni uzantıdır dersen hata edersin. sayfaların isimlerini değiştirmek zaten sayfanın rank ını sıfırlar. aynı ranka ulaşman da zaman alabilir.

Benim HTML de yaptığım CSS lerin aynılarını nedense asp.net te yapamadımm

Şaka gibi.

ben de uzantının SEOya katkısı olduğunu düşünmüyorum. HTML in SEO ile ilgisi olmaması, makaleyi ekleyen arkadaşın bu konuda bilgisiz olduğu manasına gelmez ki! Ama yine de işin doğrusu her neyse öğrenmek lazım. Bir çok site, "html daha çabuk taranıyor" deyip, URL düzenlemesini ona göre yapıyor...

Ha şu var, Google'ın kendisi, .html uzantı kullanıyor. Artık "tarafsız olayım" derdinde midir, daha mı düzenli göründğünü düşünür bilemem :)

http://googleblog.blogspot.com/2005/12/build-your-own-google-homepage.html

Burada konu ile ilgli başka bir makale var

"Ben yaptığım bir web sitesini ilk önce HTML yaptım aradan 4 hafta sonra asp.net ile yaptım. Hatta HTML yaptıktan sonra Google optimizasyonu çalışmaları bile yaptım. İlk yaptığımda 4. sayfada sıralamaya çıkan web sitesi ASP.Net ile yaptıktan sonra 7 ye düştü. Peki bunu nasıl açıklayabileceksiniz?"

- Katliam.

/* Ayrıca benim DNA'mda çalışmak yok, KODum bozuk. */

Peki hiç asp.net de CSS çalışmayı denedinizmi? Nasıl oluyor ?? Benim HTML de yaptığım CSS lerin aynılarını nedense asp.net te yapamadımm peki bu HTML ile daha uyumlu hale getirmezmi? ve hala sanırım derdimi anlatamamaktayım. Bakın ben tecrübelerim bahsediyorum. Tamam dediğiniz gibi her sayfanın çıktısı HTML dir. Ama ben uyumluluğundan bahsediyorum. Diğerlerinde CSS çalışmaz demiyorum. Sadece CSS daha uyumlu olur diyorum. Peki soruyorum size. HTML ile bir sayfa yapıp google nin taramasını bekledinizmi? Ben yaptığım bir web sitesini ilk önce HTML yaptım aradan 4 hafta sonra asp.net ile yaptım. Hatta HTML yaptıktan sonra Google optimizasyonu çalışmaları bile yaptım. İlk yaptığımda 4. sayfada sıralamaya çıkan web sitesi ASP.Net ile yaptıktan sonra 7 ye düştü. Peki bunu nasıl açıklayabileceksiniz?

CSS dile göre değişiklik göstermez HTML ile kullanılan her css asp.net ile de php ile de kullanılır. HTML sayfayı asp.net yapmak en fazla 2dk sürer işi biliyorsanız :)

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu Yazıyı Tutanlar

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

pilliilan

son yorumlar

arama

pillinetwork