"/>"/>
Yazılım Dilleri
Asp.Net 4.5 Kitabı
Skip Navigation Links

Asp.Net FriendlyUrl ile SEO Uyumlu Link Oluşturma

Asp.Net FriendlyUrl ile .Net Framework 4.0 ve 4.5 projelerinde SEO uyumlu link oluşturma işlemini nasıl yapacağımızı öğrenelim.

Asp.Net ile klasik URL Routing ve URL Rewrite ile SEO dostu link oluşturma işlemini gerçekleştirebiliyorduk. Bu işlemi Microsoft’un Asp.Net 4.0 ve 4.5 versiyonlarını destekleyen FriendlyURL kütüphanesini (Microsoft.AspNet.FriendlyUrls) kullanarak da gerçekleştirebiliriz.

Bu kütüphene ile örneğin

  • http://localhost:60380/Hakkimizda.aspx sayfasına artık http://localhost:60380/Hakkimizda linki ile erişebileceğiz.
  • http://localhost:60380/Urun.aspx?id=1 ürününe http://localhost:60380/Urun/Urun1 linki ile erişebileceğiz.

Bu işlem için web projeniz ya da web sitenizin solution’ına NuGet ile Microsoft Asp.Net Friendly URLs’i kurmanız gerekmektedir.

Kurulum işlemi tamamlandıktan sonra paket, App_Code > App_Start > RouteConfig.cs sınıfını oluşturuyor. Bu sınıf içerisinde SEO dostu URL oluşturma işlemi enable olarak tanımlanıyor (routes.EnableFriendlyUrls).

using System.Web.Routing;
using Microsoft.AspNet.FriendlyUrls;
namespace ASP
{
    public static class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.EnableFriendlyUrls();
        }
    }
}

Route ayarlarının uygulama tarafından çalıştırılabilmesi için Global.asax’ta uygulama başladığında (Application_Start) tanımlamasını yapalım.

Global.asax

void Application_Start(object sender, EventArgs e)
{
    RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes);
}

Yaptığımız işlemlerin uygulamamızı nasıl etkileyeceğini inceleyelim. Bu işlem için bir adet Master Page ve 4 adet sayfa ekleyelim:

  • MasterPage.master
  • Default.aspx (anasayfa)
  • Hakkimizda.aspx (hakkımızda sayfası)
  • Urunler.aspx (ürünlerin listelendiği sayfa)
  • Urun.aspx (ürün bilgisinin bulunduğu sayfa)

Masterpage içerisine anasayfa, hakkımızda ve ürünler sayfalarının linklerini FriendlyUrl’e uygun şekilde tanımlayalım:

  • http://localhost:60380/Default
  • http://localhost:60380/Hakkimizda
  • http://localhost:60380/Urunler

MasterPage.master

<body>
    <form id="form1" runat="server">
        <div>
            <a href="/Default">Anasayfa</a> | <a href="/Hakkimizda">Hakkımızda</a> | <a href="/Urunler">Ürünler</a>
        </div>
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>
    </form>
</body>

Projeyi çalıştırıp anasayfa ve hakkımızda linklerine tıkladığınızda URL’lerin sonunda .aspx uzantısının olmadığını göreceksiniz.

Linklerimizin bir kısmını SEO uyumlu hale getirdik. Şimdi ürünler sayfamızı açalım ve içine 3 adet ürün ekleyelim.

Urunler.aspx

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <a href="/Urun/Urun1">Ürün 1</a>
    <br />
    <a href="/Urun/Urun2">Ürün 2</a>
    <br />
    <a href="/Urun/Urun3">Ürün 3</a>
</asp:Content>

Ürün sayfamıza ise Urun.aspx sayfasında olduğumuzu belirtebilmek için “Ürün sayfası” metnini yazalım.

Urun.aspx

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    Ürün sayfası
</asp:Content>

Ürünler linkine tıklayıp sayfayı açınız.

Şimdi bir ürüne tıklayınız. Hangi sayfaya tıklarsanız tıklayın Ürün sayfası yazısını göreceksiniz. URL’in başında (http://localhost:60380’den sonraki bölümde) Urun linki yazdığından dolayı Urun.aspx’e yönlenmektedir.

Peki FriendlyURL’de hangi eleman ile işlem yapıldığını nasıl anlayacağız? (Farklı bir deyişle, ürün sayfasında hangi ürünün alındığı bilgisine nasıl erişeceğiz?)

Request.GetFriendlyUrlSegments(): Link içerisindeki segmentleri döndürür. Örneğin linkimiz http://localhost:60380/Urunler/Bilgisayar/Laptop1 olsun. Geri dönüş değeri olarak “Bilgisayar” ve “Laptop1” kayıtlarını IList<string> türünde geri döndürür.

Request. GetFriendlyUrlFileVirtualPath(): Hangi formun çalışmakta olduğu bilgisini döndürür. Örneğin linkimiz http://localhost:60380/Urunler/Bilgisayar/Laptop1 olsun. Geri dönüş değeri olarak “~/Urunler.aspx” kaydını döndürür.

Request. GetFriendlyUrlFileExtension(): Açılan formun uzantısı bilgisini döndürür. Sadece Asp.Net formlarıyla çalıştığı için html vb uzantıları geri döndürmez.

Değerleri görebilmek için Urun.aspx.cs’nin Page_Load eventına kayıtları yazıp değerlerine bakalım.

public partial class Urun : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        IList<string> segmentler = Request.GetFriendlyUrlSegments();
        string form = Request.GetFriendlyUrlFileVirtualPath();
        string uzanti = Request.GetFriendlyUrlFileExtension();
    }
}

Link: http://localhost:60380/Urun/Urun1

 

Yepyeni makalelerde görüşmek dileğiyle :)

Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com

 

Yorumlar (3)

  1. Avatar
    Furkan İlkbahar

    23.12.2013

    Friendly Url bu işi gerçekten kolaylaştırmış. Anlatımınız gerçekten cok iyi ve anlaşılır verdiğiniz bilgiler için teşekkür ederim. Şöyle bir soru yöneltmek istiyorum size, bu uygulamayı e ticaret sitesinde uygulamaya kalktığımızda adres çubugunda şöyle bir sonuc ortaya cıkıyor. >> http://localhost:1402/Urun/Dut%Pekmezi%500gr Burada "%" işareti boşluk yerine geçiyor peki bunu nasıl engelleyebiliriz.

  2. Avatar

    Could not load type 'ASP.ViewSwitcher'. bu hatayı alıyorum sorun neden kaynaklı olabilir?

  3. Avatar
    erdi onun

    20.11.2014

    Merhabalar veysel bey ben asp.netde seo link yapmayı gerçekten çok istiyorum bununla ilgili bana yardımcı olabilirmiş burdaki konuyu okudum ancak projem üzerinde Uygulayamadım rica etsem irtibata benimle gecermisiniz

Yorum Yap

Mail listesine katılmak için tıklayınız

Hakkımdaki son bilgilere anlık erişmek için mail listesine katılabilirsiniz.