Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 将https://[Domain Name].com重定向到https://www.[域名]_.htaccess_Mod Rewrite_Ssl - Fatal编程技术网

.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
部分中提到的备用域名获取证书。