我设置了 301 重定向http://域名.com到http://www.domain.com(http://www.domain.com$S$Q) 但是如果我浏览到 https://domain.com 我收到 SSL 错误(因为它预期的是 www.domain.com)。
有什么方法可以在浏览器抛出证书错误之前让它重定向吗?
答案1
是的,但不是你想的那样。
- 您需要一个有效的 domain.com 证书
- 您需要 domain.com 和 www.domain.com 拥有单独的公共 IP 地址
如果你做不到这一点,那你很不幸。你不能使用 HOST 标头来区分这两个请求,因为那太晚了(因此,需要单独的 IP 地址)。除非你拥有有效的证书,否则浏览器会阻塞,因此你还需要第二个证书。
恐怕没有办法满足这些要求。
答案2
我有完全相同的要求,例如重定向所有https://domain.com到https://www.domain.com并将所有 http 重定向到 https,以下是我如何实现并使其在 IIS 8.5 中运行。我在 web.config 文件中使用了以下代码:
<system.webServer>
<!--Maybe some other settings-->
<rewrite>
<rules>
<rule name="http to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
<rule name="Redirect to www" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTP_HOST}" pattern="yourdomainname.com" />
</conditions>
<action type="Redirect" url="https://www.yourdomainname.com/{R:0}" />
</rule>
</rules>
</rewrite>
<!--Maybe some other settings-->
</system.webServer>
这很有效。实际上,我是通过使用 Web 平台安装程序安装“URL 重写模块”在 web.config 中生成上述代码的。安装后,我在 IIS 8.5 中找到了此模块,然后添加了新规则。希望您可以直接在 web.config 中写入此代码来完成任务。
答案3
有办法解决这个问题。您可以为 www.domain.com 和 domain.com 获取单个证书。然后您可以使用常规重定向。不过这些多域名证书通常更贵。
答案4
在 www.domain.com 的证书上,您需要为 domain.com 添加 SAN 条目。您的颁发者将重新颁发证书。一旦将名称作为 SAN 添加到证书中,证书便可用于该名称。
SAN 条目是主体备用名称。您可以将多个 SAN 添加到一个证书。
以下是更多信息:https://www.digicert.com/subject-alternative-name.htm