2012-08-09 52 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