如何将 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]
我正在通过 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]