在htaccess中设置具有特定HTTP头的环境变量

时间:2013-11-05 15:44:06

标签: .htaccess environment-variables

如果我发送了特定的HTTP标头,我正在尝试设置一个环境变量。

所以我尝试了一些不同的方式来详细说明

Header set MY_HTTP_HEADER "1"

# tests with with SetEnvIf
SetEnvIf %{HTTP:MY_HTTP_HEADER} ^1$ THE_ENV=ok
SetEnvIf MY_HTTP_HEADER ^1$ THE_ENV=ok
SetEnvIf %{MY_HTTP_HEADER} ^1$ THE_ENV=ok

# tests with RewriteRule
RewriteCond %{HTTP:MY_HTTP_HEADER} ^1$
RewriteRule .* index.php [L,E=THE_ENV:ok]

RewriteCond MY_HTTP_HEADER ^1$
RewriteRule .* index.php [L,E=THE_ENV:ok]

我肯定错过了一些东西,因为上面的所有代码都不起作用。

修改
正确的是SetEnvIf MY_HTTP_HEADER ^1$ THE_ENV=ok,就像@anubhava指出的那样,如果你在同一个.htaccess中设置标题,它就不起作用,所以我创建了另一个页面,调用带有CURL的实际页面,标题为curl_setopt($curl,CURLOPT_HTTPHEADER,array('MY_HTTP_HEADER: 1'));

1 个答案:

答案 0 :(得分:2)

你犯了两个错误:

1)该指令:

Header set MY_HTTP_HEADER "1"

实际上发送响应头而不是请求头。像这样使用它来设置请求标题:

RequestHeader set X-MY-HTTP-HEADER "1"

2)您正在设置请求标头并在同一.htaccess中检查它。尝试从浏览器发送Web请求中的标头(使用一些Rest客户端插件),然后在index.php中找到THE_ENV=ok env值