apache中$ {var}和%{VAR}之间有什么区别?

时间:2016-01-21 11:01:27

标签: apache

在doc中,%{VAR}在表达式中,$ {VAR}处于配置状态。

但实际上它们之间有什么区别,我看到一些配置文件也在配置中使用%{VAR}。

1 个答案:

答案 0 :(得分:0)

取决于具体情况:

在常规配置中,${VAR}可以是Apache进程继承的环境变量,或者自Apache 2.4以来,由Define指令定义。

但是,在Rewrite*指令的值中:

  • ${MapName:LookupKey}(请注意将:区分为变量与RewriteMap):用于通过RewriteMap(例如小写子字符串)将值动态映射到其他值
  • %{VAR}指定用于且仅由mod_rewrite使用的预定义变量(请参阅RewriteCond's documentation下的列表)。

编辑:我应该先在Apache的文档中搜索:

  

可以使用语法$ {VAR}在配置文件行中使用使用[来自2.4的新定义]或shell环境变量定义的变量值。如果“VAR”是有效变量的名称,则该变量的值将替换为配置文件行中的该位置,并继续处理,就好像该文本直接在配置文件中找到一样。使用Define定义的变量优先于shell环境变量。如果未找到“VAR”变量,则字符$ {VAR}保持不变,并记录警告。变量名称可能不包含冒号“:”字符,以避免与RewriteMap的语法冲突。

     

只有在启动服务器之前定义的shell环境变量才能用于扩展。

source