UrlRewritingNet是一个可以在ASP.NET2.0里使用的实现url重写的一个组件,并且是开源的,使用这个控件,大家通过定义里面的规则就可以实现url重写。利用它开发人员可以很容易的实现Url重写的功能,提高开发效率.
·新建立一个网站项目,添加UrlRewritingNet.UrlRewriter.dll到bin目录下。
·在web.config里进行相关的配置
<?
xml version="1.0"
?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments 中,该文件通常位于
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<
configuration
>
<
configSections
>
<
section
name
="urlrewritingnet"
restartOnExternalChanges
="true"
requirePermission
="false"
type
="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"
/>
</
configSections
>
<
urlrewritingnet
rewriteOnlyVirtualUrls
="true"
contextItemsPrefix
="QueryString"
defaultPage
="default.aspx"
defaultProvider
="RegEx"
xmlns
="http://www.urlrewriting.net/schemas/config/2006/07"
>
<
rewrites
>
<
add
name
="Rewrite5"
virtualUrl
="^http\://(.*)/Shopping07.05.18/Detail(\d+).aspx"
rewriteUrlParameter
="ExcludeFromClientQueryString"
destinationUrl
="Detail.aspx?id=$2"
rewrite
="Domain"
ignoreCase
="true"
/>
</
rewrites
>
</
urlrewritingnet
>
<
appSettings
/>

<
connectionStrings
/>
<
system
.web
>
<!--
设置 compilation debug="true" 将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只在开发过程中将此值
设置为 true。
-->
<
httpHandlers
>
<
add
path
="Reserved.ReportViewerWebControl.axd"
verb
="*"
type
="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
validate
="false"
/>
</
httpHandlers
>
<
compilation
debug
="true"
>
<
buildProviders
>
<
add
extension
=".rdlc"
type
="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
</
buildProviders
>
</
compilation
>
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<
authentication
mode
="Windows"
/>
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>

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

</
configuration
>
添加了
<
configSections
>
<
section
name
="urlrewritingnet"
restartOnExternalChanges
="true"
requirePermission
="false"
type
="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"
/>
</
configSections
>
<
urlrewritingnet
rewriteOnlyVirtualUrls
="true"
contextItemsPrefix
="QueryString"
defaultPage
="default.aspx"
defaultProvider
="RegEx"
xmlns
="http://www.urlrewriting.net/schemas/config/2006/07"
>
<
rewrites
>
<
add
name
="Rewrite5"
virtualUrl
="^http\://(.*)/Shopping07.05.18/Detail(\d+).aspx"
rewriteUrlParameter
="ExcludeFromClientQueryString"
destinationUrl
="Detail.aspx?id=$2"
rewrite
="Domain"
ignoreCase
="true"
/>
</
rewrites
>
</
urlrewritingnet
>
一定不要忘记 还有一个地方要添加
<
httpModules
>
<
add
name
="UrlRewriteModule"
type
="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"
/>
</
httpModules
>
在下面的这个XML 中
<
add
name
="Rewrite5"
virtualUrl
="^http\://(.*)/Shopping07.05.18/Detail(\d+).aspx"
rewriteUrlParameter
="ExcludeFromClientQueryString"
destinationUrl
="Detail.aspx?id=$2"
rewrite
="Domain"
ignoreCase
="true"
/>
我还是有几个地方不太明白 就是 这个Shoopping070518 是项目工程的名字 不能改,后面的 Detail.aspx?id=$2 中
$2 不明白是什么意思
高手帮帮忙讲讲吧
因为这个id参数 是从数据库中调的 是个 integer 所以 我使用了 正则表达好式 \d+
就这样 我就实现了 URL 重写
原先的
http://localhost:18712/Shopping07.05.18/Detail?id=72.aspx
重写成了
http://localhost:18712/Shopping07.05.18/Detail72.aspx
UrlRewritingNet.UrlRewriter.dll 可从其官方网站下载:
http://www.urlrewriting.net