2016-01-23 82 views
0

在httpd.conf中,我已經在httpd.conf中編寫了規則以便從不安全重定向到安全(例如,http://example.com - >https://www.example.com),httpd.conf將https://example.com重寫爲https://www.example.com

但是當網站已經是https時,你如何預先登錄www?

例如,如果我去我的瀏覽器並輸入https://example.com我找不到一種方法讓Apache將其重寫爲https://www.example.com。相反,我得到證書錯誤,因爲我的證書只適用於「www.example.com」域。

我目前的審判是:

AllowOverride All 
RewriteEngine On 
# If www is not present: 
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC,OR] 
# ... or if https is not present: 
RewriteCond %{HTTPS} off 
# ensure www and https both present 
RewriteRule .? https://www.example.com%{REQUEST_URI} [NC,L] 

以上沒有在前面加上「www」的,當我在「https://example.com」進入(希望的https://www.example.com結果)

我認爲正在發生的事情:我最初的請求https://example.com在重定向可以起作用之前出現證書不匹配錯誤。

問題:我無法讓Google接受自簽名的* .example.com證書。如果通配符證書有效,上述內容不會成爲問題。

回答

0

您需要使用R標誌從非www重定向到www以及一個額外的規則,以便從非www到www重定向到SSL。

AllowOverride All 
RewriteEngine On 
# ...if https is not present: 
RewriteCond %{HTTPS} off 
# ensure www and https both present 
RewriteRule^https://www.example.com%{REQUEST_URI} [NC,L,R] 
#Redirect non-www to www on SSL 
RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [NC,L,R] 
+0

不幸的是,這是行不通的。當我在https://example.com輸入時,出現證書不匹配警告,我認爲這會阻止處理重定向。從「http://」重定向到「https」+ www雖然工作。 – zz3star90