我有许多全局IIS7 URL重写规则,默认情况下它们适用于所有网站。好吧有几个网站,我想为所有规则禁用此重写继承。我怎样才能做到这一点?我没有高兴地尝试了以下内容:
<rewrite>
<rules>
<clear />
</rules>
</rewrite>
答案 0 :(得分:4)
抱歉,无法做到:
全局重写规则用于定义服务器范围的URL重写 逻辑。这些规则在 applicationHost.config 文件中定义 并且在任何较低配置下都无法覆盖或禁用 级别,例如站点或虚拟目录。全球规则永远 操作绝对URL路径(即没有的请求URI 服务器名称)。
和
始终首先评估全局规则集,然后分发全局规则集 将使用global生成的URL字符串评估规则集 规则集。
http://learn.iis.net/page.aspx/468/using-global-and-distributed-rewrite-rules/
答案 1 :(得分:0)
如果您能够将全局规则中所需的功能移动到站点的web.config中,则可以在每个规则上添加条件,以选择加入或退出每个规则,具体取决于该站点的本地文件的存在。这将允许您部署一组通用的代码和配置,但使用本地/每站点自定义。
选择加入规则的示例:
<rule name="HTTP to HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="off" />
<!-- Opt-in to rule via presense of a local file -->
<add input="{DOCUMENT_ROOT}/Local/rewrite-rule-enable-https.txt" matchType="IsFile" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
注意:未部署Local文件夹,而是用于存储每个站点的文件。
基本上,除非在网站上的/ Local文件夹中找到名为“rewrite-rule-enable-https.txt”的文件,否则此规则无法启用。