我正在使用 AWS Elastic Beanstalk 在某些 EC2 实例上通过负载均衡器托管我的网站。
我正在使用 OctoberCMS(一种类似 laravel 的框架)
我已经通过 AWS Certificate Manager 在我的 ELB 上设置了 SSL 证书,一切正常。
但是有个问题。
我想将 HTTP 重定向到 HTTPS。
根据 AWS,我得到了一个小的 .htaccess 片段来完成这项工作:
Redirect to HTTPS
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
但是,当用户到达 http://mywebsitesite.com
时,他们将转到 https://mywebsitesite.com/index.php
因此他们开始浏览以 https://mywebsitesite.com/index.php/someresource
的方式。
此外,如果您转到 http://mywebsitesite.com/someresource
,您将被重定向回 https://mywebsitesite.com/index.php
。
这不是一个好的体验,我知道之前肯定有人遇到过这个并且能够正确地重定向到资源并删除 index.php
我的 ELB 监听器默认配置为 80 --> 80 和 443 --> 80
注意:我没有遇到重定向循环。
最佳答案
我会在这个答案的开头说这是来自 Tomcat Elastic Beanstalk 的代码,但我相信它应该仍然有效。
我的配置代码文件中有:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]
这是配置 Apache 代理的 .ebextensions 文件的一部分,在我的例子中,它位于 Tomcat 的前面。
关于.htaccess - AWS ELB 在没有 index.php 的情况下将 HTTP 重定向到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47086370/