Firefox 不转发到 https://non-www.domain.com

Firefox not forwarding to https://non-www.domain.com

我正在开发 GoDaddy VPS(Apache、CentOS、cPanel)。我的 SSL 证书对 example.com 有效,但对 www.example.com 无效。

我想使用 .htaccess 文件将任何请求转发给 https://example.com/<pages>

我的代码:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule ^(.*) https://example.com/ [L,R=301]

问题:
所有经过测试的浏览器(Chrome、Edge、Opera)均适用于 http、https、www 和特定页面的所有组合。但是,Firefox 不会转发 https://www.example.com(带有或 w/out 页面)。

我收到一条安全警告,指出 www.example.com 不在证书上。

我尝试了许多其他代码片段,但 none 似乎有效。

Firefox 可能看起来很奇怪,但实际上是其他浏览器做的“错误”——为了用户的方便而宽容其他人的服务器错误配置。 (此外,一旦您意识到您提到的所有三个浏览器 - Chrome、Edge、Opera - 都是 Chromium 的分支,它看起来就不那么奇怪了。)

如果您查看 Chrome 开发工具,您会看到:

Redirecting navigation www.example.com -> example.com because the server presented a certificate valid for example.com but not for www.example.com. To disable such redirects launch Chrome with the following flag: --disable-features=SSLCommonNameMismatchHandling

因此,即使您没有为 https://www.example.com 出示有效证书,Chrome 也足以执行重定向,因为您 做了 提供对重定向的目标域有效的证书 (example.com),即使从技术上讲重定向响应是通过未正确保护的连接返回的(证书与请求的域不匹配)。

解决方案是首先拥有一个适当的 SSL 证书,包括您希望您的网站可以在其下访问的所有域,在这种情况下可能只是 example.comwww.example.com . (如果您为裸域购买证书,某些证书颁发机构甚至会免费包含 www 子域。)