使用【UrlRewritingNet.UrlRewriter】组件重写URL,无后缀,伪静态

高手跳过,主要给新手看的,来点开场白,今天有人问我做过URL重写没,这个哥们当然做过(呵呵),然后要我教他做,我就和他说了大概的做法,到最后他还是没明白,要我给个Demo,当时我身边又没有,只好去网上帮他找一个,找了半天我觉得网上的有点乱,说了很多种方式,最后找了个说的还比较详细的给他,原文地址: http://www.workyi.com/LookNews/Article-256.html,结果发现上面图X了,他也没看明白,我真的想说哥们你...,没办法,我今天也没什么事就只好帮他做一个,其实我这就是重写一下上面地址的那篇文章。

web.config

复制代码
<?xml version="1.0"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细消息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <section name="urlrewritingnet"
             requirePermission ="true"
             type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"  />
  </configSections>

  <urlrewritingnet
     rewriteOnlyVirtualUrls="false"
     contextItemsPrefix="QueryString"
     defaultPage = "index.aspx"
     defaultProvider="RegEx"
     xmlns="http://www.urlrewriting.net/schemas/config/2006/07" >
    <rewrites>
      
      <!--扩展名不变的重写:-->
      <!--<add name="RewritePhoto" virtualUrl="^~/index_(\d+).aspx"
           rewriteUrlParameter="ExcludeFromClientQueryString"
           destinationUrl="~/index2.aspx?ID=$1"
           ignoreCase="true" />-->


     <!--伪静态重写,扩展名为.html等--> 
      <!--<add name="RewritePhoto" virtualUrl="^~/index_(\d+).html"
                rewriteUrlParameter="ExcludeFromClientQueryString"
                destinationUrl="~/index2.aspx?ID=$1"
                ignoreCase="true" />-->


      <!--    任意扩展名的重写如:扩展名为.zxjay-->
      <!--<add name="RewritePhoto" virtualUrl="^~/index_(\d+).zxjay"
                    rewriteUrlParameter="ExcludeFromClientQueryString"
                    destinationUrl="~/index2.aspx?ID=$1"
                    ignoreCase="true" />-->

   
      <!--   无后缀的重写-->
      <add name="RewritePhoto" virtualUrl="^~/index_(\d+)"
                       rewriteUrlParameter="ExcludeFromClientQueryString"
                       destinationUrl="~/index2.aspx?ID=$1"
                       ignoreCase="true" />

      
      <!--还有一种方式 XX/?id=xx-->
      <add name="RewritePhoto2" virtualUrl="^~/zufang/"
         rewriteUrlParameter="ExcludeFromClientQueryString"
         destinationUrl="~/index3.aspx"
         ignoreCase="true" />
    <!--更多重写规则-->
    </rewrites>
  </urlrewritingnet>


  <system.web>
    <httpModules>
      <add name="UrlRewriteModule"
         type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
    </httpModules>

    <compilation debug="true" targetFramework="4.0"/>
  </system.web>

</configuration>
复制代码

 

(一)、扩展名不变的重写:

<add name="RewritePhoto" virtualUrl="^~/index_(\d+).aspx"
           rewriteUrlParameter="ExcludeFromClientQueryString"
           destinationUrl="~/index2.aspx?ID=$1"
           ignoreCase="true" />

对应的ASPX

 <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate><a href='index_<%# Eval("ID") %>.aspx'><%# Eval("title") %>&nbsp;</a></ItemTemplate>
        </asp:Repeater>  

效果

 

(二)、伪静态重写,扩展名为.html

IIS配置:网站->属性->目录->配置(G)...->映射->应用程序扩展->添加
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名:.html
动作:限制为 GET,HEAD,POST,DEBUG
脚本引擎:选中
确认文件是否存在:不选

     <!--伪静态重写,扩展名为.html等--> 
      <add name="RewritePhoto" virtualUrl="^~/index_(\d+).html"
                rewriteUrlParameter="ExcludeFromClientQueryString"
                destinationUrl="~/index2.aspx?ID=$1"
                ignoreCase="true" />

对应的aspx

  <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate><a href='index_<%# Eval("ID") %>.html'><%# Eval("title") %>&nbsp;</a></ItemTemplate>
        </asp:Repeater>  

效果:

 

(三)、任意扩展名的重写 如:扩展名为.zxjay,配置和伪静态一样配置

 

      <!--    任意扩展名的重写如:扩展名为.zxjay-->
      <add name="RewritePhoto" virtualUrl="^~/index_(\d+).zxjay"
                    rewriteUrlParameter="ExcludeFromClientQueryString"
                    destinationUrl="~/index2.aspx?ID=$1"
                    ignoreCase="true" />

 


aspx

  <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate><a href='index_<%# Eval("ID") %>.zxjay'><%# Eval("title") %>&nbsp;</a></ItemTemplate>
        </asp:Repeater>  

效果


(四)、无后缀的重写

      <!--   无后缀的重写-->
      <add name="RewritePhoto" virtualUrl="^~/index_(\d+)"
                       rewriteUrlParameter="ExcludeFromClientQueryString"
                       destinationUrl="~/index2.aspx?ID=$1"
                       ignoreCase="true" />

ASPX

   <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate><a href='index_<%# Eval("ID") %>'><%# Eval("title") %>&nbsp;</a></ItemTemplate>
        </asp:Repeater> 

效果

  <!--还有一种方式 XX/?id=xx-->
     

      <add name="RewritePhoto2" virtualUrl="^~/zufang/"
         rewriteUrlParameter="ExcludeFromClientQueryString"
         destinationUrl="~/index2.aspx"
         ignoreCase="true" />

ASPX

View Code

效果

 


 除了第一种方式不要配置IIS,因为一般IIS都将.ASPX的后缀配好了,

其他几种方式都要进行下面的配置

IIS配置:网站->属性->目录->配置(G)...->映射->应用程序扩展->添加
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名:.html
动作:限制为 GET,HEAD,POST,DEBUG
脚本引擎:选中
确认文件是否存在:不选

下载Demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值