好的,我从 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/