投稿 评论 顶部

关于伪静态的几个体会

佚名 网络安全

?

??? 最近由于需要使用伪静态,匆忙补充了对这一块的认识.?? 在网上找了一下,最后决定使用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层面进行,无论动态,静态的页面请求(无论是否真有这个页面),都会会通过这一层的处理。即使伪静态出来的页面地址与某个真实地址同时存在,发生冲突,那也照样会走伪静态那个。