如何检查Apache中是否存在IF查询字符串

7fhtutme  于 2023-03-19  发布在  Apache
关注(0)|答案(1)|浏览(107)

我正在尝试检查HTTP请求中是否不存在查询字符串,然后设置一些标头。https://httpd.apache.org/docs/2.4/expr.html
我试过-

<If "! %{QUERY_STRING} ">
        Header always set Cache-Control "max-age=120"
  </If>

<If "%{QUERY_STRING} -z">
        Header always set Cache-Control "max-age=120"
  </If>

获取语法错误。你能告诉我怎么做吗?

c3frrgcw

c3frrgcw1#

<If "%{QUERY_STRING} -z">

应该反过来说:

<If "-z %{QUERY_STRING}">

或者,您可以测试它是否等于空字符串:

<If "%{QUERY_STRING} == ''">

注意,这测试查询字符串是否为“空”,它可能仍然存在。换句话说,在URL的末尾可能有一个单独的?。在这种情况下,可以说有一个查询字符串,但它是空的。
如果您需要更严格地测试是否存在任何查询字符串,甚至是“空”,则针对THE_REQUEST检查字面量?

<If "%{THE_REQUEST} !~ '\?'">
    # There is no query string, since there is no "?"
</If>

!~运算符与正则表达式不匹配。)

相关问题