环境variables的值在bash中设置:
# export PRODUCTION=true # echo $PRODUCTION # true
这里是我的虚拟主机文件的相关摘录:
<If "-T osenv('PRODUCTION')"> Define dogs dogs </If> <Else> Define cats cats </Else>
apache2ctl -S产生:
Define: dogs=dogs Define: cats=cats
因此,我们有一个量子条件是真的和假的 。 这里发生了什么事情,如何使其正常运行?
我在这些引用中找不到任何内容,表明我做错了什么。
当你运行apachectl -S它只是parsing代码以确保它在语法上是正确的,而不是实际执行代码。 输出只是告诉你可能发生的事情不是评估if / else块的结果。
你可以通过在if和else块中实际上有一个活动的Apache指令来validation。 例如:
<If "-T osenv('PRODUCTION')"> Define dogs dogs Header set MyHeader1 "PRODUCTION defined %D %t" </If> <Else> Define cats cats Header set MyHeader2 "PRODUCTION undefined %D %t" </Else>
而且,如果Apache定义了PRODCUTION或者没有定义PRODCUTION,那么您将在服务器的响应中看到不同的头文件。 %D和%t在那里添加一些随每个请求而改变的东西,这样你就不会觉得你得到了某种caching的东西。
请注意,为了这个工作,你必须做一个句号,并在设置/取消设置PRODUCTION环境variables之间开始,重启将不起作用。