IIS 重写规则以强制执行 HTTPS 和几个规范域之一
IIS rewrite rules to enforce HTTPS and one of several canoncial domains
我正在查看的网站有多个规范域 - 例如
example.com
example.com.au
example.co.nz
以及一些 'other' 需要重定向到规范域之一的域(例如 example.us
应该转到 example.com
)。
应通过 HTTPS 访问所有站点
是否可以为每个规范域编写一个简明的规则,将用户重定向到该域 iff
- 它们不在规范域中(例如
www.example.com
、example.us
)或
- 连接不是 HTTPS
我想我可以看到如何用多个规则来做,但它很快就会变得繁琐(所以简洁的规则会更好)
我通过以下方式实现了它(使用 #
分隔符将多个变量推入 input
):
<rule name="Redirect to example.co.nz" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}#{HTTP_HOST}" pattern="(^OFF)|(^.*#www\.)" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example.co.nz$" />
</conditions>
<action type="Redirect" url="https://example.co.nz/{R:1}" />
</rule>
我正在查看的网站有多个规范域 - 例如
example.com
example.com.au
example.co.nz
以及一些 'other' 需要重定向到规范域之一的域(例如 example.us
应该转到 example.com
)。
应通过 HTTPS 访问所有站点
是否可以为每个规范域编写一个简明的规则,将用户重定向到该域 iff
- 它们不在规范域中(例如
www.example.com
、example.us
)或 - 连接不是 HTTPS
我想我可以看到如何用多个规则来做,但它很快就会变得繁琐(所以简洁的规则会更好)
我通过以下方式实现了它(使用 #
分隔符将多个变量推入 input
):
<rule name="Redirect to example.co.nz" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}#{HTTP_HOST}" pattern="(^OFF)|(^.*#www\.)" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example.co.nz$" />
</conditions>
<action type="Redirect" url="https://example.co.nz/{R:1}" />
</rule>