2012-08-09 65 views
2

我正在一个只拥有domain.com的SSL证书的网站上工作。我正试图删除www。并重定向到domain.com。这我工作得很好。强制HTTPS和无需接收证书错误带WWW

我也想强制所有页面上的HTTPS,这工作正常,如果www。没有输入。

当我们的URL为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] 
+0

的[重定向到“WWW”可能重复之前ssl要求](http://stackoverflow.com/questions/10929534/redirect-to-www-before-ssl-requirement) – Bruno 2012-08-09 22:27:13

+0

或这些:http://stackoverflow.com/q/11640198/372643 http:// stackoverflow.com/q/10442858/372643 – Bruno 2012-08-09 22:31:44

回答

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/,这可能是preferrable的证书错误
  2. 当买一个证书的用户将会获得一个连接错误www.domain.com或* .domain.com
+1

@FrankFarmer'* .domain.com'不会匹配'domain.com'。点不是通配符的一部分。 – Bruno 2012-08-09 22:25:29

+0

@布鲁诺你是对的。而且他们显然更昂贵。瘸。 – 2012-08-09 22:28:19

+0

我有一种感觉,这是我将要得到的答案。除非我得到一些天才答案,否则我会将其标记为答案。我会说有人在https:// www中输入内容。是不太可能的,尽管当然客户做到了。谢谢。 – Jazzy 2012-08-09 22:39:19