用UrlRewriter.Net实现对富关键字Url的重写支持

为动态Url指定富关键字的Url, 有很多种方法. 这里使用UrlRewriter.Net. 此工具是一个开源组件, 它在Asp.Net的层级实现了Url重写, 因而整合到项目中比较方便. 而另外的一种Url重写产品ISAPI_Rewrite则是以ISAPI过滤器的形式在IIS的层级上实现重写, 后者的性能更好一些,但是需要在服务器上安装.

 

 下面是使用UrlRewriter.Net的详细步骤:

 

1. 访问http://www.urlrewriter.net , 点击Download, 下载该产品的最新发布版.

 

2. 解压压缩包, 将里面的Intelligencia.UrlRewriter.dll文件复制到项目的Bin文件夹下面并添加引用到此文件.

 

3. 打开项目的web.config文件, 然后添加下面的配置处理程序段,启用UrlRewriter.Net会从名为rewriter的配置节点中读取其配置信息:

 

 

1 <configuration>
2 <configSections>
3 <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
4 </configSections>

 

 

 

4. 对HTTP模块UrlRewriter进行配置, 它将使UrlRewriter.Net能够解释收到的请求然后重写它们:

 

1 1 <system.web>
2 2 <!--UrlRewriter-->
3 3 <httpModules>
4 4 <!--<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>-->
5 5 <add type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" name="UrlRewriter"/>
6 6 </httpModules>



 

 5. 最后, 必须确保UrlRewriter.Net配置成接收所有不存在的文件或文件夹的请求, 如果使用的是IIS7, 则需要在web.config中添加以下配置行:

 

 

1 <system.webServer>
2 <validation validateIntegratedModeConfiguration="false"/>
3 <modules>
4 <add type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" name="UrlRewriter"/>
5 <!--<remove name="ScriptModule"/>-->
6 <!--<add name="ScriptModule" preCondition="managedHandler"/>-->
7 </modules>
8 </system.webServer>

 

 

 

 老版本的IIS可以参照http://urlrewriter.net/index.php/support/installation下的步骤来进行配置

 

 

6. OK, 现在UrlRewriter.Net应该可以使用了, 作为第一个测试, 把接收请求(例如"/my-paper.aspx"重写为"~/Paper.aspx?PaperID=1"), 在web.config中的节点<configuration>中添加以下配置信息:

 

 

1 <rewriter>
2 <rewrite url="/my-paper.aspx" to="~/Paper.aspx?PaperID=1"/>
3 </rewriter>

 

 

7. 载入http://localhost/my-paper.aspx, 将会获取ID为1的Paper信息.

 

 

8. 至此, 已经验证富关键字Url重写功能正常, 接下来就能够在节点<rewriter>下面来根据正则表达式添加想要的Url重写规则. 添加完毕以后, 网站就能够正确的支持富关键字Url了!

 

关于<rewriter>元素更多重写规则, 有时间会继续写笔记.

posted on 2012-02-04 09:07  平常心。  阅读(1249)  评论(1编辑  收藏  举报