Asp.net ile Global.asax kullanarak Seo uyumlu url rewrite yapma

makale.baslik

Bu yazı ile ASP.Net ile yaptığınız projelerde url rewrite yapımını göreceksiniz.

Bildiğiniz gibi Google ve diğer arama motorlarında url rewrite’lı siteler daha değerliler. SEO dediğimiz bu yapıda linklerinizin düzgün olması çok önem kazanıyor.  Aynı zamanda link paylaşımında insanlar sitenize girmeden önce linklerinizden bilgi sahibi olabiliyorlar.

Url rewrite yaparak sayfalarınızda link yapılarını istediğiniz gibi düzenleyebiliyorsunuz.

Örnek olarak:

default.aspx  ---------- Anasayfa

makale.aspx?id=5 -- makale/seo-url-yapma/5

Linklerinizi istediğiniz formatta düzenleyebiliyorsunuz.

Makaleler içeren bir yapıda sayfalarımızı oluşturup urlrewrite bunun üzerinde gösterelim.

Bunun için öncelikle projenize Visual Studio da Ctrl + Shift + A kısa yolu ile Global.asax dosyasını projemize ekliyoruz. Url Rewrite komutlarını bu sayfada oluşturduğumuz fonksiyonda yazacağız.

url rewrite

Global.asax dosyamızı aşağıdaki şekilde düzenliyoruz.

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>
<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        UrlKalip(RouteTable.Routes);

    }
    
    void Application_End(object sender, EventArgs e) 
    {
        //  Code that runs on application shutdown

    }
        
    void Application_Error(object sender, EventArgs e) 
    { 
        // Code that runs when an unhandled error occurs

    }

    void Session_Start(object sender, EventArgs e) 
    {
        // Code that runs when a new session is started

    }

    void Session_End(object sender, EventArgs e) 
    {
        // Code that runs when a session ends. 
        // Note: The Session_End event is raised only when the sessionstate mode
        // is set to InProc in the Web.config file. If session mode is set to StateServer 
        // or SQLServer, the event is not raised.

    }
    void UrlKalip(RouteCollection routes)
    {
        routes.MapPageRoute("iletisim", "iletisim", "~/iletisim.aspx");
        routes.MapPageRoute("makale", "makale/{makale_adi}/{makale_id}", "~/makale.aspx");
        routes.MapPageRoute("anasayfa", "anasayfa", "~/Default.aspx");
    }
</script>

 

Öncelikle sayfanın üst kısmına

<%@ Import Namespace="System.Web.Routing" %>

kodunu ekleyerek Routing sınıfını kullanıyoruz.

Application_Start metotu içinde yazdığımız UrlKalip metodunu routing bilgilerini yollayarak çağırıyoruz.

Yazdığımız metodun kullanım çok kolay. Gelen url route bilgilerini MapPageRoute ile ilgili sayfa ile ilişkilendiriyoruz. Dikkat edeceğiniz kısım route value oluşturacağınız değerin süslü parantez içine yazılması.

kullanacağımız  UrlKalip metodu aşağıdaki gibi hazırlanacak.

void UrlKalip(RouteCollection routes)
{
    routes.MapPageRoute("iletisim", "iletisim", "~/iletisim.aspx");
    routes.MapPageRoute("makale", "makale/{makale_adi}/{makale_id}", "~/makale.aspx");
    routes.MapPageRoute("anasayfa", "anasayfa", "~/Default.aspx");
}

Bundan sonra sayfamızdaki linkleri oluştururken istediğimiz yapıda oluşturabiliriz.

Linklerimizi

<a href="/makale/url-rewrite-yapma/1">Url Rewrite yapma</a>

<a href="/anasayfa">Ana Sayfa</a>

Şeklinde Default.aspx sayfasındaki gibi oluşturup kullanabilirsiniz.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Ana Sayfa</title>
    <style> a{text-decoration:none;} </style>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <h3>Makaleler</h3>
            <a href="/makale/url-rewrite-yapma/1">Url Rewrite yapma</a><br />
            <a href="/makale/asp-net-ogreniyorum/2">ASP.NET öğreniyorum</a><br />
            <a href="/makale/mysql-ogreniyorum/3">MySQL öğreniyorum</a><br />
            <br />
            <a href="iletisim">İletişim</a>
        </div>
    </form>
</body>
</html>

 

Linklerdeki değişkenleri almak içinde ilgili sayfada

Page.RouteData.Values["makale_adi"].ToString();  

komutunu kullanabilirsiniz. makale.aspx.cs dosyasında olduğu gibi

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class makale : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lblMakele.Text = Page.RouteData.Values["makale_adi"].ToString();
        lblMakaleId.Text = Page.RouteData.Values["makale_id"].ToString();
    }
}

 

makale.aspx sayfasındaki labellerde verileri gösterdim. Siz projenize uygun işlemlerde kullanabilirsiniz.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="makale.aspx.cs" Inherits="makale" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Makale</title>
    <style>
        a { text-decoration: none; }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <h3>Makale Bilgisi:</h3>
            Makale:<asp:Label ID="lblMakele" runat="server"></asp:Label><br />
            ID:<asp:Label ID="lblMakaleId" runat="server"></asp:Label>
            <br />
            <br />
            <a href="/anasayfa">Ana sayfa</a>

        </div>
    </form>
</body>
</html>

 

Örnek uygulama dosyalarını indirmek için: UrlRewrite.zip

Paylaş:

Yorumlar

  1. Teşekürler öncelikle bu bilgiler için. Benzer şekilde Çalıştırdım, fakat her zaman ilk yönlendirmeye gidiyor benim yazdığım kodda. Yardımcı olursanız sevinirim. Örneğin aşağıdaki tanımlamaya göre makale aspx düzgün açılıyor. Fakat alttaki hizmet.aspx için tanımladığım yönlendirme de makale.aspx e gidiyor. load olayı şöyle: link.Text = RouteData.Values["linkhizmet"].ToString(); .... sorgular vs. Linkler de bu şekilde: <a href="<%# Eval("linkhizmet") %>"><%# Eval("ad") %></a> linkhizmet tabloda bulunan temizlenmiş başlık metni url şeklinde. void Application_Start(object sender, EventArgs e) { UrlKalip(RouteTable.Routes); } void UrlKalip(RouteCollection routes) { routes.MapPageRoute("makaleler", "{linkmakale}", "~/makale.aspx"); routes.MapPageRoute("hizmetler", "{linkhizmet}", "~/hizmet.aspx"); }