高手跳過,主要給新手看的,來點開場白,今天有人問我做過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") %> </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") %> </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") %> </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") %> </a></ItemTemplate>
</asp:Repeater>
效果
<!--還有一種方式 XX/?id=xx-->
<add name="RewritePhoto2" virtualUrl="^~/zufang/"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/index2.aspx"
ignoreCase="true" />
ASPX

<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate><a href='/zufang/?ID=<%# Eval("ID") %>'><%# Eval("title") %> </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
腳本引擎:選中
確認文件是否存在:不選