IIS7 urlrewrite 模块 - 外部 xml 文件中的规则

Posted

技术标签:

【中文标题】IIS7 urlrewrite 模块 - 外部 xml 文件中的规则【英文标题】:IIS7 urlrewrite module - Rules in external xml file 【发布时间】:2011-04-15 15:15:14 【问题描述】:

我正在使用 IIS7 UrlRewrite 模块。 我在 web.config <system.webServer><rewrite> 部分设置了我的规则。 我想知道是否有一种方法可以在一个外部 xml 文件而不是 web.config 文件中定义规则。 谢谢。

【问题讨论】:

我不知道。你为什么需要那个? @Remy:延迟响应,但是当您有很多重写规则时,它会增加 web.config 的可读性。无论如何,这就是我的原因。 在 IIS >= 7.5 记得从这里安装 URL Rewrite 组件iis.net/downloads/microsoft/url-rewrite 【参考方案1】:

您可以使用示例 URL 重写提供程序,其中包含一个用于将这些提供程序存储在单独文件中,请参阅: http://www.iis.net/learn/extensions/url-rewrite-module/using-custom-rewrite-providers-with-url-rewrite-module

【讨论】:

但这是用于映射的。 Config 用于另一个目的,设置自定义规则。有时我们需要对我们需要的所有 url 映射使用 reg 表达式,那么唯一的方法就是将它包含在配置中。【参考方案2】:

是的,您可以使用configSource 属性来指向外部文件,就像使用其他 web.config 部分一样。在 web.config 中:

<rewrite>
    <rules configSource="Rewrite.config" />
</rewrite>

在规则配置文件中:

<rules>
    <rule name="some rule">
        <!-- rule details here --->
    </rule>
</rules>

您甚至可以使用 IIS 管理器来编辑规则,并且它会正常工作。这种方法的一个小警告:当您进行更改并保存这样的外部文件时,它不会像更改 web.config 那样回收应用程序。因此,如果您正在编辑规则并希望看到它生效,则需要通过编辑并保存来手动戳 web.config。

另一个参考:Moving IIS7 url rewrite section out of the web.config file

【讨论】:

您确定应用程序不会因外部更改而被回收吗?配置部分还有另一个属性称为RestartOnExternalChanges,默认为true。 @atticae 我相信 RestartOnExternalChanges 仅适用于自定义的
元素,而重写规则则不适用。 forums.iis.net/t/1155629.aspx 我不确定从那以后是否有任何变化,这个帖子是从 2009 年开始的......

以上是关于IIS7 urlrewrite 模块 - 外部 xml 文件中的规则的主要内容,如果未能解决你的问题,请参考以下文章

windows2008(64位)下iis7.5中的url伪静态化重写(urlrewrite)

iis url重写模块 是干啥用的

我怎么知道安装了哪个版本的 IIS7 URL Rewrite 模块

IIS UrlRewrite 不适用于 IIS 8

如何使用IIS7重定向表单的get变量?

关于IIS7 URL重写的问题