这个Apache环境变量语法是如何工作的?
我已经看到了一系列在htaccess中动态设置请求源标题的示例,这些示例大致如下所示:这个Apache环境变量语法是如何工作的?,apache,environment-variables,Apache,Environment Variables,我已经看到了一系列在htaccess中动态设置请求源标题的示例,这些示例大致如下所示: SetEnvIf Origin "^http(s)?://(.+\.)?(example\.com|example\.org)$" REQUEST_ORIGIN=$0 Header always set Access-Control-Allow-Origin %{REQUEST_ORIGIN}e env=REQUEST_ORIGIN 然而,我似乎在任何地方都找不到第二行的语法解释。我在这里还找到了一个语法类
SetEnvIf Origin "^http(s)?://(.+\.)?(example\.com|example\.org)$" REQUEST_ORIGIN=$0
Header always set Access-Control-Allow-Origin %{REQUEST_ORIGIN}e env=REQUEST_ORIGIN
然而,我似乎在任何地方都找不到第二行的语法解释。我在这里还找到了一个语法类似的示例,但同样没有解释它是如何工作的:
具体来说,我想知道%{REQUEST_ORIGIN}e
和env=REQUEST_ORIGIN
这些东西都有什么作用?前者似乎对变量做了一些事情,但大括号语法是如何工作的,以及为什么后面的
e
?第二行仅在设置了REQUEST\u Origin变量时才设置访问控制允许原点
关于%{REQUEST_ORIGIN}e
它告诉我们需要从环境变量中获取值
基本上,这两行一起检查有效/安全的来源,如果检查通过,则将CORS头设置为正确的值
文档
Header指令后面可能会有一个附加参数,该参数可以是以下任一参数:
env=[!]varname
当且仅当环境变量varname存在时,才会应用该指令。A.在varname前面,会反转测试,因此该指令仅在varname未设置时适用
至于e
语法:
%{VARNAME}e环境变量VARNAME的内容
参考资料:
谢谢。搜索“apache环境变量”可以得到mod_env文档,这些文档毫无用处。显然,mod_headers docs就是我要找的。我注意到,在大括号中包含的所有变量在大括号结束后也有一个字母,比如
%{Referer}I
,这个字母(I
)有什么意义吗?Apache2手册中没有提到它。@AnthonyK根据apache文档,这些“i”是来自请求头的值。此外,没有一个地方可以记录所有这些内容,它们似乎是每个模块的设置。根据apache配置中的哪个部分,尝试查看特定的模块文档。