我在 (simple amazon) 负载均衡器后面有一个 apache 服务器。我想将任何非 443 的传入流量重定向到 443。我希望它只使用一个 apache 虚拟主机。因此,我尝试检测 HTTP_X_FORWARDED_PORT 标头是否不是 443。
我已经检查过了RewriteCond 文档并且它只适用于有限的一组 HTTP 标头。
基本上我正在做的事情是这样的:
<VirtualHost *:80>
ServerName www.example.com
RewriteEngine On
RewriteCond %{HTTP_X_FORWARDED_PORT} !=443
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
....
</VirtualHost>
但是RewriteCond无法识别HTTP_X_FORWARDED_PORT。
有没有其他方法可以实现这一点(仅使用一个VirtualHost)?(某种类型的传入标头检查?)
谢谢,兰斯
答案1
文档中稍微往下一点的地方RewriteCond
:
%{HTTP:header}
,其中 header 可以是任何 HTTP MIME 标头名称
因此,您可以这样做,只是形式与预先提取的标题不完全相同。
尝试这个:
RewriteCond %{HTTP:X-Forwarded-Port} !=443
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]