一,获得URLRewriter.dll
二,使用该dll文件:
添加引用,搞定。
三,页面方面的设计,这里不在赘述了,我会放一个下载包,有兴趣的朋友下载来看看吧,代码写的比较乱。
<a href="user.html" target="_blank" title="user.aspx">跳转链接user.aspx</a> <br />
<a href="cn/ss_3.html" target="_blank" title="user.aspx?id=3">跳转链接user.aspx?id=3</a> <br />
<a href="cn/ss_3-4.html" target="_blank" title="user.aspx?id=3&sid=4">跳转链接user.aspx?id=3&sid=4</a> <br />
<a href="cn/ss_3-4-5.html" target="_blank" title="user.aspx?id=3&sid=4&nid=5">跳转链接user.aspx?id=3&sid=4&nid=5</a> <br />
四,web.config的配置
这部是非常关键的,也是静态化能否成功的关键。
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /> <!--(一·共四步)注册URLRewriter组件-->
</configSections>
<!--(三·共四步)URLRewriter重写规则配置开始-->
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/web/new/(.[0-9]*)\.aspx</LookFor> <!--要查找的模式(浏览器显示的)-->
<SendTo>~/web/new.aspx?id=$1</SendTo> <!--要用来替换模式的字符串(实际用到的)-->
</RewriterRule>
<!-- 一个参数 -->
<RewriterRule>
<LookFor>~/cn/ss_(.[\d]*)\.html</LookFor>
<SendTo>~/cn/news.aspx?id=$1</SendTo>
</RewriterRule>
<!--传两个参数的-->
<RewriterRule>
<LookFor>~/cn/ss_(.[\d]*)0(.[\w]*).html</LookFor>
<!--(.[\d]*)(.[\w]*).html 或者 ss_,(.[0-9]*),(.[0-9]*)\.html-->
<SendTo><![CDATA[~/cn/news.aspx?id=$1&sid=$2]]></SendTo>
</RewriterRule>
<!--三个参数-->
<RewriterRule>
<LookFor>~/cn/ss_(.[\d]*)0(.[\w]*)0(.[\w]*).html</LookFor>
<SendTo><![CDATA[~/ZH-CN/news.aspx?id=$1&sid=$2&n_id=$3]]></SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/dfsaddf/index(\d*)\.html</LookFor>
<SendTo>~/Favorites_Page.aspx</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<!--URLRewriter重写规则配置结束-->
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
<!--(四·共四步) 加上此节点,保证原本就是.html类型的文件能正常访问 -->
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
<!--(二·共四步)httpHandlers设置-->
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
</system.web>
</configuration>
设置完以上步骤,就基本可以运行了,其中<RewriterRule/>标签里面就是重写的一个模块,<LookFor/>里面的是重写后的地址,而<SendTo/>则是原地址。
httpHandlers的设置主要是配合IIS将请求重新定义处理,这里也比较关键,如果不存在合理的httpHandlers,那么,访问肯定会失败的。
关于正则表达式,可以到百度里搜索:"常用正则表达式",会有很多。
五.配置IIS解析.html文件
右键点我的电脑-->管理-->展开'服务和应用程序'-->internet信息服务-->找到你共享的主目录-->右键点击属性 -->点击'配置'-->映射下面 -->找到.aspx的可执行文件路径 复制路径-->添加à粘贴路径-->扩展名为".html"-->然后把“检查文件是否存在”的勾去掉这样就可以了。
如果遇到“确定”按钮失效,可以用键盘事件编辑路径即可解决。
六、以上配置好之后就可以通过以下方式来访问了。
例如:
用户输入 user.html
实际访问的是 user.aspx
用户输入 cn/ss_3.html
实际访问的是 user.aspx?id=3
用户输入 cn/ss_3-4.html
实际访问的是 user.aspx?id=3&sid=4
用户输入 cn/ss_3-4-5.html
实际访问的是 user.aspx?id=3&sid=4&nid=5
本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow