大家好,又來和大家見面了,此次給大家帶來的URL重寫,關于URL重寫是什麼,有什麼好處,如何重寫,今天我和大家一起分享一下我的經驗
一、URL重寫
URL重寫就是首先獲得一個進入的URL請求然後把它重新寫成網站可以處理的另一個URL的過程。舉個例子來說,如果通過浏覽器進來的URL是“UserProfile.aspx?ID=1”那麼它可以被重寫成 “UserProfile/1.aspx”。
二、URL重寫優點
1、有利于百度、谷歌等搜尋引擎收錄于抓取,如果你是網站優化高手的化,這就是基本功了。。。
2、更具有可讀性,僞裝你的技術實作,讓别人想攻擊你都要有一定的難度!!!
三、如何URL重寫
1、ASP.NET實作一共有兩種
a.利用HttpModule處理request請求中的URL
b.利用插件IIS Rewrite 元件實作URL重寫
2、HttpModule實作URL重寫
a.手寫看一下HttpModule,下圖清楚的描述了HttpModule在整個頁面請求過程中處于的低位,HttpModule是動态請求必經之路啊。
c.案例剖析,讓你深入體會奧妙之處
第一步:修改如下代碼
場景:有這樣兩個頁面,資料清單頁和資料詳細頁面,點選清單頁資料進入詳細頁面,我們要做資料清單頁面的連接配接做如下修改
修改前:<asp:HyperLink ID="hkTitle" runat="server"
NavigateUrl='<%# Eval("Id","BookDetail.aspx?id={0}") %>'>資料标題</asp:HyperLink>
修改後:<asp:HyperLink ID="hkTitle" runat="server"
NavigateUrl='<%# Eval("Id","BookDetail_{0}.html") %>'>資料标題</asp:HyperLink>
第二步:建立HttpModule,代碼如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
///DemoModule 的摘要說明
/// </summary>
public class DemoModule:IHttpModule
{
/// <summary>
/// 開始處理請求事件
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private void context_BeginRequest(object sender,EventArgs args)
{
//擷取HttpApplication
HttpApplication application = sender as HttpApplication;
//擷取使用者請求的URL
string oldUrl = application.Request.RawUrl;
//如果請求中存在“BookDetail”字元進行處理請求
if (oldUrl.IndexOf("BookDetail") > 0)
{
//截取BookDetail之前位置的字元串
string newUrl = oldUrl.Substring(0, oldUrl.IndexOf("BookDetail"));
//請求的新字元串為"BookDetail.aspx?bid=XXXXXXXX"
newUrl = newUrl + "BookDetail.aspx?bid=" + oldUrl.Substring(oldUrl.LastIndexOf("_") + 1,
(oldUrl.IndexOf(".") - oldUrl.LastIndexOf("_") - 1));
//将請求中的URL進行重寫
application.Context.RewritePath(newUrl);
}
}
public void Dispose()
{
throw new NotImplementedException();
}
/// <summary>
/// 初始化事件
/// </summary>
/// <param name="context"></param>
public void Init(HttpApplication context)
{
//關聯請求開始事件
context.BeginRequest +=new EventHandler(context_BeginRequest);
}
}
第三步:配置HttpModule,在web.config中如下配置
<system.web>
<httpModules>
<add name="DemoModule" type="DemoModule"/>
</httpModules>
</system.web>
第四步:體驗效果吧
今天就說到這裡吧,還有一個URL重寫的方法,有時間完成,大家趕快體驗一下吧!!!