apache - %(百分号)在 Apache 的 httpd.conf 中有什么作用?

标签 apache

好的,我从 http://httpd.apache.org/docs/2.0/misc/rewriteguide.html 看到以下示例.是否%{}使 Apache 将这两个分隔符之间的字符串解释为 Apache 变量?这个功能在哪里记录?

RewriteCond %{HTTP_HOST}   !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/?(.*)         http://www.example.com:%{SERVER_PORT}/$1 [L,R,NE]

然后,http://httpd.apache.org/docs/2.2/configuring.html将使用 shell 变量描述为 ${ENVVAR} .有什么不同?

最佳答案

%{NAME_OF_VARIABLE}语法(不仅仅是 % 符号)只是 mod_rewrite 访问服务器变量( specific to mod_rewrite )的预定义列表之一的机制。正如 RewriteCond directive 所记录的那样.

无封闭%{ .. }然后 NAME_OF_VARIABLE被视为文字字符串。

要在 mod_rewrite 中访问环境变量,请使用以下语法:%{ENV:variable} . (其他语法 ${ENVVAR} 似乎也适用于此,但是,如果 ENVVAR 不存在,则行为会有所不同。如果 ENVAR 不存在,则 ${ENVVAR} 返回文字字符串“${ENVAR}” , 而 %{ENV:ENVAR} 返回一个空字符串。如果您在 RewriteCond 中使用重写映射,也可能会发生冲突,因为使用了类似的语法。即 ${mapname:key|default} - 尽管我认为 : 应该使这一点明确?)

关于apache - %(百分号)在 Apache 的 httpd.conf 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28290355/

相关文章:

apache - 仅允许外部承包商访问 apache web 文件夹。选项 : SFTP Jailing

apache - 控制 HDFS 复制、映射器数量和 reducer 识别

java - 我不断收到 404 tomcat 错误

php - Laravel - 如何向浏览器提供新的 Laravel 项目

c++ - 为什么我应该使用 Apache C++ 标准库而不是任何其他 STL 实现以及 Boost?

java - 检查来自 HttpServletResponse 的流是否被客户端下载 - JAVA

apache - 为什么 hdfs 在 Hadoop 集群中抛出 LeaseExpiredException (AWS EMR)

java - 如何使用camel将文件从源复制到目标

ruby-on-rails - 如何在 Apache 上运行 ruby ?

java - Apache POI - 读取具有值的单元格时获取空指针