IIS7 Url Rewrite - 重定向规则中可以使用stopProcessing="false"吗?

9

我希望将域名规范化,从bar.example.com到www.example.com(任何不是www.example.com的内容)。网站运行在IIS7上。

问题在于某些URL的形式为http://bar.example.com/asp/oldpage.asp?query=awesome,并且已经有了特定的URL重写规则,重定向到http://www.example.com/newpage/awesome

我想编写一个规则来捕获其他规则。

这里的问题是:我有很多规则,并且希望将此规则放在站点根目录下,但是子文件夹中还有其他重写/重定向规则,因此我希望推迟301直到所有规则都执行完毕。

这种情况是否可能?重写有一个选项可以推迟(stopProcessing="false"),但重定向似乎没有这个选项。

我是否无法实现这个功能?

1个回答

9
很遗憾,我可以确认延迟处理(stopProcessing="false")仅适用于重写动作,并被重定向动作所忽略。
如果匹配数量很少 - 但根据您的问题不是这样 - 我建议您使用正则表达式结合它们。例如:
First match: ^first/a$
Second match: ^second/b$

Combined match: ^(first/a|second/b)$

导致类似以下的结果:
<rule name="MyCombinedRule">
    <match url="^(first/a|second/b)$" />
    <action type="Redirect" url="http://www.example.com/third/c" />
</rule>

作为额外的说明,子文件夹可以清除父目录中的规则,但这意味着我需要将规则复制到每个子目录。 - Broam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接