我知道这是一项常见任务,但我无法弄清楚。我们有 www.domain-name.com 的 SSL 证书,但没有 domain-name.com 的证书。当访问者打开 url https://domain-name.com他们收到证书错误。
我尝试了以下 RewriteRules & -Conditions:
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”。实际上最好的选择是获得一个“通配符证书”,这样一个证书对两个 域名都有效。
关于.htaccess - 将 https ://[Domain-Name]. com 重定向到 https ://www. [域名],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23106935/