我在here之前已經提出了查詢。我認爲它正在工作,但實際上還沒有。使用AWS的ELB從Http重定向到https https
我有面向Internet的負載均衡器,後面是Ec2實例。 我的負載均衡器打開端口80和443
他們被安排爲80 - > 80和443 - > 80
現在是我需要重定向到https HTTP訪問。
我所做的是 我製作了一個.htaccess文件並位於/ var/www/html /中。這是我的網站的index.php所在的文件夾。
在.htaccess文件裏面,我嘗試了幾個我在互聯網上找到的版本。他們都沒有工作。
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{HTTP_HOST} www.(.+) [OR,NC] # Added
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^/?(.*) https://domainname.com%{REQUEST_URI} [L,R=301]
</VirtualHost>
爲什麼它在我的設置不起作用?
編輯:
<If "req('X-Forwarded-Proto') != 'https'>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</If>
我從AWS獲得了一條線索的回覆,那就是ELB只是使用X-Forwarded-Proto插入重定向信息。所以實際的重定向實現需要在實例中發生,在Apache中。我需要弄清楚如何。 – batuman
Phabricator解決了類似的問題。 https://stackoverflow.com/a/48149369/7098257 –