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

时间:2017-07-21 19:57:19

标签: redirect iis web-config iis-10

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

maindomain.com
aliasdomain.net
aliasdomain.org

我们在Windows 2016 Server上通过IIS使用Let's Encrypt for https。

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

因为let的加密证书不是创建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

并不困难

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  

您的规则存在的问题是您在使用{HTTP_HOST}   重定向操作。此参数将从中获取传入的主机名   请求。我认为这不是你想要的。 <action type="Redirect" url="https://{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />

     
    

请尝试以下规则。如果主机名不匹配,它会重定向     www.maindomain.com,也强制执行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>