强制HTTPS并剥离WWW而不接收Cert错误

时间:2012-08-09 21:36:58

标签: apache .htaccess mod-rewrite ssl https

我正在开发一个只拥有domain.com SSL证书的网站。我想删除www。并重定向到domain.com。我工作得很好。

我还想在所有页面上强制使用HTTPS,如果www可以正常工作。没有输入。

https://www.domain.com使用网址时出现错误。

我可以看到它重写为https://domain.com但是我得到了一个我必须接受或拒绝的证书错误。

有没有办法解决这个问题而不购买另一张证书?

以下是我尝试的许多规则组合中的两个(其中许多是来自其他SO答案)。

1

RewriteCond %{HTTP_HOST} ^(www\.)(.+) [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]

2

RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{SERVER_PORT} !^443
RewriteRule ^ https://domain.com%{REQUEST_URI} [R=301,L]

1 个答案:

答案 0 :(得分:3)

我认为没有办法解决这个问题。证书错误来自SSL(TLS)连接,该连接在发出任何HTTP请求之前发生。

如果用户转到http://www.domain.com/http://domain.com/,您可以重定向到https://domain.com/就好了。 如果用户转到https://www.domain.com/,他们会在收到重定向之前收到证书错误。

我认为你的选择是:

  1. 将www.domain.com指向已禁用HTTPS的服务器。用户在点击https://www.domain.com/时会收到连接错误,这可能更适合证书错误
  2. 购买www.domain.com或* .domain.com
  3. 的证书