[英]Conditionally set environment variable in Apache config
我正试图为Apache使用的单点登录模块做一个后退。 通常,当启用此模块时,一旦模块将HTTP_LOGIN
设置为用户名,登录后。 但我想以这样的方式配置我的网络服务器,以便我有一个后备选项。 我的想法是在Apache配置中设置一个环境变量,指示哪个SSO解决方案当前处于活动状态。 我检查了这个,它按预期工作。 Web应用程序查看新的环境变量。
但我也想强制HTTP_LOGIN
到预定值(“readonly”)。 无条件地设置HTTP_LOGIN
,这可以按预期工作,但是只要SSO_SOLUTION
设置为none
,我HTTP_LOGIN
有条件地设置SSO_SOLUTION
。
SetEnv SSO_SOLUTION none
SetEnvIf SSO_SOLUTION ^none$ HTTP_LOGIN=readonly
这似乎不起作用,但我从Apache文档中了解到它应该。 我是否误解了文档和/或我在这里错误配置了什么?
mod_setenvif
是在配置中配置的(但我可以从正在运行的网络服务器查询,只是为了仔细检查?)。 日志中没有意外错误。
平台:RHEL 6.4
从源资源中搜索您的问题,我发现了一个由Turboflash完成的优秀的Env测试矩阵 。
以下是完整的测试矩阵帖子: http : //turboflash.wordpress.com/2010/05/27/apache-environment-variables-visibility-with-setenv-setenvif-and-rewriterule-directives/
对你来说真正有趣的事情是A_2环境变量的结果是空的。
在最后的矩阵他说, 环境变量设置由Setenv
中不具备SetenvIf
。 但是,通过SetenvIf
(B_2)设置的环境变量不是这种情况。
所以,你应该尽量使用SetenvIf
,而不是Setenv
与像一个总是匹配规则Remote_Addr "^"
是这样的:
SetEnvIf Remote_Addr "^" SSO_SOLUTION=none
SetEnvIf SSO_SOLUTION ^none$ HTTP_LOGIN=readonly
并且还在设置SSO_SOLUTION时使用的其他部分上使用SetenvIf(并且不要使用mod_rewrite更改此env值,请检查矩阵)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.