mirror of
https://github.com/apache/httpd.git
synced 2025-05-16 04:04:32 +03:00
Sorry for the huge diff. It seems that switching from Xalan-j to xalan-c causes the attributes to get reordered. Suggestions for improvements to the build system would be greatly appreciated. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94399 13f79535-47bb-0310-9956-ffa450edef68
194 lines
14 KiB
HTML
194 lines
14 KiB
HTML
<html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!--
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
This file is generated from xml source: DO NOT EDIT
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
--><title>mod_setenvif - Apache HTTP Server</title><link rel="stylesheet" type="text/css" href="../style/manual.css"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_setenvif</h1><table bgcolor="#cccccc" cellpadding="0" cellspacing="1"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Allows the setting of environment variables based
|
|
on characteristics of the request</td></tr><tr><td><a class="help" href="module-dict.html#Status">Status:</a></td><td>Base</td></tr><tr><td><a class="help" href="module-dict.html#ModuleIdentifier">Module Identifier:</a></td><td>setenvif_module</td></tr><tr><td valign="top" align="left"><a class="help" href="module-dict.html#Compatibility">Compatibility:</a></td><td><compatibility>Available in Apache 1.3 and later</compatibility></td></tr></table></td></tr></table><h2>Summary</h2>
|
|
|
|
<p>The <code><a href="mod_setenvif.html">mod_setenvif</a></code> module allows you to set
|
|
environment variables according to whether different aspects of
|
|
the request match regular expressions you specify. These
|
|
environment variables can be used by other parts of the server
|
|
to make decisions about actions to be taken.</p>
|
|
|
|
<p>The directives are considered in the order they appear in
|
|
the configuration files. So more complex sequences can be used,
|
|
such as this example, which sets <code>netscape</code> if the
|
|
browser is mozilla but not MSIE.</p>
|
|
|
|
<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
|
|
BrowserMatch ^Mozilla netscape<br/>
|
|
BrowserMatch MSIE !netscape<br/>
|
|
</code></td></tr></table></blockquote>
|
|
<h2>Directives</h2><ul><li><a href="#browsermatch">BrowserMatch</a></li><li><a href="#browsermatchnocase">BrowserMatchNoCase</a></li><li><a href="#setenvif">SetEnvIf</a></li><li><a href="#setenvifnocase">SetEnvIfNoCase</a></li></ul><p><strong>See also </strong></p><ul><li><a href="../env.html">Environment Variables in Apache</a></li></ul><hr/><h2><a name="BrowserMatch">BrowserMatch</a> <a name="browsermatch">Directive</a></h2><table bgcolor="#cccccc" border="0" cellspacing="0" cellpadding="1"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets environment variables conditional on HTTP User-Agent
|
|
</td></tr><tr><td><a class="help" href="directive-dict.html#Syntax">Syntax:</a></td><td>BrowserMatch <em>regex env-variable</em>[=<em>value</em>]
|
|
[<em>env-variable</em>[=<em>value</em>]] ...</td></tr><tr><td><a class="help" href="directive-dict.html#Context">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a class="help" href="directive-dict.html#Override">Override:</a></td><td>FileInfo</td></tr><tr><td><a class="help" href="directive-dict.html#Status">Status:</a></td><td>Base</td></tr><tr><td><a class="help" href="directive-dict.html#Module">Module:</a></td><td>mod_setenvif</td></tr><tr><td valign="top" align="left"><a class="help" href="directive-dict.html#Compatibility">Compatibility:</a></td><td>Apache 1.2 and
|
|
above (in Apache 1.2 this directive was found in the
|
|
now-obsolete mod_browser module)</td></tr></table></td></tr></table>
|
|
<p>The <code class="directive">BrowserMatch</code> directive defines
|
|
environment variables based on the <code>User-Agent</code> HTTP
|
|
request header field. The first argument should be a POSIX.2
|
|
extended regular expression (similar to an
|
|
<code>egrep</code>-style regex). The rest of the arguments give
|
|
the names of variables to set, and optionally values to which they
|
|
should be set. These take the form of</p>
|
|
|
|
<ol>
|
|
<li><code><em>varname</em></code>, or</li>
|
|
|
|
<li><code>!<em>varname</em></code>, or</li>
|
|
|
|
<li><code><em>varname</em>=<em>value</em></code></li>
|
|
</ol>
|
|
|
|
<p>In the first form, the value will be set to "1". The second
|
|
will remove the given variable if already defined, and the
|
|
third will set the variable to the value given by
|
|
<code><em>value</em></code>. If a <code>User-Agent</code>
|
|
string matches more than one entry, they will be merged.
|
|
Entries are processed in the order in which they appear, and
|
|
later entries can override earlier ones.</p>
|
|
|
|
<p>For example:</p>
|
|
<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
|
|
BrowserMatch ^Mozilla forms jpeg=yes browser=netscape<br/>
|
|
BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript<br/>
|
|
BrowserMatch MSIE !javascript<br/>
|
|
</code></td></tr></table></blockquote>
|
|
|
|
<p>Note that the regular expression string is
|
|
<strong>case-sensitive</strong>. For case-INsensitive matching,
|
|
see the <a class="directive" href="#browsermatchnocase"><code class="directive">BrowserMatchNoCase</code></a>
|
|
directive.</p>
|
|
|
|
<p>The <code class="directive">BrowserMatch</code> and
|
|
<code class="directive">BrowserMatchNoCase</code> directives are special cases of
|
|
the <a class="directive" href="#setenvif"><code class="directive">SetEnvIf</code></a> and <a class="directive" href="#setenvifnocase"><code class="directive">SetEnvIfNoCase</code></a>
|
|
directives. The following two lines have the same effect:</p>
|
|
<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
|
|
BrowserMatchNoCase Robot is_a_robot<br/>
|
|
SetEnvIfNoCase User-Agent Robot is_a_robot<br/>
|
|
</code></td></tr></table></blockquote>
|
|
<hr/><h2><a name="BrowserMatchNoCase">BrowserMatchNoCase</a> <a name="browsermatchnocase">Directive</a></h2><table bgcolor="#cccccc" border="0" cellspacing="0" cellpadding="1"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets environment variables conditional on User-Agent without
|
|
respect to case</td></tr><tr><td><a class="help" href="directive-dict.html#Syntax">Syntax:</a></td><td>BrowserMatchNoCase <em>regex env-variable</em>[=<em>value</em>]
|
|
[<em>env-variable</em>[=<em>value</em>]] ...</td></tr><tr><td><a class="help" href="directive-dict.html#Context">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a class="help" href="directive-dict.html#Override">Override:</a></td><td>FileInfo</td></tr><tr><td><a class="help" href="directive-dict.html#Status">Status:</a></td><td>Base</td></tr><tr><td><a class="help" href="directive-dict.html#Module">Module:</a></td><td>mod_setenvif</td></tr><tr><td valign="top" align="left"><a class="help" href="directive-dict.html#Compatibility">Compatibility:</a></td><td>Apache 1.2 and
|
|
above (in Apache 1.2 this directive was found in the
|
|
now-obsolete mod_browser module)</td></tr></table></td></tr></table>
|
|
|
|
<p>The <code class="directive">BrowserMatchNoCase</code> directive is
|
|
semantically identical to the <a class="directive" href="#browsermatch"><code class="directive">BrowserMatch</code></a> directive.
|
|
However, it provides for case-insensitive matching. For
|
|
example:</p>
|
|
<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
|
|
BrowserMatchNoCase mac platform=macintosh<br/>
|
|
BrowserMatchNoCase win platform=windows<br/>
|
|
</code></td></tr></table></blockquote>
|
|
|
|
<p>The <code class="directive">BrowserMatch</code> and
|
|
<code class="directive">BrowserMatchNoCase</code> directives are special cases of
|
|
the <a class="directive" href="#setenvif"><code class="directive">SetEnvIf</code></a> and <a class="directive" href="#setenvifnocase"><code class="directive">SetEnvIfNoCase</code></a>
|
|
directives. The following two lines have the same effect:</p>
|
|
<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
|
|
BrowserMatchNoCase Robot is_a_robot<br/>
|
|
SetEnvIfNoCase User-Agent Robot is_a_robot<br/>
|
|
</code></td></tr></table></blockquote>
|
|
<hr/><h2><a name="SetEnvIf">SetEnvIf</a> <a name="setenvif">Directive</a></h2><table bgcolor="#cccccc" border="0" cellspacing="0" cellpadding="1"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets environment variables based on attributes of the request
|
|
</td></tr><tr><td><a class="help" href="directive-dict.html#Syntax">Syntax:</a></td><td>SetEnvIf <em>attribute
|
|
regex env-variable</em>[=<em>value</em>]
|
|
[<em>env-variable</em>[=<em>value</em>]] ...</td></tr><tr><td><a class="help" href="directive-dict.html#Context">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a class="help" href="directive-dict.html#Override">Override:</a></td><td>FileInfo</td></tr><tr><td><a class="help" href="directive-dict.html#Status">Status:</a></td><td>Base</td></tr><tr><td><a class="help" href="directive-dict.html#Module">Module:</a></td><td>mod_setenvif</td></tr><tr><td valign="top" align="left"><a class="help" href="directive-dict.html#Compatibility">Compatibility:</a></td><td>Apache 1.3 and
|
|
above; the Request_Protocol keyword and environment-variable
|
|
matching are only available with 1.3.7 and later</td></tr></table></td></tr></table>
|
|
<p>The <code class="directive">SetEnvIf</code> directive defines environment
|
|
variables based on attributes of the request. These attributes
|
|
can be the values of various HTTP request header fields (see <a href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a>
|
|
for more information about these), or of other aspects of the
|
|
request, including the following:</p>
|
|
|
|
<ul>
|
|
<li><code>Remote_Host</code> - the hostname (if available) of
|
|
the client making the request</li>
|
|
|
|
<li><code>Remote_Addr</code> - the IP address of the client
|
|
making the request</li>
|
|
|
|
<li><code>Remote_User</code> - the authenticated username (if
|
|
available)</li>
|
|
|
|
<li><code>Request_Method</code> - the name of the method
|
|
being used (<code>GET</code>, <code>POST</code>, <em>et
|
|
cetera</em>)</li>
|
|
|
|
<li><code>Request_Protocol</code> - the name and version of
|
|
the protocol with which the request was made (<em>e.g.</em>,
|
|
"HTTP/0.9", "HTTP/1.1", <em>etc.</em>)</li>
|
|
|
|
<li><code>Request_URI</code> - the portion of the URL
|
|
following the scheme and host portion</li>
|
|
</ul>
|
|
|
|
<p>Some of the more commonly used request header field names
|
|
include <code>Host</code>, <code>User-Agent</code>, and
|
|
<code>Referer</code>.</p>
|
|
|
|
<p>If the <em>attribute</em> name doesn't match any of the
|
|
special keywords, nor any of the request's header field names,
|
|
it is tested as the name of an environment variable in the list
|
|
of those associated with the request. This allows
|
|
<code class="directive">SetEnvIf</code> directives to test against the result of
|
|
prior matches.</p>
|
|
|
|
<blockquote><table><tr><td bgcolor="#e0e5f5">
|
|
<strong>Only those environment variables defined by earlier
|
|
<code>SetEnvIf[NoCase]</code> directives are available for
|
|
testing in this manner. 'Earlier' means that they were
|
|
defined at a broader scope (such as server-wide) or
|
|
previously in the current directive's scope.</strong>
|
|
</td></tr></table></blockquote>
|
|
|
|
<p><em>attribute</em> may be a regular expression when used to
|
|
match a request header. If <em>attribute</em> is a regular
|
|
expression and it doesn't match any of the request's header
|
|
names, then <em>attribute</em> is not tested against the
|
|
request's environment variable list.</p>
|
|
|
|
<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example:</strong></p><code>
|
|
|
|
SetEnvIf Request_URI "\.gif$" object_is_image=gif<br/>
|
|
SetEnvIf Request_URI "\.jpg$" object_is_image=jpg<br/>
|
|
SetEnvIf Request_URI "\.xbm$" object_is_image=xbm<br/>
|
|
:<br/>
|
|
SetEnvIf Referer www\.mydomain\.com intra_site_referral<br/>
|
|
:<br/>
|
|
SetEnvIf object_is_image xbm XBIT_PROCESSING=1<br/>
|
|
:<br/>
|
|
SetEnvIf ^TS* ^[a-z].* HAVE_TS<br/>
|
|
</code></td></tr></table></blockquote>
|
|
|
|
<p>The first three will set the environment variable
|
|
<code>object_is_image</code> if the request was for an image
|
|
file, and the fourth sets <code>intra_site_referral</code> if
|
|
the referring page was somewhere on the
|
|
<code>www.mydomain.com</code> Web site.</p>
|
|
|
|
<p>The last example will set environment variable
|
|
<code>HAVE_TS</code> if the request contains any headers that
|
|
begin with "TS" whose values begins with any character in the
|
|
set [a-z].</p>
|
|
<hr/><h2><a name="SetEnvIfNoCase">SetEnvIfNoCase</a> <a name="setenvifnocase">Directive</a></h2><table bgcolor="#cccccc" border="0" cellspacing="0" cellpadding="1"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets environment variables based on attributes of the request
|
|
without respect to case</td></tr><tr><td><a class="help" href="directive-dict.html#Syntax">Syntax:</a></td><td>SetEnvIfNoCase <em>attribute regex env-variable</em>[=<em>value</em>]
|
|
[<em>env-variable</em>[=<em>value</em>]] ...</td></tr><tr><td><a class="help" href="directive-dict.html#Context">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a class="help" href="directive-dict.html#Override">Override:</a></td><td>FileInfo</td></tr><tr><td><a class="help" href="directive-dict.html#Status">Status:</a></td><td>Base</td></tr><tr><td><a class="help" href="directive-dict.html#Module">Module:</a></td><td>mod_setenvif</td></tr><tr><td valign="top" align="left"><a class="help" href="directive-dict.html#Compatibility">Compatibility:</a></td><td>Apache 1.3 and above</td></tr></table></td></tr></table>
|
|
|
|
<p>The <code class="directive">SetEnvIfNoCase</code> is semantically identical to
|
|
the <a class="directive" href="#setenvif"><code class="directive">SetEnvIf</code></a> directive,
|
|
and differs only in that the regular expression matching is
|
|
performed in a case-insensitive manner. For example:</p>
|
|
<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
|
|
SetEnvIfNoCase Host Apache\.Org site=apache
|
|
</code></td></tr></table></blockquote>
|
|
|
|
<p>This will cause the <code>site</code> environment variable
|
|
to be set to "<code>apache</code>" if the HTTP request header
|
|
field <code>Host:</code> was included and contained
|
|
<code>Apache.Org</code>, <code>apache.org</code>, or any other
|
|
combination.</p>
|
|
<hr/><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></blockquote></body></html> |