我知道这是一项常见任务,但我无法弄清楚这一点。我们有www.domain-name.com的SSL证书,但不是domain-name.com。当访问者打开网址https://domain-name.com时,他们会收到证书错误。
我尝试了以下RewriteRules&条件 - :
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]
我很感谢你的帮助。
答案 0 :(得分:2)
你可以尝试任何你想要的,你不会通过重写来解决问题。
当然,您可以将请求重定向到您拥有有效证书的域。但这实际上不是你的问题。您手头的问题是,无论您发送的原始请求所发送的回复不都有 的有效证书,浏览器总是吐出警告/错误。这样做是正确的行为。原因很简单:浏览器收到来自声明的服务器的回复是通过https请求的回复,但是无法通过有效证书证明该声明。这明显违反了安全模型,并且必须导致错误。这是验证证书的重点:确保发送答案的服务器实际上确实是它声称的系统。没有有效的证书,无论您尝试“解决方法”,都无法做到这一点。
您唯一的选择是获取域名的有效证书,而名称中没有丑陋的“www”。实际上,最好的选择是获得“通配符证书”,因此单个证书对两个域名都有效。