.htaccess 将https://[Domain Name].com重定向到https://www.[域名]

.htaccess 将https://[Domain Name].com重定向到https://www.[域名],.htaccess,mod-rewrite,ssl,.htaccess,Mod Rewrite,Ssl,我知道这是一项常见的任务,但我无法理解。我们有用于www.domain-name.com的SSL证书,但不用于domain-name.com。当访问者打开url时,他们会收到一个证书错误 我尝试了以下重写规则和条件: RewriteEngine On Rewritecond %{https_host} ^domain-name.com [nc] RewriteRule ^(.*)$ https://www.domain-name.com/$1 [r=301,nc] Rewritecond %{

我知道这是一项常见的任务,但我无法理解。我们有用于www.domain-name.com的SSL证书,但不用于domain-name.com。当访问者打开url时,他们会收到一个证书错误

我尝试了以下重写规则和条件:

RewriteEngine On
Rewritecond %{https_host} ^domain-name.com [nc]
RewriteRule ^(.*)$ https://www.domain-name.com/$1 [r=301,nc]

Rewritecond %{http_host} ^domain-name.com [nc]
RewriteRule ^(.*)$ https://www.domain-name.com/$1 [r=301,nc]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}$1 [R=301,L]

我非常感谢您的帮助。

您可以尝试任何您想要的,您不会通过重写来解决问题

当然,您可以将请求重定向到您拥有有效证书的域。但这其实不是你的问题。您面临的问题是,无论您根据原始请求向您没有有效证书的域发送何种答复,浏览器都会发出警告/错误。这样做是正确的行为。原因很简单:浏览器从声称是通过https请求的服务器收到回复,但无法通过有效证书证明该回复。这显然违反了安全模型,并且必须导致错误。这就是验证证书的全部意义:确保发送答案的服务器实际上就是它声称的系统。没有有效的证书,无论您尝试什么“解决方法”,您都无法做到这一点


您唯一的选择是获得域名的有效证书,而不在域名中添加难看的“www”。实际上,最好的选择是获得一个“通配符证书”,这样一个证书对两个域名都有效

最好的解决方案是使用
subjectAltName
部分中提到的备用域名获取证书。