需要重定向到 https。同样的操作(在根目录(html 目录)中)在其他服务器上有效,但在 AWS(.htaccess)上无效:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://there.com/$1 [R,L]
监听器中的负载均衡器(类型:应用程序)是:
HTTP : 80,查看/编辑规则 > HTTPS:80 > 如果请求未按其他方式路由,则转发到服务 http
HTTPS : 443,查看/编辑规则 > HTTPS:443 > 如果请求未路由则转发到 service-http。
在 etc/httpd/conf/httpd.conf 中,VirtualHost *:80 或 VirtualHost *:443 上没有任何内容
如果我省略 .htaccess 规则,那么它就不会重新路由到 https。
我还应该去哪里寻找?
PS:“不工作”的意思是“ERR_TOO_MANY_REDIRECTS”。
答案1
如果我错了,请纠正我 - 您有一个 ALB 侦听器,它侦听 HTTP(80)和 HTTPS(443),并且在两种情况下都通过 HTTP(80)将请求转发到后端,对吗?
如果是这种情况,后端在两种情况下都会看到 SERVER_PORT=80,因为这是负载平衡器与其通信的方式。负载平衡器和后端之间没有 HTTPS,因此就后端而言,端口始终为 80。
为了使其工作,您必须检查X-Forwarded-Proto
HTTP 标头并如下使用它RewriteCond
:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
希望有帮助:)