.NET URL重写

1、  为什么要URL重写?

提高搜索引擎阅读和索引到网站的能力(SEO)

隐藏实际网站路径,提高网站安全性

易于用户输入和记忆

2、 能达到什么样的效果?

在网站的各个网页中,经常需要传值,如要进行分页时,在利用POST提交时,就要传入:CurrentRequestPageIndex,CurrentRequetSize,CurrentRequestOrder,CurrentRequestGroupId进行当前请求第几页,一页多少条数据,排序规则,分组依据等数据,那么在URL中就可能会是这样的:http://localhost:52088/list.aspx?index=2&size=10&order=desc&groupId=21,进行URL进行重写后,可将其变为:http://localhost:52088/list-2-10-desc-21.html

3、 实现原理

首先捕获一个进入的URL,进行正则判断,当成功匹配一个正则时,就用匹配到的正则下面规定的样子进行重写。

这里需要注意的是:

1)网站中有list.aspx这个页面。我们在请求list.aspx这个页面时,如果要给它传参数,即:list.aspx?id=4这个样子时。在请求页Index.aspx中的链接应该写为:<a href="list-4.html" >Go</a>

2)在请求管道的context.BeginRequest中注册事件,进行正则匹配,在正则中,是写看用户请求页的规则,即list-4.html,当满足这个规则时,再对其进行重写为指定的样式。

4、URL重定的实现过程

第一步:

新建:UrlRewrite.cs类,实现IHttpModule

 

 public class UrlRewrite : IHttpModule

    {

        public void Dispose()

        {

            throw new NotImplementedException();

        }

 

        public void Init(HttpApplication context)

        {

            //当ASP.NET运行时接收到新的HTTP请求的时候触发这个事件

            context.BeginRequest += new EventHandler(context_BeginRequest);

        }

 

        void context_BeginRequest(object sender, EventArgs e)

        {

            HttpApplication app = sender as HttpApplication;

            if (app != null)

            {

                //url重写

                //list-(数字).html-->list.aspx?id=数字

                string ralurl = app.Request.RawUrl;

                //对-进行转义,因为\也是特殊字符,因此用两个\

                //当发送过来的 URL 看起来像这个样子的时候如:list-4.html

                Regex regex = new Regex("list\\-(\\d{1,3})\\.htm[l]?");

                Match match = regex.Match(ralurl);

                if (match.Success)

                {

                    string id = match.Groups[1].Value;

                    //就把请求过来的 URL 重写成这个样子

                    app.Context.RewritePath("~/list.aspx?id=" + id);

                }

            }

        }

    }


   第二步:

在Web.Config中配置

    <system.web>

      <httpModules>

        <!--                          命名空间.类名-->

        <addname="urlrewrite"type="WebApplication1.UrlRewrite"/>

      </httpModules>

        <compilationdebug="true"targetFramework="4.0" />

    </system.web>

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值