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

标签 .htaccess mod-rewrite ssl

我知道这是一项常见任务,但我无法弄清楚。我们有 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/

相关文章:

.htaccess - htaccess - 将所有请求重定向到域根

php - Htaccess 重定向特定页面和查询字符串变量

重写我的 htaccess 后,Php PDO 和 Get 方法无法在干净的 URL 中工作

ssl - 由于 LB 运行状况检查,Vault 节点中的连续 TLS 握手错误日志

java - "SocketException: Unconnected sockets not implemented"带有自签名 SSL 证书

php - 使用 .htaccess 和 php 重定向 url(如果它包含特定单词)

php - 使用重写引擎时正确编码 url

apache - 用于捕获所有错误的单个 ErrorDocument 指令 (.htaccess)

apache - 使用 apache 和 mod_rewrite 进行 A/B 测试

即使证书在浏览器中有效,Java 也无法验证证书