使用query_string

时间:2015-12-28 02:19:51

标签: apache .htaccess

我正在运行apache并且我只是在请求在查询字符串上有一个变量“q”时尝试设置标头Foo = bar。在我的htaccess中我想要这样的东西:

<RequestUri "q=">
    Header set Foor "bar"
</RequestUri>

当然它不起作用。我已经尝试过使用“Location”和“LocationMatch”,但htaccess中不允许这些。那我怎么能这样做呢?

2 个答案:

答案 0 :(得分:3)

如果您使用的是Apache 2.4,则可以执行类似的操作

<If "%{QUERY_STRING} =~ /q=.*?/">
    Header set Foo "bar"
</If>

https://httpd.apache.org/docs/2.4/mod/core.html#if

https://httpd.apache.org/docs/2.4/expr.html#examples

答案 1 :(得分:1)

如果您想根据查询字符串的值动态设置标头的值,就可以进一步捕获此正则表达式组。

例如,如果您的URL中有一个“ _locale”变量,并且想要捕获其值作为标头,则可以使用:

 <If %{QUERY_STRING} !~ m#_locale=([a-z]{2})#">
     RequestHeader set locale "$1"
</If>

(假设值将是两个小写字母。)

这可能与查询字符串中的“ _locale = en”匹配,然后将“ en”复制到标头“ locale”。