如果我发送了特定的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'));
答案 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值