ASP.NET ile SEO link Yapımı - ReWritePath Fonksiyonu

ASP.NET ile SEO link Yapımı - ReWritePath Fonksiyonu

Herkese merhabalar. bu yazıda sizlere ASP.NET ile SEO uyumlu linklerin yapımını anlatacağım. Yani linklerimizin istediğimiz gibi görünmesini sağlayacağız. Bu olaya ReWrite Path özelliği denilmektedir.

RewritePath fonksiyonu site içerisinde sanal olarak yönlendirmeler yapar. Sitelerin içerisindeki sayfaların adlarının daha kolay okunmasını ve SEO'ya uygun hale gelmesini sağlar. Bunu her bir sayfada yapmak yerine tek bir sayfada yapmamız bizim için daha kullanışlı olacaktır. ASP.NET içerisinde adresleri yeniden yazmak için ReWrite metodunu kullanırız.

Sayfaların adlarını Query String ilede değiştirebiliriz.Bu işlemlerimizi daha kolay yapmamızı sağlayabilir.

Table. Bu işlemi yapabilmeniz için request bilgisinin ve nereye değişeceğini bilmeniz gerekir. Çünkü bütün sitede aynı düzen çalışacaktır ve bütün sisteminiz aynı mantık ile linklerinizi dönüştürecektir. Bu dönüştürme bilgilerini link düzenlerini ve dönüştürme ile ilgili bütün bilgileride tekbir dosyada tutmamız gerekir. Bu dosya bir veritabanı dosyasıda olabilir. Veritabanımızda sayfa ID bilgisi gibi bilgilerle beraber yeniden yazdırılacak olan adreside bulabilirsiniz.

Örnek bir tablo


Request alan: /urunler/donanim.aspxKaynak Alan: default.aspx?urun=donanim
Request alan: /urunler/anakart.aspxKaynak Alan: default.aspx?urun=anakart

Request alan: /urunler/ram.aspxKaynak Alan: default.aspx?urun=ram

Rewrite olayı sadece server taraflı kodlarla olan bir durumdur. Yani client taraflı işlemler yapılmaz. Bu tarz işlemeri tek bir dosyadan yönetmek sistemimiz için en kolay olan işlemdir. Bunun için ASP.NET platformu için Global.asax adındaki dosyamıza kesinlikle sahip olmanız gerekir. Bu dosya sayesinde bütün sitede çalışacak kodları burada belirleyebilirsini ve buradan yazabilirsiniz. Bütün site için geçerli olan bazı önemli fonksiyonları bu dosya içinde barındırır. Bu dosyaya istersek kendimizde komutlar ekleyebiliriz. Biz bir komut eklediğimizde ASP.NET onu kendisi bulacaktır ve işlemlerini kendisi yapacaktır.


Örnek bir Global.asax dosyası 

    void Application_Start(object sender, EventArgs e)
    {
	// Site her başladığında çalışacak olan fonksiyon
    }

    void Application_End(object sender, EventArgs e)
    {
	//  Sistem her kapatıldığında çalışacak olan fonksiyon
    }

    void Application_Error(object sender, EventArgs e)
    {
	// Programın herhangi biryerinde herhangi bir hata alındığında çalışacak olan kodlar
    }

    void Session_Start(object sender, EventArgs e)
    {
	// Yeni bir session başlatıldığında çalışacak olan kodlar
    }

    void Session_End(object sender, EventArgs e)
    {
	// Session sonlandırıldığında çalışacak olan komutlar
    }

    void Application_BeginRequest(object sender, EventArgs e)
    {	// Bu fonksiyonuda biz yazdır.
        // Yukarıdakiler Global.asax dosyası ile Default olarak gelen komutlardır
    }

Bu kod Global.asax dosyasının başlığını göstermektedir ve projenizin kaynak klasöründe oluşturulur. Oluşturma işlemi otomatik olarak yapılır. Site her çalıştığında bu dosyanın içerisindeki kodlar çalışacaktır. Bizim sonradan yazdığımız komutta çalışacaktır.

Yukarıdaki Global.asax dosyamıza sadece Application_BeginRequest komutunu biz ekleyebiliyoruz. Geri kalanları otomatik olarak dosya ile birlikte gelmiş olacaktır. Event nesnelerinin her birisinin bir fonksiyonu ve onun içerisinde çalışacak olan bir iç değişkeni bulunur. Bu değişken fonksiyon çalışınca fonksiyonun içerisine otomatik olarak gider bizde bunu kullanabiliriz. Bunu kullanmak önemli bir durumdur.

BeginRequest Fonksiyonu : Bu fonksiyon ile ASP.NET sayfalarında herhangi bir istek olduğunda çalıştırırız. It Bu dosyanın türünün ne olduğu çok önemli değildir. Bir resim olabilir aspx dosyası olabilir hyani herhangi birşey olabilir. O dosya çağrıldığında bu fonksiyonun çağrılmasıdır.

BeginRequest fonksiyonu ile sayfalar çağrıldığında çağrılan sayfanın özelliklerini alacağız ve bu sayede sayfanıon seo olarak nasıl ve ne yazdırılacağını bulabileceğiz.

Tekrar edeyim bu fonksiyon sitenin her tarafında çağrılan dosyalardan sonra çalışacaktır.

Application_BeginRequest method: C#

void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext icerik = HttpContext.Current;
    string adres = icerik.Request.Path.ToLower();
    int uzanti_index = adres.LastIndexOf(".aspx");
    if (uzanti_index == -1) //uzantinin sistemde yazılmadığını anlıyoruz
    {
	return;
    }

    int son_icerik = adres.LastIndexOf("/content/");
    if (son_icerik == -1)
    {
	return;
    }
    int son_cizgi = adres.LastIndexOf('/');

    string cikti = adres.Substring(son_cizgi + 1, (uzanti_index - son_cizgi - 1));
  
    context.RewritePath("~/default.aspx?file=" + cikti, false); //adresi yeniden yazdırmış oluyoruz
}

Using HttpContext.Current : Bu metod ile sitede ahngi sayfadayız onun içerik değerlerini döndürüyoruz. Yani bu metod sayesinde sayfanın içerisindeki herhangi bir değere erişebiliyoruz

Rewriting Mantığımız: Alınan sayfanın değerine göre yeniden sayfa üretiyoruz. Mantık parametresini mesela query string ile döndürebiliyoruz.Daha sonra indexOf metodu ile arama yapıyoruz ve aradığımız değer varsa diyerekten yeni değerimizi yazdırıyoruz.

Son olarakta  yeni bir adres linki oluşturuyoruz ve adres çubuğuna yazdırıyoruz.

Bu metod URLMapping olayının dinamik halde olanıdır. URL Mapping ile web.config dosyamızda nesneleri tutuyoruz ve oradan gelen linke göre adresleri yeniden yazma işlemini yapıyoruz. Eğer buradaki veriler yanlış girilirse sayfada 404 hatası alınır. Yani oluşturulan sayfa değeri yukarıdakinden farklı olursa 404 hatası alınır. Bunu engelemek için değerlerimizi doğru bir şekilde girmeliyiz.

Bu yazımızda bu kadar. -- İyi Çalışmalar

Takipte Kalın

Burak hamdi TUFAN


Tags


Share this Post

Send with Whatsapp

Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment. Check your inputs!

Comments

  • There is no comment. Be the owner of first comment...