【发布时间】:2018-10-08 10:56:33
【问题描述】:
我的 Apache 服务器位于 ALB/ELB 后面。我在负载均衡器上终止 SSL。负载均衡器同时监听 80 和 443。我想将所有 http 请求重定向到 https。
我在虚拟主机配置中有这个重写规则:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
这可行,但问题是我在 htaccess 文件中也有重定向。当通过 htaccess 文件发生重定向时,它首先重定向到 http,然后 vhost 配置重定向将其拾取并重定向到 https。我想消除额外的 http 重定向。
http://mysite.example.com/sub 301 https://mysite.example.com/sub 301 http://mysite.example.com/newsub - 这个重定向是 htaccess 301 https://mysite.example.com/newsub 200
我想先优雅地绕过让 htaccess 重定向到 http。我可以通过添加 https://%{HTTP:Host} 来重写规则来解决这个问题。这是最好的方法吗:
RewriteRule ^sub$ https://%{HTTP:Host}/newsub [R=301,L]
【问题讨论】:
-
如果您有权访问 .conf 文件,则根本不应该使用 .htaccess
-
是的,我正在考虑只使用一个带有重定向的 .conf 文件,然后在 vhost 配置中进行包含。我的目标是为我的用户简化重定向文件。
标签: apache .htaccess redirect amazon-elb