无法使用 web.config 为 IIS 正确重定向

Trouble getting redirects right using web.config for IIS

好的,这里有一个奇怪的重定向问题。我有 3 个域名,所以我们将它们命名为以下

maindomain.com
aliasdomain.net
aliasdomain.org

我们在 windows 2016 服务器上通过 IIS 使用 Let's Encrypt for https。

我们想要的是任何时候有人在 3 个域中的任何一个键入或 www 都重定向到域名 www.maindomain.com

因为 let's encrypt 证书不是创建 www.域别名的版本给我们带来了一些困难。这是我们正在使用的 web.config 规则,但它们不起作用。

<rule name="Redirect to WWW" enabled="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^www\." negate="true" />
    </conditions>
    <action type="Redirect" url="https://www.{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
</rule>
<rule name="Redirect to HTTPS" enabled="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="OFF" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
</rule>

结果如下 这有效 www.maindomain.com 工作并重定向到 https://www.maindomain.com maindomain.com 工作并重定向到 https://www.maindomain.com

这不起作用,奇怪的是显示了标准的 IIS 登录页面 aliasdomain.net 不起作用重定向到 http://www.aliasdomain.net www.aliasdomain.net 不起作用并重定向到 http://www.aliasdomain.net

这个根本不起作用 aliasdomain.org 不起作用重定向到 https://www.aliasdomain.org www.aliasdomain.org 不起作用并重定向到 https://www.aliasdomain.org

不知道如何让它做我们想做的事。您会认为将任何版本的任何域名重定向到 https://www.maindomain.com

并不困难

在此感谢您的帮助。

The problem with your rule is that you are using {HTTP_HOST} in your redirect action.This parameter will take the incoming hostname from the request.I think that is not what you want. <action type="Redirect" url="https://{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />

Please try below rule. It redirects if the hostname does not match www.maindomain.com ,also enforce https

 <rule name="CanonicalHostNameRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{HTTP_HOST}" pattern="^www\.maindomain\.com$" negate="true" />
                        <add input="{HTTPS}" pattern="off" />
                    </conditions>
                    <action type="Redirect" url="https://www.maindomain.com/{R:1}" />
                </rule>