Tem02
0

C# ile Sitemap Nasıl Oluştururum ve Güncellerim ?

.Net, C#, SEO Gönderiyi Paylaş

Sitemap Nedir ?

Bildiğimiz üzere Sitemap dosyası client tarafında bulunan ve sitenizin içeriği ile ilgili arama motorlarını bilgilendiren xml yapısında bir dosyadır. Sitenizdeki en önemli bağlantıları sitemap aracılığı ile google a tanıtabilir ve Google’ın tüm bu bağlantıları bulabildiğinden ve tarayabildiğinden emin olabilirsiniz. Halk arasında web sitesinin Google’a kaydedilmesi bu dosya yardımı ile gerçekleşmektedir.

Eğer WordPress gibi hazır platformlar kullanıyorsanız, yeni bir post eklendiğinde, YoastSEO  gibi bir eklenti kullanarak, kolayca sitemap dosyamızı oluşturabiliyor, otomatik olarak güncellenmesini sağlayabiliyoruz ve bu işlem için ekstra bir çabaya gerek olmuyor.

Esas konumuza geçmeden önce örnek olarak WordPress platformunda çok kullanılan bir eklenti olan YoastSEO aracılığı ile oluşturulan bir dosya örneğinini aşağıda paylaşıyorum.

sitemap-yoast-seo

Peki hazır bir platform kullanmıyorsak bu işlemi nasıl gerçekleştireceğiz. Sitemap dosyamızı nasıl güncelleriz?

C# ile Sitemap Güncelleme

Kullanacağımız senaryoda projemizin yazpısı front-end Angular 9 ve back-end de .Net Core 3.1 Web Api olarak kurgulanmıştır. Sitemap dosyamız client tarafında bulunmaktadır. Aynı server üzerinde barınmakta olan api uygulaması client klasörüne ulaşarak dosyamızı, her yazı eklenip silindiğinde güncelleyecektir. Ayrıca sitemap dosyasını yeniden oluşturma metodumuzda olacaktır.

Sitemap dosyasına ulaşmak için dolar.net/sitemap.xml  yolu genelde tercih edilmektedir.

Şimdi uygulamaya başlayalım…

Dosyamızı oluşturuken kullanacağımız SitemapNode sınıf yapısı aşağıdaki gibi olacaktır:

sitemap-node-class

SitemapFrequency propertisini ben kullanmadım, isteğe bağlı kullanılabilir.

SitemapNode sınıfının gerçek dünyadaki karşılığına örnek vermek istersek aşağıdaki gibi örneklendirebiliriz:

sitemap-created-nodes

Sıfırdan Sitemap Verisi Oluşturalım

Yani SitemapNode sınıfından oluşturacağımız her obje yukardaki url tagı ve içeriğinden bir tane oluşturmak içindir. Aşağıda açıklayacağım metod bize tüm bu objeleri liste halinde dönecektir. İlk kez dosyamızı oluşturduğumuzu farzediyoruz. Sistemdeki tüm postlar ve bağlantılar için bir collection oluşturup metoddan dönüyoruz. Şimdi metodumuzu inceleyelim:

generateSiteMap-method

Metodumuzun görevi tüm sitemap verisini List<SitemapNode> türündeki nodes objesiyle geri döndürmek. Örnek olması için gerçek bir uygulamadan aldığım satırları bir miktar değiştirerek paylaşıyorum. Temel metodumuz olan GenerateSiteMap metodu bize istediğimiz zaman sitenin son sitemap verisini döndürmektedir.

Sitemap Verisinden Sitemap Dosyası Oluşturalım

Sitemap verimiz artık elimizde olduğuna göre Sitemap.xml imizi oluşturmaya başlayabiliriz. Bu veriyi kullanarak sitemap.xml dosyasını aşağıdaki metod aracılığıyla oluşturalım:

generateSitemapAsync-method

Metodumuz yukarıda paylaştığımız “GenerateSiteMap” metodunu kullanarak sitemap verisini nodes objesine döndürüyoruz.

nodes-return-from-method

Sonrasında yeni aşağıda paylaşacağım metod aracılığı ile elimizdeki sitemap verisini xml dosyasına dönüştürüyoruz.

generate-sitemap-document

Metodumuz ihtiyacımız olan xml verisini oluşturmaktadır. Artık sadece xml verisini bir xml dosyasına kaydetmemiz gerekmekte. GenerateSitemapAsync metodumuzu biraz da geliştirerek dosyaya kaydetme işlemini yapalım.

GenerateSitemapAsync-task

GenerateSitemapAsync metodu hazırlanan xml verisini seçtiğimiz örnekte api ile client aynı iis te olduğu için koılaylıkla klasörlerde gezerek kayıt işlemini yapabiliyoruz. Aşağıdaki satırda xml dosyasını bir üst klasöre çıkarak, httpdocs altına ulaşıp kayıt ediyoruz:

doc.Save(“../httpdocs/sitemap.xml“);

Sıfırdan oluşturduğumuz sitemap.xml dosyamızı kaydetmiş bulunuyoruz.

Yukardaki metodu async yapmak zorunda değiliz bu sadece benim tercihim. Aşağıda normal versiyonunu da paylaşıyorum:

generateSiteMap-method-2

İlk aşamamız tamamlandı fakat gereksinimiz bitmedi, güncelleme durumunda ne yapmamız gerekiyor ona bakmalıyız.

Sitemap Dosyası Güncelleme

Sitemize yeni bir yazı eklendiğinde otomatik olarak sitemap dosyasına yeni bir node eklememiz gerekecektir. Bu sayede dosyamızı güncel tutabiliriz ve arama motorlarını yeni eklenen yazımızla ilgili bilgilendirmiş oluruz.

Aşağıdaki metodu kullanarak dosyamıza yeni bir node ekliyoruz. Metodumuz yine async fakat siz normal versiyonunu da kullanabilirsiniz:

addNodeToSitemapAsync-method

Metodumuz yeni bir node verisini parametre olarak almakta ve sitemap dosyamıza yeni nodu eklemektedir. AddNodeToSitemapAsync Metodumuzu nasıl çağırıyoruz, bir örnekle açıklamamızı zenginleştirelim.

Aşağıda yeni bir yazı eklenmiş ve sitemap dosyası güncellenmek istenmektedir. Yeni bir node oluşturularak metodumuza parametre geçilmiştir. Metodumuz async olduğunda ana thread yoluna devam etmekte, metodun çalışmasının bitmesini beklememektedir.

call-AddNodeToSitemapAsync-method

Yeni eklenen yazımız artık sitemap dosyamıza işlenmiş durumda. Uyguladığım çözüm belli bir projeye özeldir ve aynı IIS üzerinde bulunan 2 uygulama birbirinin klasörlerine kolayca ulaşabilmektedir. Farklı durumlarda çözümümüz bir miktar değişebilir fakat temelde sitemap oluşturma ve güncelleme metodlarımız paylaştığım şekilde olacaktır. Farklı durumlara, farklı çözümler geliştirilebilir ve özelleştirmeler yapılabilir.

Sizlerle paylaşmış olduğum bilgiler tamamen gerçek projelerde karşıma çıkan ve üstesinden geldiğim zorlukların çözümleridir. Bu çözümleri uygularken çok sayıda çalışmayı inceleyip ihtiyacım olan çözümü gerçekleştirdim ve sizlerle paylaşıyorum. Kesinlikle en doğru yöntem ve çözüm budur diyemiyorum fakat paylaştığım çözümler çalışmakta olan uygulamalarda kullanılmaktadır. Eleştirisi ve sorusu olan arkadaşlarım yorum bölümünü kullanarak bana ulaşabilirsiniz. Okuduğunuz için teşekkür ederim…

 

Yazar Hakkında

Comments are closed.