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);
}