使用【UrlRewritingNet.UrlRewriter】組件重寫URL,無后綴,偽靜態



  高手跳過,主要給新手看的,來點開場白,今天有人問我做過URL重寫沒,這個哥們當然做過(呵呵),然后要我教他做,我就和他說了大概的做法,到最后他還是沒明白,要我給個Demo,當時我身邊又沒有,只好去網上幫他找一個,找了半天我覺得網上的有點亂,說了很多種方式,最后找了個說的還比較詳細的給他,原文地址:http://www.workyi.com/LookNews/Article-256.html,結果發現上面圖X了,他也沒看明白,我真的想說哥們你...,沒辦法,我今天也沒什么事就只好幫他做一個,其實我這就是重寫一下上面地址的那篇文章。

web.config

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

ASPX Code
 <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
腳本引擎:選中
確認文件是否存在:不選

View Code
     <!--偽靜態重寫,擴展名為.html等--> 
<add name="RewritePhoto" virtualUrl="^~/index_(\d+).html"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/index2.aspx?ID=$1"
ignoreCase="true" />

對應的aspx

View Code
  <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

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

效果


(四)、無后綴的重寫

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

ASPX

View Code
   <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
 <asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate><a href='/zufang/?ID=<%# Eval("ID") %>'><%# Eval("title") %>&nbsp;</a></ItemTemplate>
</asp:Repeater>

效果

 


 除了第一種方式不要配置IIS,因為一般IIS都將.ASPX的后綴配好了,

其他幾種方式都要進行下面的配置

IIS配置:網站->屬性->目錄->配置(G)...->映射->應用程序擴展->添加
可執行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
擴展名:.html
動作:限制為 GET,HEAD,POST,DEBUG
腳本引擎:選中
確認文件是否存在:不選

下載Demo

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM