%(百分号)在 Apache 的 httpd.conf 中有什么作用?
What does % (percent sign) do in Apache's httpd.conf?
好的,我从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}/ [L,R,NE]
然后,http://httpd.apache.org/docs/2.2/configuring.html描述使用shell个变量作为${ENVVAR}
。有什么区别?
%{NAME_OF_VARIABLE}
语法(不仅仅是 %
符号)只是 mod_rewrite 访问预定义的 服务器变量列表之一的机制 (specific to mod_rewrite). As documented for the RewriteCond
directive.
没有封闭的 %{
..}
然后 NAME_OF_VARIABLE
被视为文字字符串。
要访问 mod_rewrite 中的 环境变量 ,您可以使用语法:%{ENV:variable}
。 (其他语法 ${ENVVAR}
似乎也适用于此,但是,如果 ENVVAR
不存在,则行为会有所不同。如果 ENVAR
不存在,则 ${ENVVAR}
returns 文字字符串“${ENVAR}”,而 %{ENV:ENVAR}
returns 空字符串。如果您使用重写映射, 可能 也会发生冲突在 RewriteCond
中,因为使用了类似的语法。即 ${mapname:key|default}
- 虽然我认为 :
应该使它明确无误?)
好的,我从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}/ [L,R,NE]
然后,http://httpd.apache.org/docs/2.2/configuring.html描述使用shell个变量作为${ENVVAR}
。有什么区别?
%{NAME_OF_VARIABLE}
语法(不仅仅是 %
符号)只是 mod_rewrite 访问预定义的 服务器变量列表之一的机制 (specific to mod_rewrite). As documented for the RewriteCond
directive.
没有封闭的 %{
..}
然后 NAME_OF_VARIABLE
被视为文字字符串。
要访问 mod_rewrite 中的 环境变量 ,您可以使用语法:%{ENV:variable}
。 (其他语法 ${ENVVAR}
似乎也适用于此,但是,如果 ENVVAR
不存在,则行为会有所不同。如果 ENVAR
不存在,则 ${ENVVAR}
returns 文字字符串“${ENVAR}”,而 %{ENV:ENVAR}
returns 空字符串。如果您使用重写映射, 可能 也会发生冲突在 RewriteCond
中,因为使用了类似的语法。即 ${mapname:key|default}
- 虽然我认为 :
应该使它明确无误?)