Apache 量子不确定性原理...如果指令为真和假

Apache 量子不确定性原理...如果指令为真和假

在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

因此,我们有一个量子条件真与假。这里发生了什么事?我怎样才能让它正常运行?

我在这些参考资料中找不到任何表明我做错的事情的东西。

答案1

运行时,apachectl -S它只是解析代码以确保其语法正确,而不是实际执行代码。输出只是告诉您可能发生的事情,而不是评估 if/else 块的结果。

您可以通过在 if 和 else 块中实际使用有效的 Apache 指令来验证这一点。例如:

<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>

无论是否定义了 PRODCUTION,只要您启动 Apache,您都会在服务器的响应中看到不同的标头。 和%D%t添加随每个请求而变化的内容,这样您就不会认为自己以某种方式获得了缓存的内容。

请注意,要使此功能有效,您必须在设置/取消设置 PRODUCTION 环境变量之间完全停止并启动,重新启动将不起作用。

相关内容