【发布时间】:2014-07-05 13:15:04
【问题描述】:
所以我查看了其他类似的问题,它们提供了解决方案,但由于某种原因,它们似乎都不起作用。所以,对于初学者来说,我的 ELB 是这样设置的
HTTP (incoming) -> HTTP (instance)
HTTPS (incoming) -> HTTP (instance)
所以两个流量都应该在端口 80 上进入。这很有效,因为当我使用 http://mydomain.com 或 https://mydomain.com 访问我的网站时,即使我在端口 80 上只有一个 VirtualHost,它也能够显示。
问题在于尝试将所有 http 流量重写为 https。我过去常常根据端口来做这件事(检查是否!443 并重写为 https),但现在一切都进入 80,这将不起作用。所以我正在运行一个 Apache 服务器并有这个重写规则
RewriteEngine on
RewriteCond %{HTTP_HOST} www.(.+) [OR,NC] # Added
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^/?(.*) https://mydomain.com%{REQUEST_URI} [L,R=301]
但它似乎永远不会起作用。我还缺少其他行吗?有没有办法检查它是否达到了那个条件?我尝试了 !https 和 http 作为条件,但都没有成功。
编辑:将我的 RewriteRule 稍微更改为现在的样子,但仍然无法正常工作。我添加了一个额外的条件来重写 www 并且 有效。 HTTP:X-Forwarded-Proto 要么不存在,要么负载均衡器没有设置
编辑:这个错误真的很愚蠢。我只是通过 SSH 连接到错误的实例。谢谢你容忍我的愚蠢
【问题讨论】:
标签: apache mod-rewrite amazon-web-services amazon-elb