Apache 可以有条件地从自定义 http 标头执行重写吗?

Apache 可以有条件地从自定义 http 标头执行重写吗?

我在 (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]

相关内容