在 IIS7 中,有一条规则可以自动重定向到我们网站使用的 HTTPS。
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="false">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
我们正在向使用相同 Web 应用程序的网站添加一个新域名(例如 www.newdomain.com),但 URL 的处理方式不同。当访问 newdomain.com 或类似的 www.newdomain.com 时,用户应被重定向到https://www.newdomain.com/example因为我们目前没有 newdomain.com 的 SSL 证书。但是我们现有的域名使用与 www 不同的子域名,我们不需要 IIS 来处理。为了处理此重定向,我使用以下规则:
<rule name="Redirect newdomain" enabled="true" stopProcessing="false">
<match url="(^$)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(www\.)?newdomain\.com$" />
</conditions>
<action type="Redirect" url="https://www.newdomain.com/example" appendQueryString="true" redirectType="Permanent" />
</rule>
此规则在从 www.newdomain.com 访问网站时有效。但是,当尝试访问没有子域的 newdomain.com 时,重定向仅针对初始规则发生,并且用户将被定向到https://newdomain.com以及 SSL 证书错误。如何才能进行重定向以设置正确的子域,同时又不影响仅使用其他规则的任何网站?