看了N多文章找到几个关键点
1.iis7以上用不上isapi组件
2.使用 URLRewriter 来做处理
3.web.config配置要点
添加声明
<configuration> <configSections> <!--伪静态用--> <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/> <!--结束--> </configSections>
添加处理
<!--伪静态用--> <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> </system.web>
最后是关键一步一定要加否则无法跳转
</system.web> <system.webServer> <handlers> <add name=".html" path="*.html" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32" /> </handlers> </system.webServer>
下面就是配置规则了
<RewriterConfig> <Rules> <!--特殊的--> <RewriterRule> <LookFor>~/Download-(.[\d]*)\.html</LookFor> <SendTo>~/Download.aspx?c=$1</SendTo> </RewriterRule> <RewriterRule> <LookFor>~/UserOrderDetail-(.[\d]*)\.html</LookFor> <SendTo>~/UserOrderDetail.aspx?code=$1</SendTo> </RewriterRule> <RewriterRule> <LookFor>~/News-(.[\d]*)-(.[\d]*)\.html</LookFor> <SendTo><![CDATA[~/News.aspx?c=$1&id=2]]></SendTo> </RewriterRule> <RewriterRule> <LookFor>~/Message_(.[\d]*)-(.[\d]*)\.html</LookFor> <SendTo><![CDATA[~/Message.aspx?page=$1]]></SendTo> </RewriterRule> <!--下面是通用的--> <RewriterRule> <LookFor>~/(\w*)\.html</LookFor> <SendTo>~/$1.aspx</SendTo> </RewriterRule> <RewriterRule> <LookFor>~/(\w*)-(.[\d]*)\.html</LookFor> <SendTo>~/$1.aspx?id=$2</SendTo> </RewriterRule> <RewriterRule> <LookFor>~/(\w*)-(\w*)_(.[\d]*)\.html</LookFor> <SendTo><![CDATA[~/$1.aspx?c=$2&page=$3]]></SendTo> </RewriterRule> <!--建议:跳转的搞成按参数做不同的规则的话配置几种就Ok了,而不用像我这个还搞几个特殊的东东出来--> </Rules> </RewriterConfig>