首页  ·  知识 ·  云计算
ASP.NET伪静态UrlRewrite(Url重写)实现和配置
网友    综合  编辑:dezai   图片来源:网络
ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置

一,获得URLRewriter.dll
二,使用该dll文件:
添加引用,搞定。
三,页面方面的设计,这里不在赘述了,我会放一个下载包,有兴趣的朋友下载来看看吧,代码写的比较乱。
    <a href="user.html" target="_blank" title="user.aspx">跳转链接user.aspx</a> <br />
    <a href="cn/ss_3.html" target="_blank" title="user.aspx?id=3">跳转链接user.aspx?id=3</a> <br />
    <a href="cn/ss_3-4.html" target="_blank" title="user.aspx?id=3&sid=4">跳转链接user.aspx?id=3&sid=4</a> <br />
    <a href="cn/ss_3-4-5.html" target="_blank" title="user.aspx?id=3&sid=4&nid=5">跳转链接user.aspx?id=3&sid=4&nid=5</a> <br />

四,web.config的配置
这部是非常关键的,也是静态化能否成功的关键。
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /> <!--(一·共四步)注册URLRewriter组件-->
  </configSections>

     <!--(三·共四步)URLRewriter重写规则配置开始-->
     <RewriterConfig>
         <Rules>
              <RewriterRule>
                   <LookFor>~/web/new/(.[0-9]*)\.aspx</LookFor> <!--要查找的模式(浏览器显示的)-->
                   <SendTo>~/web/new.aspx?id=$1</SendTo> <!--要用来替换模式的字符串(实际用到的)-->
              </RewriterRule>
              <!-- 一个参数 -->
              <RewriterRule>
                   <LookFor>~/cn/ss_(.[\d]*)\.html</LookFor>
                   <SendTo>~/cn/news.aspx?id=$1</SendTo>
              </RewriterRule>
              <!--传两个参数的-->
              <RewriterRule>
                   <LookFor>~/cn/ss_(.[\d]*)0(.[\w]*).html</LookFor>
                   <!--(.[\d]*)(.[\w]*).html  或者 ss_,(.[0-9]*),(.[0-9]*)\.html-->
                   <SendTo><![CDATA[~/cn/news.aspx?id=$1&sid=$2]]></SendTo>
              </RewriterRule>
              <!--三个参数-->
              <RewriterRule>
                   <LookFor>~/cn/ss_(.[\d]*)0(.[\w]*)0(.[\w]*).html</LookFor>
                   <SendTo><![CDATA[~/ZH-CN/news.aspx?id=$1&sid=$2&n_id=$3]]></SendTo>
              </RewriterRule>
              <RewriterRule>
                   <LookFor>~/dfsaddf/index(\d*)\.html</LookFor>
                   <SendTo>~/Favorites_Page.aspx</SendTo>
              </RewriterRule>

         </Rules>
     </RewriterConfig>
     <!--URLRewriter重写规则配置结束-->
   
     <system.web>
          <compilation debug="true">

              <assemblies>

                   <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

                   <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

                   <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

                   <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

              </assemblies>

      <!--(四·共四步) 加上此节点,保证原本就是.html类型的文件能正常访问 -->

      <buildProviders>

        <add extension=".html" type="System.Web.Compilation.PageBuildProvider" />

      </buildProviders>

         </compilation>

         <httpHandlers>

              <remove verb="*" path="*.asmx"/>

              <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

              <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

              <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>

              <!--(二·共四步)httpHandlers设置-->

              <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

              <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

            

         </httpHandlers>

     </system.web>
</configuration>

设置完以上步骤,就基本可以运行了,其中<RewriterRule/>标签里面就是重写的一个模块,<LookFor/>里面的是重写后的地址,而<SendTo/>则是原地址。

httpHandlers的设置主要是配合IIS将请求重新定义处理,这里也比较关键,如果不存在合理的httpHandlers,那么,访问肯定会失败的。

关于正则表达式,可以到百度里搜索:"常用正则表达式",会有很多。

五.配置IIS解析.html文件
右键点我的电脑-->管理-->展开'服务和应用程序'-->internet信息服务-->找到你共享的主目录-->右键点击属性 -->点击'配置'-->映射下面 -->找到.aspx的可执行文件路径 复制路径-->添加à粘贴路径-->扩展名为".html"-->然后把“检查文件是否存在”的勾去掉这样就可以了。
如果遇到“确定”按钮失效,可以用键盘事件编辑路径即可解决。

六、以上配置好之后就可以通过以下方式来访问了。
例如:
用户输入 user.html
实际访问的是 user.aspx
用户输入 cn/ss_3.html
实际访问的是 user.aspx?id=3
用户输入 cn/ss_3-4.html
实际访问的是 user.aspx?id=3&sid=4
用户输入 cn/ss_3-4-5.html
实际访问的是 user.aspx?id=3&sid=4&nid=5

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读