我发现这些问题的答案(特别是this one)对我来说都没有,所以我走了。
我们在Windows Server 2012 R2上运行IIS 8。我们在服务器上安装了通配符证书(* .mydomain.com)。在默认网站上,我们有一个绑定来接受端口443上的传入https请求。我有第二个网站设置了一个绑定,以接受端口80上的传入http请求。
在后一个网站上,我创建了一个URL重写规则,将所有传入的非HTTP流量重定向到https://myserver.mydomain.com{REQUEST_URI}
,这非常有效。如果我浏览到http://myserver.mydomain.com/homepage
或http://myserver/homepage
,我会成功地重定向到包含完整域名的网站的HTTPS版本,因此它加载得很好。
如果我浏览到https://myserver.mydomain.com/homepage
,该网站也会完美加载。
但是,我正在尝试在默认网站上创建另一个URL重写规则,以便向https://myserver/homepage
(注意:HTTPS但省略完整域名)的请求被重定向到https://myserver.mydomain.com/homepage
。原因是SSL证书仅在包含完整域时才匹配。目前,如果我输入https://myserver/homepage
,我会收到安全警告(NET::ERR_CERT_COMMON_NAME_INVALID
)。
我根据上面链接的答案创建了我认为应该有效的规则,但它不起作用,我不知道为什么。我的规则看起来像这样:
<rewrite>
<rules>
<rule name="Redirect to FQDN" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^myserver$" />
<add input="{HTTPS}" pattern="^ON$" />
</conditions>
<action type="Rewrite" url="https://myserver.mydomain.com/{R:1}" />
</rule>
</rules>
</rewrite>
即使已启用并启用此规则,当我浏览到https://myserver/homepage
时,我会收到安全消息。我对这条规则做错了什么?