HttpModule实现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,代码如下

[csharp] view plain copy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

///
///DemoModule 的摘要说明
///
public class DemoModule:IHttpModule
{
///
/// 开始处理请求事件
///
///
///
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中如下配置
[csharp] view plain copy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值