url重写

  前两天做项目的时候,有地方需要用到静态页面,然后就顺便研究了一下url重写,人理解,url重写就是修改了地址栏的显示,隐藏了真正的跳转。废话不说了,下面是我使用的两种方法

  1、在global.asax文件中添加一个void ApplicationBeginRequest(..)方法,在这个方法里面,修改跳转路径。代码如下 

  

    void Application_BeginRequest(object sender, EventArgs e)
      {
        string url = Request.RawUrl;//请求的原始页面
        Regex reg = new Regex(@"wangzhangonggao/(\d+).html");
        Match match = reg.Match(url);
        if (match.Success)
          {
            string id = Regex.Match(url, @"\d").Value;
            string strPath = "/wangzhangonggao/newsDetail.htm";
            HttpContext.Current.RewritePath(strPath);//跳转到真实的页面
          }
      }

    在web.config中要记住在<compilation>下添加<buildProviders>节点,说明文件格式的引用

2、利用UrlRewriter

  这个应该是常用的了,最重要的就是web.confg的配置。

   

<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>

</configSections>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/wangzhangonggao/(\d+).html</LookFor>
<SendTo>~/wangzhangonggao/newsDetail.htm</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<appSettings>
<add key="ConnectionString" value="server=localhost;uid=sa;pwd=test;database=SLS_HZC"/>
</appSettings>

<system.web>
<compilation debug="true" targetFramework="4.0">
<buildProviders>
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider"/>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
</buildProviders>
</compilation>
<httpHandlers>

<!--这个地方的配置针对的是请求页面的,例如我请求wangzhangonggao/1.html,但实际上页面的内容是在另一个页面中。弄反了会报404的错误-->
<add verb="*" path="wangzhangonggao/*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter"/>
</httpHandlers>

 

posted on 2015-06-05 15:18  若灵思源  阅读(149)  评论(0编辑  收藏  举报

导航