好的,这里有一个奇怪的重定向问题。我有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
并不困难感谢您的帮助。
答案 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>