]> granicus.if.org Git - apache/commitdiff
Add the first xml doc.
authorJoshua Slive <slive@apache.org>
Thu, 14 Feb 2002 00:48:39 +0000 (00:48 +0000)
committerJoshua Slive <slive@apache.org>
Thu, 14 Feb 2002 00:48:39 +0000 (00:48 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93399 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/mod/mod_setenvif.xml [new file with mode: 0644]

diff --git a/docs/manual/mod/mod_setenvif.xml b/docs/manual/mod/mod_setenvif.xml
new file mode 100644 (file)
index 0000000..41bc4dd
--- /dev/null
@@ -0,0 +1,258 @@
+<?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