2016-03-11 115 views
0

這對我來說是永遠不可能的。我嘗試了很多不同的方法,但他們都沒有爲我工作。使用.htaccess強制HTTP通信到HTTPS

我想強制所有嘗試訪問HTTP的流量自動重定向到HTTPS。

我的.htaccess看起來是這樣的:如果

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(www.)yourdomainname.com 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

不知道它的相關性,但我的網站上使用Apache一個VPS運行。

如果有人可以幫我解決方案,我做錯了什麼,將不勝感激。

編輯:這是我的httpd.conf文件:http://pastebin.com/VMYXGi0X

回答

0

這可能是因爲有一些路由發生之前,請求實際上得到您的Apache服務器,因此HTTPS可能不存在處理。你可以嘗試更換這行:

RewriteCond %{HTTPS} off 

RewriteCond %{HTTP:X-Forwarded-Proto} ^http$ [NC] 

捕獲原始協議。

+0

剛剛試過換了這一點,可惜沒有結果 –

0

發現問題。

正在關注this指南,我調整了我的httpd.conf中的虛擬主機以適合我的網站。然而,這然後發送我的URL到重定向循環,造成另一個問題。

我隨後發現this#1的答案是非常有益的,並解釋說亞馬遜的X-Forwarded-Proto,像這樣:

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R]