ASP.NET URLRewriter伪静态
ASP.NET URLRewriter伪静态使用伪静态的作用
(1)增强URL的友好性,方便用户记忆URL。
(2)提高搜索引擎抓取,很多搜索引擎更看好静态HTML页。
(3)加强安全性,因为隐藏了参数"year"、"month"、"day"、"id",使网站没有那么容易受到攻击。
伪静态实现的基本思路
(1)自定义HttpHandler类,实现IHttpHandler接口
(2)获取用户请求的URL地址信息
(3)定义多个正则表达式规则,匹配URL字符串
(4)重定向真实的URL地址信息
使用微软的URLRewriter.dll实现页面的伪静态
第一步:添加 UrlRewriter.dll 到 bin目录中
第二步:在web.config文件中进行配置
1、先加入一个section节
<configuration>
.......
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
</configSections>
2、然后加入一个模块httpMoudles,为 URL 重写引擎指定配置信息
<system.web>
........
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
</httpModules>
3、加入httpHandlers字节
<system.web>
........
<httpHandlers>
<!--使用URLRewriter.dll -->
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
注意节的位置 <system.web>与<configSections>两个节是平级的,再加入规则
规则的形式为:
<RewriterConfig> <Rules> <RewriterRule> <LookFor>要查找的模式</LookFor> <SendTo>要用来替换模式的字符串</SendTo> </RewriterRule> <RewriterRule> <LookFor>要查找的模式</LookFor> <SendTo>要用来替换模式的字符串</SendTo> </RewriterRule> </Rules> </RewriterConfig>
伪静态规则的备注
每个重写规则均由 <RewriterRule> 元素表达。要搜索的模式由 <LookFor> 元素指定,而要替换所找到的模式的字符串将在 <SentTo> 元素中输入。这些重写规则将从头到尾进行计算。如果发现与某个规则匹配,URL 将被重写,并且对重写规则的搜索将会终止。
在 <LookFor> 元素中指定模式时,请注意,要使用正则表达式来执行匹配和字符串替换。(稍后,我们将介绍一个真实的示例,说明如何使用正则表达式来搜索模式。)由于模式是正则表达式,应确保转义正则表达式中的任何保留字符。(一些正则表达式保留字符包括:.、?、^、$ 及其他。可以通过在前面加反斜杠(如 \.)对这些字符进行转义,以匹配文字句点。)
上面的代码总结
<?xml version="1.0"?>
<configuration>
<!--使用URLRewriter.dll -->
<configSections>
<section name="RewriterConfig" requirePermission="false" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/detail/([0-9]*)/([0-9]*).html</LookFor>
<SendTo>~/admin/detail.aspx?type=$1&id=$2</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<system.web>
<httpHandlers>
<!--使用URLRewriter.dll -->
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
</configuration>
IIS对伪静态的配置
在IIS中找到自己的网站,点属性,然后找主目录中的配置,然后弹出应用程序配置对话框,选择添加,添加的可执行文件路径为c:\windows \microsoft.net\framework\v2.0.50727\aspnet_isapi.dll。