Cakephp2 https 在 AWS ECS 上重定向

问题描述 投票:0回答:1

我有一个旧的 cakephp2 应用程序,我正在将其部署到 AWS ECS。 但是,它需要将所有请求重定向到 https。 我已更新

.htaccess
如下:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_URI} !=/server-status
   RewriteBase /

   RewriteCond %{HTTP:X-Forwarded-Proto} !https
   RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
   RewriteRule ^$ https://%{SERVER_NAME}/users/login [R,L]

   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

我希望所有请求都被重定向到 https,但仍有一个请求未正确重定向。在登录页面上,单击登录时,它应该将用户重定向到

https://%{SERVER_NAME}/tests/users
,但是当向该 url
https://%{SERVER_NAME}/tests/users
发出请求时,它会不断将请求重定向到 (http)
http://%{SERVER_NAME}/users/login
。有什么建议么?谢谢。

php https amazon-ecs cakephp-2.0
1个回答
0
投票

您拥有的事实:

RewriteCond %{HTTP:X-Forwarded-Proto} !https

在您的重写条件之一中,表明您可能正在使用 ELB(或类似的)来终止 SSL 并将请求转发到未加密的 Web 服务器。

CakePHP 2 依赖于 Web 服务器设置的

HTTPS
变量来指示请求已加密(检查 lib/Cake/basics.php 中的
env
函数)。您可以使用
SetEnvIf
基于
X-Forwarded-Proto
标头添加变量:

SetEnvIf X-Forwarded-Proto "https" HTTPS=on
© www.soinside.com 2019 - 2024. All rights reserved.