0

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

4

1 回答 1

2

你犯了两个错误:

1) 该指令:

Header set MY_HTTP_HEADER "1"

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

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

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

于 2013-11-05T17:22:46.220 回答