2013-07-14 113 views
7

由於太長和太複雜的原因(涉及多層企業繁文tape節導致其他人不購買我要求的通配符SSL證書),我必須建立一個域來將所有請求重定向到https://www.xyz.com - 與www子域的安全協議。通過htaccess將所有http和https非www的URL重定向到https://www.xyz.com

因此:http://xyz.com,http://www.xyz.comhttps://xyz.com應該ALL重定向到https://www.xyz.com

我的.htaccess-fu最好是弱,我似乎無法得到這個工作。注意:如果這有所影響,則在Media Temple上進行託管。

到目前爲止,我的.htaccess文件看起來像這樣:

RewriteEngine On 
RewriteCond %{HTTPS} !^on$ 
RewriteRule (.*) https://www.xyz.com/$1 [R,L] 

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

兩個http://xyz.comhttp://www.xyz.com被重定向到https://www.xyz.com,所以耶。然而,https://xyz.com重定向到https://www.xyz.com,並因此拋出一個安全警告頁面:

這可能不是你要找的網站!
您試圖到達xyz.com,但實際上您已到達服務器,並將其自身識別爲www.xyz.com。這可能是由於服務器配置錯誤或更嚴重的原因造成的。您網絡上的攻擊者可能會試圖讓您訪問假冒(可能有害)版本的xyz.com
你不應該繼續,特別是如果你以前從未見過這個網站的警告。

任何幫助讓我過去這一個最後的駝峯將非常感激!

回答

8

這是非常可能的。使用下面的代碼。這對我有用。

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

這解決了我的問題 - 謝謝@Junaid Atique – Andrew

+0

這不適合我,因爲我沒有爲www.mydomain.com和mydomain啓用證書。根據Scottie的回答。 – alieninlondon

3

即使這個問題很老。

如果發現它確實是同一個問題。在這裏提供的代碼沒有幫助。我試過並嘗試過。

這一個爲我工作:

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

修正了我的問題,沒有任何循環或其他錯誤。也許它會幫助別人。

+0

這個解決方案在嘗試了很多項目大約20分鐘後就工作了,但它並不完美,但其他一切都將非http指向https://www.example.com,我無法弄清楚! – Barry

相關問題