如何将 Apache 环境变量传递给 .htaccess 中的 url

How to pass Apache environment variable to url in .htaccess

我正在通过 php 函数设置 apache 环境变量,apache_setenv

apache_setenv("EXAMPLE_VAR", "Example Value");

但是我在访问这个变量时遇到问题 .htaccess 我无论如何都无法在 .htaccess 中使用这个环境变量。但我可以通过 php getenv().

访问它

问题不仅在于通过 php 设置变量,我无法访问由 .htaccess 本身设置的环境变量。

我试过了

假设环境变量为 www.domain.com.

RewriteEngine On
RewriteCond ^(.*)$ test.php?id=%{ENV:VARIABLE} [L]

&

RewriteEngine On
RewriteCond %{ENV:VARIABLE} ^www.(.+)
RewriteRule ^ test.php?id=%1 [L]

以及类似的其他测试,仅验证环境变量是否已设置并正常运行。

Mod_env 并且 mod_rewrite 已开启。

由于 Apache 加载模块的顺序,mod_rewrite 看不到使用 SetEnv 指令的变量集。像这样使用 SetEnvIf

SetEnvIf Host ^ VAR=/foo/bin

然后在mod_rewrite规则中使用:

RewriteEngine On

RewriteCond %{ENV:VAR} =/foo/bin
RewriteRule ^home/?$ /something [L,NC]