使用URLRewriter让你的站点牛逼起来- -!
之前有个网页提醒我用一下URLRewriter.dll给自己的博客做一下伪静态化,据说是可以提高SEO,今天试了一下这个组件,果然好用,至于对SEO有没有帮助就不得而知了(我一直觉得最好的SEO是¥......)
URLRewriter使用起来很简单,只需要通过简单的配置就ok了,大致的步骤如下:
1、把组件拿过来然后引用到项目里面去,组件的下载地址在这里:传送门......传过去会看到一个超链接可以点击,点下去后下载一个msi文件,安装吧少年!!!
2、把URLRewriter.dll应用到项目中,然后对Web.config进行必要的配置:
(1)找到configuration节点中的configSections节点(如果没有的话就自己打进去 - -!),在configSections节点中添加一个section节点,效果如下:
1
2
3
4
5
|
< configuration > < configSections > < section name = "RewriterConfig" type = "URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /> </ configSections > </ configuration > |
(2)从第一个节点的配置来看,如果知道configSections的作用的同学肯定知道需要有一个RewriterConfig节点了,这个节点的配置大致如下(写在configSections节点中):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
< configuration > < RewriterConfig > < Rules > < RewriterRule > < LookFor >~/articles/(.[0-9]*)\.html</ LookFor > < SendTo >~/Default.aspx?id=$1</ SendTo > </ RewriterRule > < RewriterRule > < LookFor >~/(.[0-9]*)\.html</ LookFor > < SendTo >~/Default.aspx?id=$1</ SendTo > </ RewriterRule > </ Rules > </ RewriterConfig > </ configuration > |
(3)配置httpHandlers,就是在httpHandlers节点中添加我们所需要的add节点,从上面的节点可以猜出我们需要配置一个用于处理html后缀名的东东,如下:
1
2
3
4
5
6
7
|
< configuration > < system.web > < httpHandlers > < add verb = "*" path = "*.html" type = "URLRewriter.RewriterFactoryHandler, URLRewriter" /> </ httpHandlers > </ system.web > </ configuration > |
进过上面三步的配置,我们就可以开始使用URLRewriter了,在我们的站点根目录中创建一个名为Default.aspx的页面,当我们在浏览器的地址栏输入访问http://localhost:3550/123.html这个地址的时候(当然端口不一定一样- -!),其实是访问了http://localhost:3550/default.aspx?id=123这个地址,在这里URLRewriter的作用相当明显了^_^。
3、如果部署到到服务器上这个访问往往会失败,这里找了一张图,说明一下怎么配置iis(在2003上面部署过mvc的人,你懂的···)
之所以要这样配置主要原因是,我们访问的虽然是html后缀名的页面,但始终是“伪静态”,也就是说还是需要aspnet_isapi.dll映射来处理请求,以为实际上我们访问的是aspx页面(不知道这样说和不合理- -!)。另外,这个.html页面实际上是不存在的,所以要把“确认文件是否存在”的勾去掉!
4、到此为止一切正常,但是如果页面上有回传的话,会发现回传回来后伪静态的效果木有了。例如页面上有个服务器端的Button控件,点击后发现伪静态的效果不见了,解决方案是使用ActionlessForm.dll,这个dll里面又一个叫做ActionlessForm的类,其实是继承了Form类的一个子类。使用方法大致如下:
(1)在页面上注册这个东东,<%@ Register TagPrefix="acf" Namespace="ActionlessForm" Assembly="ActionlessForm" %>
(2)把form改成这个ActionlessForm,<acf:Form ID="form1" runat="server">
(3)木有了...
PS:这个组件我自己很少用,因为主要是做web系统,这些东西基本用不上了,不过自己尝试使用了一下,发现还是学到不少东西。一方面是多知道了一个比较常用的组件的使用方法,另一方面是在使用的过程中通过查资料,对Web.config又有了进一步的了解^_^。本博客的文章页面就是用了这个组件实现伪静态。这里是我测试的使用写的代码,两个dll在里面也可以找到哈,点击下载