AWS ELB将HTTP重定向到HTTPS而不使用index.php

时间:2017-11-02 23:48:06

标签: .htaccess amazon-web-services ssl elastic-beanstalk amazon-elb

我正在使用AWS Elastic Beanstalk通过Load Balancer在某些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

注意:我没有遇到重定向循环。

2 个答案:

答案 0 :(得分:1)

我将在这个答案前面说这是来自Tomcat Elastic Beanstalk的代码,但我相信它应该仍然有效。

我的配置代码文件中有:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]

这是配置Apache代理的.ebextensions文件的一部分,在我看来,它位于Tomcat之前。

答案 1 :(得分:0)

您可以在.htaccess中添加以下行,以便在重定向配置后隐藏url中的index.php。

RewriteRule ^(.*)$ /index.php?/$1 [L]