投稿 评论 顶部

URl重写 != URL伪静态

佚名 网络安全

市面上有很多URL重写的例子,有第三方的,有直接配置的,五花八门,在使用的时候请一定要考虑性能,我也来搅搅这趟浑水咯
我理解中的URL重写是:
在web.config文件<system.web>下配置

??? < urlMappings >
??????
< add?url = " ~/index.asp " ?mappedUrl = " ~/default.aspx " />
????
</ urlMappings >

运行后在地址栏输入index.asp会跳转到default.aspx页面,这个我称之为URL重写,这种方式是不需要进行IIS配置的,缺点是无法进行正则表达式的验证,使用面就狭窄了许多

URL伪静态就是:
第一,引用URLRewriter.dll
第二,在web.config文件<configSections>节点下配置

< section?name = " RewriterConfig " ?type = " URLRewriter.Config.RewriterConfigSerializerSectionHandler,?URLRewriter " ? />

进行URL规则的匹配接点声明
第三,<system.web>? 下配置

ContractedBlock.gif ExpandedBlockStart.gif Code
?<httpHandlers>
??????
<add?verb="*"?path="*.aspx"?type="URLRewriter.RewriterFactoryHandler,?URLRewriter"?/>
??????
<add?verb="*"?path="*.html"?type="URLRewriter.RewriterFactoryHandler,?URLRewriter"?/>
?
</httpHandlers>
????
<httpModules>
??????
<add?type="URLRewriter.ModuleRewriter,?URLRewriter"?name="ModuleRewriter"?/>
????
</httpModules>

进行过滤

第四,
<configuration>节点下,声明需要匹配URL的规则,例如:

ContractedBlock.gif ExpandedBlockStart.gif Code
??<RewriterConfig>
????
<Rules>
??????
<RewriterRule>
????????
<LookFor>~/room/(\w+).mooloo</LookFor>
????????
<SendTo>~/room/home.aspx?id=$1</SendTo>
??????
</RewriterRule>
????
</Rules>
??
</RewriterConfig>

这样就完成URL伪静态的工作,如果要发布到服务器上还需要配置IIS
IIS5.1:虚拟目录 == 配置 == 添加 == 可执行文件:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 扩展名 : .*? 限制为:POST,GET 检查文件是否存在不勾选
IIS6.0:主目录 == 配置 == 插入 == 可执行文件:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll == 确认文件是否存在不勾选

第三方的和URL伪静态原理一样,推荐一个感觉不错的http://www.urlrewriter.cn/
使用URL伪静态对服务器的开销不小咯,另外的一个解决方案就是生成静态页,不过如果是平台型的网站数据量很大,建议还是用伪静态吧,毕竟十几万个页面生成下来,对磁盘的开销也不小了,并且容易造成冗余文件。