最近由于需要使用伪静态,匆忙补充了对这一块的认识. 在网上找了一下,最后决定使用Intelligencia.UrlRewriter.dll这个组件.
配置的话,网上应该有很多了.这里我以我的xp上的iis5.1为例:
1.在web项目里面引用Intelligencia.UrlRewriter.dll
2. 在web.config中的<configSections>结点下添加:
<section name="rewriter" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
3.在web.confg中system.web/httpModules添加(这里是关键,否则就相当于你买了一把枪,却没正式派上用场):
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
4.在web.config中添加以下结点作为system.web的兄弟结点(configSource后面是一个相对地址,根据实际情况定):
<rewriter configSource="URLRewriter.config"/>
5.如果网站需要使用非.aspx后缀的伪静态,如details-1-1.htm、news-1-2.abc等,那么:打开IIS-->右击默认网站-->属性-->主目录-->找到配置按钮-->映射-->点击“插入”-->可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll 保存。
一般完成了上述配置,基本上没啥问题了.发布后,我们怎么看到效果呢?
伪静态,实际上是站在站长SEO运营的角度上看的,对我们开发人员来说,其实就是一个Url重定向,上面我们做的那些配置,引入dll最终要做的就是拦截用户
对iis上该网站的请求,然后我们给它一个规则,比如,一般站长认为下面第一个地址比第二个地址更对搜索引擎喜欢:
(1) http://localhost:10516/html/news/20121104/2.html
(2)http://localhost:10516/news.aspx?year=20121104&type=2
那么,我们要做的,也就是在上述URLRewrite.config中提供下面的设置:
<rewrite url="^/html/news/([0-9]+)/([0-9]+).html$"
to="/news.aspx?year=$1&type=$2"
processing="stop" />
注:有的刚接触的朋友可能要问,上面的$1,$2是啥? 其实很简单,我们要明白,URLWrite组件内部是通过正则表达式来匹配分析这些源请求地址的。既然是正则表达式,那$当然就是正则表达式里面Group对应的参数了,因为没有给参数起名字,所以直接用$1,$2了。
最后,自己还要提醒各位的是:
这个是在iis层面进行,无论动态,静态的页面请求(无论是否真有这个页面),都会会通过这一层的处理。即使伪静态出来的页面地址与某个真实地址同时存在,发生冲突,那也照样会走伪静态那个。