变量 SERVER_PROTOCOL 实际上到底包含什么(Apache 2.4)?

变量 SERVER_PROTOCOL 实际上到底包含什么(Apache 2.4)?

我有一个由 Apache 2.4 提供服务的网站,该网站应该通过 HTTPS 提供所有内容。我已经设置了适当的重定向,这些重定向工作正常,但没有发现任何异常情况。我想改善这种情况,在做作业时,我偶然发现了以下示例这个文件

<If "%{SERVER_PROTOCOL} != 'HTTPS'">
    Redirect "/admin/" "https://www.example.com/admin/"
</If>

我对此做了一些修改以反映我的情况:

<If "%{SERVER_PROTOCOL} != 'HTTPS'">
    Redirect "/" "https://www.example.com/"
</If>

现在,当尝试查看我的网站的任何 URL 时,浏览器都会进入无限重定向循环。

我怀疑这个例子其实是错的。SERVER_PROTOCOL似乎在任何情况下都不包含值HTTPS。相反,根据我在其他文章中读到的内容,它包含类似的东西HTTP/1.1(正如名称所期望的那样)。

所以我的问题是:SERVER_PROTOCOL在什么情况下/什么上下文中到底包含什么?为什么我在几个小时的研究中发现,Apache 官方文档网站是唯一一个列出HTTPS可能值的网站SERVER_PROTOCOL

答案1

恭喜,您在 Apache 文档中发现了一个错误。考虑报告它。

至于你眼前的问题,你似乎正在寻找REQUEST_SCHEME其中将包含

请求 URI 的方案部分

例如,httphttps

相关内容