【发布时间】:2017-09-30 05:16:02
【问题描述】:
我在here 之前进行过查询。我认为它正在工作,但实际上还没有。
我的负载均衡器面向 Internet,后面是 Ec2 实例。 我的负载均衡器对端口 80 和端口 443 开放。
它们排列为 80 -> 80 和 443 -> 80。
现在我需要将 http 访问重定向到 https。
我所做的是 我制作了一个 .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 中。我需要弄清楚如何。
-
Phabricator 解决了类似的问题。 stackoverflow.com/a/48149369/7098257
标签: .htaccess amazon-web-services amazon-ec2 url-redirection amazon-elb