2014-10-29 42 views
30

我已經從這個更新我的.htaccess重定向循環:的Apache HTTP:X - 轉發,原在.htaccess導致在開發環境

RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

這樣:

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

讓它在AWS Elasic負載均衡器後面工作。

這一切似乎都可以在AWS上正常工作,但在我的本地環境中,我被困在重定向循環中。

如何讓這個設置在兩種環境下都能正常工作?

+0

你運行你的本地Apache服務器作爲反向代理/負載均衡?您是否在本地VirtualHost配置中設置了「RequestHeader set X-Forwarded-Proto」https「'? – kums 2014-10-29 02:24:18

回答

56

,使其在兩種環境下工作,你可以結合兩個條件:

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] 
+2

這實際上沒有[OR],但是它會導致重定向循環。 – greg 2014-10-29 16:28:33

+2

這完美的作品!謝謝! – phlegx 2015-05-27 21:48:56

+0

這適用於我的主頁'http://www.ex.com重定向到https',但如果有人轉到直接頁面''http:// www.ex.com/about'不會重定向到https。我位於AWS負載均衡器的後面 – 2017-02-14 19:31:07