URL重写 HttpModule进阶和dll重写

本文介绍了URL重写的好处,如搜索引擎优化、增强网页安全性和提高网站可用性。通过HttpModule和URLRewriter.dll两种方式详细阐述了如何实现URL重写,包括在Web.config中添加重写规则,以及具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 URL重写

URL重写,实质上是将网页真实的URL隐藏起来,使用户通过相应的虚拟URL访问网页资源,以弥补真是URL的许多不足

     好处:

        1.满足搜索引擎需要,实现搜索引擎中的排名优化


        很多搜索引擎不支持动态链接无法抓去动态网页,尤其是带“?”查询参数的网页,而且静态网页优先度高于动态网页


        2.隐藏网页实现技术,增强网页安全性


        如果网页上含jsp或aspx  制作网站的技术一目了然。但如果将页面重写  黑客将无法知晓网页技术,大大降低网页收到攻击的可能性


        3.提高网站的可用性和专业性


        太长的URL会给网站带来可用性问题


        4.使用URL支持“可删减”的需求


        很多搜索引擎不支持动态链接无法抓去动态网页,尤其是带“?”查询参数的网页,而且静态网页优先度高于动态网页


        如果网页上含jsp或aspx  制作网站的技术一目了然。但如果将页面重写  黑客将无法知晓网页技术,大大降低网页收到攻击的可能性



使用HttpModule实现URL重写

代码实例


<div>
        <a href="goods_1.html">1</a>
         <a href="goods_2.html">2</a>  
</div>


namespace ch3
{
    public class GOODHT : IHttpModule
    {
        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public void Init(HttpApplication context)
        {
            //请求处理之前触发的事件
            context.BeginRequest += context_beginRequest;
        }

        void context_beginRequest(object sender,EventArgs e) {
            HttpApplication app = sender as HttpApplication;
            //获取请求的原始的URL
            string url = app.Request.RawUrl;
            //正则表达式:.../goods_1.html
            Regex regex = new Regex(@"\w+_\d+\.html");
            if (regex.IsMatch(url))
            {
                //如果符合格式,则需要进行URL重写
                //截取URL中的编号
                int line = url.LastIndexOf("_");
                int dot = url.LastIndexOf(".");
                string id = url.Substring(line + 1, dot - line - 1);
                //拼接真实的URL
                string dcURL = "Good.aspx?id=" + id;
                //跳转 Server.Transfer
                app.Server.Transfer(dcURL);
            }
        }
    }
}

//节点配置

<system.webServer> 
    <modules>
      <add name="url" type="ch3.GOODHT"/>
    </modules>
  </system.webServer>



使用URLRewriter.dll实现URL重写

只要在Web.config文件中添加URL重写规则    

        1.下载URLRewriter.dll  
        下载地址 http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cg/MSDNURLRewriting.nsu
        

        2.在网站中添加引用URLRewriter.dll


        3.在网站中添加页面


        4.web.config文件中配置使用URLRewriter.dll


          将configSections节点作为configuration的第一个子节点进行添加


          用于指定配置节RewriterConfig的处理程序类的名称为URLRewriter.Config.Rewriter.ConfigSerializerSectionHandler


          将所有扩展名为.html文件的HTPP请求映射到类 URLRewriter.RewriterFactoryHandler中添加规则



代码示例

       
 <div>
        <a href="goods_1_45.html">1</a>   
    </div>


节点配置

  <!--dll重写URL 必须放低一个-->
  <configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  </configSections>
  <!--规则-->
  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/goods_(\d)+\.html</LookFor>
        <SendTo>~/Good.aspx?id=$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/goods_(\d)_(\d+)+\.html</LookFor>
        <SendTo>~/Good.aspx?id=$1&id2=$2</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

  

  <system.webServer>
    <handlers>
      <add verb="*"  path="*" type="URLRewriter.RewriterFactoryHandler, URLRewriter" name ="urlrewriter"/>
    </handlers>
  </system.webServer>


实现多个参数URL重写
        多个参数用&amp;间隔   (URL中连接多个参数&)取值为()里面的值

例如

<LookFor>~/goods_(\d)_(\d)+\.html</LookFor>
<SendTo>~/Good.aspx?id=$1&pwd=$2</SendTo>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值