最近学习了一下伪静态的实现,伪静态就是URL地址重写,具体实现方式如下:
首先需要下载URLRewriter.dll动态链接库
下载地址:http://download.csdn.net/down/524514/cnlive
参考地址:http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true
下载后解压,里面包含URLRewriter.dll文件及源码,因为URLRewriter是一个开源的组件。
下面就看一下在.NET项目中如何使用URLRewriter实现伪静态。
1、先添加对URLRewriter.dll的引用。
2、打开web.config文件,需要修改一下配置,下面是web.config的代码:
<configuration> <configSections> <!-- 1 begin --> <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/> <!-- 1 end --> </configSections> <!-- 2 begin --> <RewriterConfig> <Rules> <RewriterRule> <LookFor><!--[CDATA[~/Default/(/w+)_(/w+)/.html]]--></LookFor> <SendTo><!--[CDATA[~/Default.aspx?id=$1&name=$2]]--></SendTo> </RewriterRule> <RewriterRule> <LookFor><!--[CDATA[~/Default/(/w+)/.html]]--></LookFor> <SendTo><!--[CDATA[~/Default.aspx?id=$1]]--></SendTo> </RewriterRule> </Rules> </RewriterConfig> <!-- 2 end --> <appSettings/> <connectionStrings/> <system.web> <!-- 3 begin --> <httpHandlers > <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter"/> </httpHandlers> <!-- 3 end --> <!-- 4 begin <httpModules> <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" /> </httpModules> 4 end --> </system.web> </configuration>
在上面的代码中,可以通过修改“标记2”中的<RewriterRule>标签下的内容来设置URL重定向的规则,其中<LookFor>和<SendTo>标签下的内容都是使用正则表达式来描述,<LookFor>标签下的内容是用户请求的URL地址规则,<SendTo>标签下的内容是URL重定向的规则,<RewriterRule>标签可以设置多个;“标记3”中的内容是指定使用HTTP处理程序来执行URL重定向,注释掉的“标记4”中的内容是指定使用HTTP模块来执行URL重定向。
3、配置完以上设置后,在发布到IIS上时还需要对IIS进行一下设置,具体设置步骤如下(以IIS V6.0为例):
在需要配置伪静态的站点上点右键-->属性-->主目录-->配置,打开“应用程序配置”窗口,如下图:
然后点击“添加”按钮,打开“添加/编辑应用程序扩展名映射”窗口,按照下图的内容进行设置:
可执行文件应填写ASPX的ISAPI处理程序路径“c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll”,扩展名填写的是伪静态所使用的扩展名,最后需要把最下面的“确认文件是否存在”复选框的勾去掉,设置完这些,点击“确定”按钮就可以了。
做完以上设置,就可以使用伪静态技术也改善网站的SEO了,按照刚才web.config里的设置,当在浏览器里访问“http://站点/Default/123.html”页面时,会自动重定向到“http://站点/Default.aspx?id=123”页,这样在客户端看起来跟静态页面没什么差别,而且对搜索引擎也比较友好,但伪静态技术需要占用一些CPU资源,在访问量非常大的时候会影响访问速度。另外在web.config里“标记2”的地方需要用到正则表达式,如果不会需要去查查资料了解一下。