--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="../style/manual.xsl"?>
+<modulesynopsis>
+
+<name>mod_setenvif</name>
+<status>Base</status>
+<identifier>setenvif_module</identifier>
+<sourcefile>mod_setenvif.c</sourcefile>
+<compatibility>Available in Apache 1.3 and later</compatibility>
+
+<description>Allows the setting of environment variables based
+on characteristics of the request</description>
+
+<summary>
+
+ <p>The <module>mod_setenvif</module> 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>
+
+<example>
+ BrowserMatch ^Mozilla netscape<br />
+ BrowserMatch MSIE !netscape<br />
+</example>
+</summary>
+
+<seealso><a href="../env.html">Environment Variables in Apache</a></seealso>
+
+<directivesynopsis>
+<name>BrowserMatch</name>
+<description>Sets environment variables conditional on HTTP User-Agent
+</description>
+<syntax>BrowserMatch <em>regex env-variable</em>[=<em>value</em>]
+[<em>env-variable</em>[=<em>value</em>]] ...</syntax>
+<default><i>none</i></default>
+<context>server config, virtual host, directory, .htaccess</context>
+<override>FileInfo</override>
+<compatibility>Apache 1.2 and
+ above (in Apache 1.2 this directive was found in the
+ now-obsolete mod_browser module)</compatibility>
+
+<usage>
+ <p>The <directive>BrowserMatch</directive> 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>
+<example>
+ BrowserMatch ^Mozilla forms jpeg=yes browser=netscape<br />
+ BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript<br />
+ BrowserMatch MSIE !javascript<br />
+</example>
+
+ <p>Note that the regular expression string is
+ <strong>case-sensitive</strong>. For case-INsensitive matching,
+ see the <directive
+ module="mod_setenvif">BrowserMatchNoCase</directive>
+ directive.</p>
+
+ <p>The <directive>BrowserMatch</directive> and
+ <directive>BrowserMatchNoCase</directive> directives are special cases of
+ the <directive module="mod_setenvif">SetEnvIf</directive> and <directive
+ module="mod_setenvif">SetEnvIfNoCase</directive>
+ directives. The following two lines have the same effect:</p>
+<example>
+ BrowserMatchNoCase Robot is_a_robot<br />
+ SetEnvIfNoCase User-Agent Robot is_a_robot<br />
+</example>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>BrowserMatchNoCase</name>
+<description>Sets environment variables conditional on User-Agent without
+respect to case</description>
+<syntax>BrowserMatchNoCase <em>regex env-variable</em>[=<em>value</em>]
+ [<em>env-variable</em>[=<em>value</em>]] ...</syntax>
+<default><em>none</em></default>
+<context>server config, virtual host, directory, .htaccess</context>
+<override>FileInfo</override>
+<compatibility>Apache 1.2 and
+ above (in Apache 1.2 this directive was found in the
+ now-obsolete mod_browser module)</compatibility>
+
+<usage>
+
+ <p>The <directive>BrowserMatchNoCase</directive> directive is
+ semantically identical to the <directive
+ module="mod_setenvif">BrowserMatch</directive> directive.
+ However, it provides for case-insensitive matching. For
+ example:</p>
+<example>
+ BrowserMatchNoCase mac platform=macintosh<br />
+ BrowserMatchNoCase win platform=windows<br />
+</example>
+
+ <p>The <directive>BrowserMatch</directive> and
+ <directive>BrowserMatchNoCase</directive> directives are special cases of
+ the <directive module="mod_setenvif">SetEnvIf</directive> and <directive
+ module="mod_setenvif">SetEnvIfNoCase</directive>
+ directives. The following two lines have the same effect:</p>
+<example>
+ BrowserMatchNoCase Robot is_a_robot<br />
+ SetEnvIfNoCase User-Agent Robot is_a_robot<br />
+</example>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>SetEnvIf</name>
+<description>Sets environment variables based on attributes of the request
+</description>
+<syntax>SetEnvIf <em>attribute
+ regex env-variable</em>[=<em>value</em>]
+ [<em>env-variable</em>[=<em>value</em>]] ...</syntax>
+<default><em>none</em></default>
+<context> server config, virtual host, directory, .htaccess</context>
+<override>FileInfo</override>
+<compatibility>Apache 1.3 and
+ above; the Request_Protocol keyword and environment-variable
+ matching are only available with 1.3.7 and later</compatibility>
+
+<usage>
+ <p>The <directive>SetEnvIf</directive> 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
+ <directive>SetEnvIf</directive> directives to test against the result of
+ prior matches.</p>
+
+<note>
+ <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>
+</note>
+
+ <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>
+
+<example>
+<title>Example:</title>
+ 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 />
+</example>
+
+ <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>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>SetEnvIfNoCase</name>
+<description>Sets environment variables based on attributes of the request
+without respect to case</description>
+<syntax>SetEnvIfNoCase <em>attribute regex env-variable</em>[=<em>value</em>]
+ [<em>env-variable</em>[=<em>value</em>]] ...</syntax>
+<default><em>none</em></default>
+<context>server config, virtual host, directory, .htaccess</context>
+<override>FileInfo</override>
+<compatibility>Apache 1.3 and above</compatibility>
+
+<usage>
+
+ <p>The <directive>SetEnvIfNoCase</directive> is semantically identical to
+ the <directive module="mod_setenvif">SetEnvIf</directive> directive,
+ and differs only in that the regular expression matching is
+ performed in a case-insensitive manner. For example:</p>
+<example>
+ SetEnvIfNoCase Host Apache\.Org site=apache
+</example>
+
+ <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>
+</usage>
+</directivesynopsis>
+</modulesynopsis>
\ No newline at end of file