神马是url重写?

         通常情况下服务器在处理浏览器端请求的时候都是通过浏览器发送的url路径来处理的,习惯上人们喜欢以“/”来分割url中的信息,比如:http://www.chepinhui.com/UserIndex/yinhuichao,而我们开发人员在开发的时候处理的url地址是这样的:http://www.chepinhui.com/UserIndex.aspx?un=yinhuichao

       所以,为了迎合用户的喜好,并且方便用户记忆url地址,我们开发人员在开发的时候最好使用url重写技术。

还是拿前面那两个url地址来举例子,当用户在浏览器端输入第一个url地址请求的时候,我们服务器需要分析用户的url并且对用户的url进行处理,最后成为第二种url的形式,这样就可以访问到用户想要访问的页面,并且会把参数也一并传递给目的页面。

       理解了什么是url重写,那么url重写技术到底怎么实现呢?

       下面通过一个简单的例子来介绍url重写的具体用法:

       1.首先添加一个名字为“UrlReWriterModule”项目类库。

       2.在此类库中添加“System.Web”的引用。

       3.添加一个名为“UrlReWriter”类,并实现IHttpModule接口。

       4.在HttpApplication管道的BeginRequest 事件中注册方法,在此方法中分析用户的url并对url进行处理,最后返回通过处理后的url(即把请求交给特定的页面路径)。

       5.具体代码如下:

class UrlReWrite : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            //向请求管道里的第一个事件 BeginRequest 注册方法
            context.BeginRequest += BeginRequestChuLi;
        }
        void BeginRequestChuLi(object sender, EventArgs e)
        { 
            //完成url分析和url重写
            //1.获得执行当前页面请求管道的 httpApplication对象
            HttpApplication application = sender as HttpApplication;
            //2.获得上下文对象
            HttpContext context = application.Context;
            //3.获得当前请求的url(不包含域名和请求参数)
            string urlWithoutPara = context.Request.Url.LocalPath;

            //4.分析请求 url
            //4.1准备一个正则表达式   WebSite1/UserIndex/yinhuichao
            Regex reg = new Regex("/WebSite1/UserIndex/[A-Za-z0-9_]+");
            //4.2判断是否满足上面的正则表达式
            if (reg.IsMatch(urlWithoutPara))
            {
                //4.3截取用户名参数   WebSite1/UserIndex?un=yinhuichao
                string userName = urlWithoutPara.Substring(urlWithoutPara.LastIndexOf('/') + 1);
                //4.4进行重写
                context.RewritePath("../UserIndex.aspx?un=" + userName);
            }

        }

        public void Dispose()
        {

        }
    }

       6.在要使用url重写的网站中添加上面项目类库的引用。

       7.修改网站的配置文件(Web.config):在system.web节点下的httpModules节点下添加子节点:

 <add neme=”urlReWriter” type=” UrlReWriterModule.UrlReWriter,UrlReWriterModule”/>

上面就是所谓的url重写的用法了,其使用到的原理就是在httpApplication请求管道中对用户输入的的url请求做相应的处理,最后把用户的请求url交给特定的页面(带上参数)。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值