Sayfalar

16 Ocak 2013 Çarşamba

SEO Dostu Url Yapılandırması (Seo Frendly Url Rewriting)

Url routing yaparken özellikle türkçe karakterli olan url uzantılarını arama motorları için daha okunaklı hale getirmek için yeniden yapılandırabiliriz. Aşağıdaki fonksiyona türkçe olan url yi verdiginizde, tarayıcıda düzgün görünecek halde geri döndürür.
public static class UrlManager
{
    public static string ToSeoUrl(string IncomingText)
    {
        IncomingText = IncomingText.Replace("ş", "s");
        IncomingText = IncomingText.Replace("Ş", "s");
        IncomingText = IncomingText.Replace("İ", "i");
        IncomingText = IncomingText.Replace("I", "i");
        IncomingText = IncomingText.Replace("ı", "i");
        IncomingText = IncomingText.Replace("ö", "o");
        IncomingText = IncomingText.Replace("Ö", "o");
        IncomingText = IncomingText.Replace("ü", "u");
        IncomingText = IncomingText.Replace("Ü", "u");
        IncomingText = IncomingText.Replace("Ç", "c")
        IncomingText = IncomingText.Replace("ç", "c");
        IncomingText = IncomingText.Replace("ğ", "g");
        IncomingText = IncomingText.Replace("Ğ", "g");
        IncomingText = IncomingText.Replace(" ", "-");
        IncomingText = IncomingText.Replace("---", "-");
        IncomingText = IncomingText.Replace("?", "");
        IncomingText = IncomingText.Replace("/", "");
        IncomingText = IncomingText.Replace(".", "");
        IncomingText = IncomingText.Replace("'", "");
        IncomingText = IncomingText.Replace("#", "");
        IncomingText = IncomingText.Replace("%", "");
        IncomingText = IncomingText.Replace("&", "");
        IncomingText = IncomingText.Replace("*", "");
        IncomingText = IncomingText.Replace("!", "");
        IncomingText = IncomingText.Replace("@", "");
        IncomingText = IncomingText.Replace("+", "");

        IncomingText = IncomingText.ToLower();
        IncomingText = IncomingText.Trim();
            
        // tüm harfleri küçült
        string encodedUrl = (IncomingText ?? "").ToLower();

        // & ile " " yer değiştirme
        encodedUrl = Regex.Replace(encodedUrl, @"\&+", "and");

        // " " karakterlerini silme
        encodedUrl = encodedUrl.Replace("'", "");

        // geçersiz karakterleri sil
        encodedUrl = Regex.Replace(encodedUrl, @"[^a-z0-9]", "-");

        // tekrar edenleri sil
        encodedUrl = Regex.Replace(encodedUrl, @"-+", "-");

        // karakterlerin arasına tire koy
        encodedUrl = encodedUrl.Trim('-');

        return encodedUrl;
    }
}

4 yorum:

  1. bunu projede nereye eklemek gerekir

    YanıtlaSil
    Yanıtlar
    1. Normalde projenizde klasörleri ve yapıyı nasıl oluşturduğunuza bağlı, istediğiniz bir yere ekleyebilirsiniz. Kendi projelerimde genelde ayrı bir ClassLibrary projesi içerisinde yazıyorum. Kendi ClassLibrary projenizi oluşturursanız bu dll dosyasını istediğiniz projelerinize referans eder ve kullanırsınız.
      Genel amaçlı tüm sınıfları dll olarak yazmanız iyi olur.

      Sil
  2. add/ new item dan bi class mı ekliyorum yoksa yeni bir proje mi ekliyorum

    YanıtlaSil
    Yanıtlar
    1. Aynen dediğiniz gibi. UrlManager adında bir Class ekleyip kullanabilirsiniz.

      Sil