SEO= Search Engine Optimization türkçe meali arama motorlarıyla web sayfamızın yakından ilişkiye girmesidir. Bu yakın ilişkiyle beraber web sayfamız, arama motorlarında web sayfamızı ilgilendiren aramalar sonucunda ilk sıralarda çıkacaktır. Bu durum web sayfamızın trafiğini, kullanıcı sayısını arttıracaktır. Ziyaretçi sayısı artması demek bir web sayfasının güzel yerlerde olması demektir. Seo teriminin neden gerekli olduğunu ne işe yaradığını kısaca açıkladık. Şimdi gelelim SEO‘ya başlamadan önce yapılması gereken ön hazırlıklara. Bu hazırlıklar önemli olduğu kadar biz yazılımcıların kendilerini geliştirmelerini de sağlamaktadır. Şimdi önemli olarak nitelendirdiğim noktaları maddeler halinde sıralayalım.
1.XHTML : Html kodlama yaptığımız her yerde, kodlamaya bazı kurallar getirerek sayfaların belirli bir standart içerisinde olmasını sağlamaktadır. Bu şekilde arama motorları aynı zamanda kodlama yapan yazılımcıya da puan vermiş oluyor diyebiliriz. Peki nedir bu kurallar ? Ne saçmalıyorsun sen ? En basitinden bir örnekle açıklayalım bu durumu.
Online Destek” id=”supportImg”/></html>Yukarıda iki adet resim ekleme kodu bulunmaktadır. Yukarıda bulunan resim yalnızca source değeri taşımaktadır ve sayfa herhangi bir browser ile görüntülenmek istendiğinde resim görüntülenir. Herhangi bir problem çıkmaz. Aynı durum alttaki resim içinde geçerlidir. Peki aralarındaki fark nedir ? Gelelim bu iki kod arasındaki farklara.  En önemli nokta  açılan her html tagi mutlaka ve mutlaka kapatılacaktır. İkinci önemli nokta ise <strong>xHtml</strong> kurallarına göre img taglarinde alt özelliği mutlaka yazılmalıdır. Ayrıca arama motorları sayfamızı tararken alt özelliğinde bulunan text ifadeyi de cacheleyerek hafızasında tutar. Bu da bizim için artı durumlardan yalnızca bir tanesidir. Sayfamızın xHtml uyumluluğunu, varsa hatalarını görüntülemek için w3 ye başvurabiliriz. Linkimiz <strong>http://validator.w3.org/</strong> buradan  sayfamızda <strong>xHtml</strong> hataları varsa onları görüntüleyebiliriz. Hataları düzelterek yolumuza devam etmemiz gerekir.<strong>2.CSS</strong>  <strong>Cascading Style Sheets</strong> yani stil şablonları anlamına gelir ki burası bizi ilgilendirmez. Bizi ilgilendiren kısım <strong>css</strong> içerisinde kullandığımız etiketlerin kullanıcının browser versiyonuna uygun olup olmadığıdır. Mesela İE6 nın png dosyalarını saçma sapan göstermesi gibi. Yada Mozilla daki görüntünün İE de farklı gözükmesi gibi. Bu durumlardan tamamen kurtulmak için <strong>css</strong> içerisinde kullanılan etiketleri browserlara göre değişken bir yapıya sokmak gerekir. Peki Nasıl ? ayrı ayrı css dosyalarımı yapıcam ?  gerekiyorsa evet. Ve <strong>css</strong> içerisinde bolca <strong>web 2.0</strong> etiketlerini kullanmak bizim yararımıza olacaktır.<br />
<strong>3.URL Rewriting</strong> :  Son zamanlarda sıkça rastladığımız güzel ve anlamlı linklerin arkasında yatan bir güzellik diyebiliriz.  Örnek  verelim hemen ve herkez hatırlasın ne demek istediğimi<br />
<html>http://www.siteadi.com/Kitap.aspx?Adi=Sql%20Ogreniyorum&KitapId=20&KategoriId=8</html>Yukarıdaki linki inceleyelim.Kitap  sayfasına query string ile  Kitap Adı, Id si ve kitabın bulunduğu kategorinin ID si gönderiliyor. Ve kitap sayfası acılırken bu bilgiler alınarak ilgili data kullanıcıya gösterilir.<strong>URL Rewriting</strong> ile bunu yazmak istersek<br />
<html>http://www.siteadi.com/Kitap.aspx?Adi=Sql%20Ogreniyorum&KitapId=20&KategoriId=8</html>8 numaralı kategori Bilgisayar kitapları olsun. Ve urlimizi şu şekilde değiştirelim.<html>http://www.siteadi.com/Bilgisayar-Kitaplari-kategorisindeki-Sql-Ogreniyorum-kitabı-8-20.aspx</html>Linkimiz bu şekilde peki nasıl ?Görüldüğü gibi kitabın bulunduğu kategori adını oluşturan kelimelerin arasına “ – ” işareti koyarak birleştirdik. Sonrasında “kategorisindeki”  kelimesini ekledik. Ve sonrasında kitabın adını yazdık. Son olarak kategoriId ve kitapId eklendi.Web sayfamızın bulunduğu dizin de böyle bir sayfa yok yönlendirme nasıl olacak ?<strong>URl rewritin</strong>g için çok fazla yöntem bulunmaktadır. Ben <strong>asp.net</strong> üzerinde bunu en basit şeklini göstereceğim.<br />
Uygulamamıza Global asax ekleyelim ve <strong> Application_BeginReques</strong>  methodunu kullanarak olmayan sayfalarımızı hangi sayfa veya sayfalara yönlendireceğimizi belirleyelim.<br />
<strong>Application_BeginReques</strong>t methodu her istekte çağrılan bir methottur. Dolayısıyla kullanıcı fiziksel olarak olmayan bir sayfa isteğinde buluduğunda <strong>Application_BeginRequest</strong>methodunda bu isteği yakalayacağız ve fiziksel olan bir sayfaya yönlendireceğiz. Böylece url değişmeden ve kullanıcı sayafaya gitmeden neyle karşılaşacağını bilerek istek sonucunu görüntüleyecektir.<br />
<csharp>protected void Application_BeginRequest(Object sender, EventArgs e){HttpContext incoming = HttpContext.Current;string oldpath = incoming.Request.Path.ToLower();//oldpath değişkenine istekte bulunulan urlimizi alıyoruz.if (oldpath != “”){int kategoriVarMi = oldpath.IndexOf(“-kategorisindeki-“);int kitapVarMi=oldpath.IndexOf(“-kitabı-“);if(kategoriVarMi!=-1 && kitapVarMi!=-1){string[] info =oldpath.Split(‘-’); // info dizisinin son iki elemanı kategori Id ve Kitap Id değerlerini getiriyor bize.string kategoriId=info[info.length-2];string kitapIdId=info[info.length-1];incoming.RewritePath(“Kitap.aspx?kategoriId=”+kategoriId+”&kitapId=”+kitapId);}}</csharp><br />
Böylece makyaj yaptığımız urlimizi bozmadan içerisinde sakladığımız dataları kullanarak kullanıcıyı görmek istediği kitabın sayfasına yönlendirmiş olduk. Böylece <strong>Seo</strong>için önemli bir adımı da geride bırakmış olduk. Arama motorları sayfamızı tararken bu linkleri her ne kadar tam anlamıyla anlamasa da karmaşık bir yapıda olmadığını anlayarak hanemize bir artı daha yazıyor.<br />
<strong>4.Meta Tagler</strong> : Hepimizin bildiği gibi meta taglar her web sayfasının içerisinde bulunan ilgili sayfanın tanımı yapan etiketlerdir. Öncelikle belirtmeliyim ki bu meta taglar için çok fazla asıp kesen, yazan çizen, yok öyle olmaz böyle olur denilir. Ben kendimce gerekli olduğunu düşündüğüm etiketleri anlatacağım.<br />
<strong>Title</strong>= Önemlidir. Sayfanın başlığını temsil eder. Mutlaka ve mutlaka kodlamanızı, her sayfada o sayfaya ait verileri dinamik olarak title etiketine yerleştirecek şekilde yapın.<br />
<strong>Keywords</strong>= Önemlidir. 15 kelimeden fazlasını kullanmanızı önermem. Mümkün olduğu kadar kısa kelimeler kullanarak ilgili sayfanın içeriğinde bulunan anahtar kelimeleri yazın. Kesinlikle sabit olmamalıdır. Yani ilgili sayfa çağrıldığında, çağrılan sayfanın içeriğine göre keywordsler dinamik olarak gelmelidir. Bu durumda arama motorları bize aşık olur..<br />
<strong>Description</strong>= Önemlidir. Maksimum 2-3 cümle yazmak yeterlidir. Bu cümleler çok uzun olmamalıdır. Yine dinamik yapımız burdada olmalıdır.<br />
<strong>Robots</strong>= Önemlidir. İlgili sayfanın arama motorları tarafından indexlenip indexlenmeyeceğini belirtir.<br />
Örnek : <meta name=Kısaca metalar ne kadar dinamik olursa arama motorları bizi o kadar çok seviyor diyebiliriz.5.Tasarım : Web sayfalarının en önemli noktalarından biri de hepimizin bildiği gibi tasarımdır. Tasarım kullanıcıyı siteye çekebilir de itebilir de. Kıvamı iyi tutturmamız lazım. Peki Seoiçin Tasarım nasıl olmalıdır.
-Eski tip kodlama yani iç içe girmiş tablolardan mümkün olduğu kadar uzak durmamız gerekiyor.-Style bilgisi içeren kodlarımızı kesinlikle css dosyamız içerisinde tutup css class mantıgında ilerlememiz bizim için iyi olacaktır.-Sayfalarımızın performansı açısından, sırf güzel gözükecek diye saçma sapan büyük resimler kullanılmamalıdır.-Sayfamız arama motorları tarafından ne kadar çok okunabilir olursa bizim için o kadar iyidir. Bu ne anlama geliyor ? Ne kadar az image kullanırsak o kadar iyi olacaktır.Şimdilik bu kadar…İyi Çalışmalar