IIS6以前采用 URL Rewite 1.1
首先搜索使用URLRewriter.dll文件引入到项目中 我用的URLRewriter.dll文件
web.config中配置
<configuration> <configSections> <section name="CustomConfiguration" type="URLRewriter.Config.UrlsSection, URLRewriter" /> </configSections> <CustomConfiguration configSource="App_Dataurl.xml" /><!--通过这样写把文件放在web.config外部,最好放到App_Data文件夹内,防止配置被通过URL直接访问到 --> <system.web> <!--Taurus IIS应用程序池:经典模式(下运行,开启此配置)<httpModules> <add name="RewriterModule" type="URLRewriter.RewriterModule, URLRewriter"/> </httpModules> --> </system.web> <!--Taurus IIS应用程序池:集成模式(下运行,开启此配置) <system.webServer> <modules> <add name="RewriterModule" type="URLRewriter.RewriterModule, URLRewriter"/> </modules> </system.webServer> --> </configuration>
App_Dataurl.xml文件里面这样写
<CustomConfiguration> <urls> <add virtualUrl="这里写虚拟路径的正则匹配" destinationUrl="这里写实际程序中的路径"/> <!-- 例如注意后面路径中的&符号需要转义 --> <add virtualUrl="~/page(d+).html" destinationUrl="~/page.aspx?ID=$1"/> <add virtualUrl="~/page(d+)_(d+).html" destinationUrl="~/page.aspx?ID=$1&page=$2"/> </urls> </CustomConfiguration>
以上是IIS URL Rewrite 1.1的配置方法
2.0中的方式web.config里设置
<configuration> <system.webServer> <rewrite> <rules configSource="App_Dataurl2.0.xml" /> </rewrite> </system.webServer> </configuration>
url2.0.xml里配置 具体方式可参照微软官网文档 URL Rewrite Module - Video Walkthrough | Microsoft Docs
<rules> <rule name="regionpage" stopProcessing="true"> <match url="^page1-(d+).html" /> <action type="Rewrite" url="ok.aspx?id={R:1}" /> </rule> </rules>
通过本人测试,感觉如果1.0满足需求使用1.0,2.0调整还需要让应用程序池重启才能生效,不知道是个人配置问题,还是真的存在问题。