IIS URL Rewrite将伪静态配置文件放在web.config外部

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_Data\url.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_Data\url.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&#038;page=$2"/>
  </urls>
</CustomConfiguration>

以上是IIS URL Rewrite 1.1的配置方法

2.0中的方式web.config里设置

<configuration>
  <system.webServer>
    <rewrite>
      <rules configSource="App_Data\url2.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调整还需要让应用程序池重启才能生效,不知道是个人配置问题,还是真的存在问题。

posted @ 2021-10-12 08:33  uxinxin  阅读(341)  评论(0编辑  收藏  举报