如何在 Apache SetEnvIf 值中转义空格

Ale*_*x B 6 environment-variables apache-2.2

我正在尝试使用 SetEnvIf(Apache2,通过 .htaccess 文件)来存储环境变量,其中分配给变量的值需要包含空格。例如,尝试将环境变量“AUTH_KEY”设置为具有值“a b”:

SetEnvIf Request_URI "^/example" AUTH_KEY="a\ b"
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我都无法转义值中的空格 - 空格充当要创建的 env vars 之间的分隔符(在上面的 AUTH_KEY 是用值 '"a\' 和第二个 env var 创建的创建名为 'b"')。我也尝试过单引号但没有运气。

如何转义空格字符?

Ale*_*x B 6

最后我自己想通了……

SetEnvIf Request_URI "^/example" "AUTH_KEY=a b"
Run Code Online (Sandbox Code Playgroud)

......这看起来很奇怪,但有效。它正确地将 AUTH_KEY 设置为值a b

希望这可以在将来节省其他人的时间。

详细信息:-我不是 C 程序员,但在 Google 上乱七八糟我发现http://www.bvbcode.com/code/s6148jvr-385031 上列出了 mod_setenvif.c

在第 405 行调用了一个函数(ap_getword_conf我在http://docstore.mik.ua/orelly/apache_mod/155.htm找到了详细信息),它似乎解析字符串,由空格分隔(但可以选择封装在引号中并接受转义字符的使用)。

我注意到这发生在上述函数返回的子字符串被 '=' 字符分割之前(第 411 行,由函数 ap_getword)。因此,在key=value货币对周围引用,而不仅仅是价值。