RewritePath (Yolu Yeniden Oluştur) Metodu ile Sayfa Yönlendirme

Eyl 06, 2013

ASP.net ile sunulan RewritePath (Yolu Yeniden Oluştur) metodu yazılımcıya Web sitesinin adresini istenilen şekilde değiştirme ve gizleme, istemciyi istenilen adrese yönlendirme olanakları sağlar. Bu metodu kullanarak;

  • Adresleri kolaylaştırma
  • Adres gizleme ile güvenlik
  • Arama motorları için en uygun şekle sokma uygulanabilir.

RewritePath (Yolu Yeniden Oluştur) metodu Http.Context.Current üzerinde tanımlı olup, ihtiyaç duyduğu tek parametre string (katar) türünden yönlendirme yapacağı adrestir.

Uygulama 1

Bu uygulamada RewritePath (Yolu Yeniden Oluştur) metodu, sayfa adresini gizlemek için kullanılacaktır. Örnek Web sitesi www.orneksite.com/Sayfa1.aspxadresinde bir sayfa barındırmaktadır. Bu uygulama sayesinde, istemciler Sayfa1.aspx sayfasını görüntülemek istediklerinde www.orneksite.com/Sayfa2.aspxadresine yönlendirileceklerdir. Bu sayede istemciden gizli olarak, görüntülemek istediği sayfa değiştirilecektir.

Sayfa1.aspx aşağıdaki gibi;

<form id="form1" runat="server">
         <div>
                  Bu, Sayfa1.aspx dosyasıdır.
         </div>
</form>

Sayfa2.aspx ise aşağıdaki gibi bir metin içermektedir. Bu sayede metodun çalışması kontrol edilebilecektir.

<form id="form1" runat="server">
         <div>
                  Bu, Sayfa2.aspx dosyasıdır.
         </div>
</form>

RewritePath (Yolu Yeniden Oluştur) metodunu kullanarak yolu yeniden oluşturacak kontrol ise Global.asax dosyası üzerindeki Application_BeginRequest (Uygulamayı Çalıştırma İsteği) metodudur. Bu sayede, istemci siteye ilk isteğini gönderir göndermez yeniden yazılmış yola yönlenecektir. Bu belgenin içeriği aşağıdaki gibidir;

protected void Application_BeginRequest(object sender, EventArgs e)
{
         if (HttpContext.Current.Request.Path.Contains("Sayfa1.aspx"))
                  Context.RewritePath("Sayfa2.aspx");
}

Uygulama 2

Bu uygulamada RewritePath (Yolu Yeniden Oluştur) metodu, istemcileri yeniden yönlendirmek için kullanılacaktır. Örnek web sitesi,www.orneksite.com/Default.aspx?sayfa=haber adresinden haber sayfasının yayınını yapmaktadır. RewritePath (Yolu Yeniden Oluştur) methodu ile istemciler bu sayfaya www.orneksite.com/haber/ adresiyle ulaşabileceklerdir.

Sayfa içeriği Default.aspx üzerinde aşağıdaki gibi tanımlanmıştır. Burada sayfaADI kimlikli etiket Default.aspx.cs tarafından dinamik olarak doldurulacaktır.

<form id="form1" runat="server">
         <div>
                  çağrılan sayfa:
                  <asp:Label ID="sayfaADI" runat="server"></asp:Label>
         </div>
</form>

Default.aspx.cs ise, sitenin adresine verilen sayfa değişkenini okuyarak Default.aspx üzerindeki sayfaADI kimlikli etikete yazacaktır. Bu dosya şu şekildedir;

public partial class _Default : System.Web.UI.Page 
{
         protected void Page_Load(object sender, EventArgs e)
         {
                  sayfaADI.Text = Context.Request.QueryString["sayfa"];
         }
}

Yönlendirmeyi yapacak Global.asax dosyası ise aşağıdaki gibi yapılandırılmıştır. Bu dosya, istemcinin verdiği adresi gerektiği gibi parçalar ve yazılımcının belirlediği standartta yeniden oluşturur.

protected void Application_BeginRequest(object sender, EventArgs e)
{
         string sanalLink = HttpContext.Current.Request.Path;
         string[] parcaLink = sanalLink.Split('/');
         string gercekLink = "Default.aspx?sayfa=" + parcaLink[2];
         HttpContext.Current.RewritePath(gercekLink);
}