<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_setenvif - Apache HTTP Server Version 2.5</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.5</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_setenvif</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="../en/mod/mod_setenvif.html" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_setenvif.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_setenvif.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_setenvif.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/mod_setenvif.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Allows the setting of environment variables based
on characteristics of the request</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>setenvif_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_setenvif.c</td></tr></table>
<h3>Summary</h3>


    <p>The <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> module allows you to set
    internal 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, as well as becoming
    available to CGI scripts and SSI pages.</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>

<pre class="prettyprint lang-config">BrowserMatch ^Mozilla netscape
BrowserMatch MSIE !netscape</pre>


   <p>When the server looks up a path via an internal
   <a class="glossarylink" href="../glossary.html#subrequest" title="see glossary">subrequest</a> such as looking
   for a <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>
   or generating a directory listing with <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code>,
   per-request environment variables are <em>not</em> inherited in the
   subrequest. Additionally,
   <code class="directive"><a href="#setenvif">SetEnvIf</a></code> directives
   are not separately evaluated in the subrequest due to the API phases
   <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> takes action in.</p>

</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#browsermatch">BrowserMatch</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#browsermatchnocase">BrowserMatchNoCase</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#setenvif">SetEnvIf</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#setenvifexpr">SetEnvIfExpr</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#setenvifnocase">SetEnvIfNoCase</a></li>
</ul>
<h3>Bugfix checklist</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">httpd changelog</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_setenvif">Known issues</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_setenvif">Report a bug</a></li></ul><h3>See also</h3>
<ul class="seealso">
<li><a href="../env.html">Environment Variables in Apache HTTP Server</a></li>
<li><a href="#comments_section">Comments</a></li></ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="BrowserMatch" id="BrowserMatch">BrowserMatch</a> <a name="browsermatch" id="browsermatch">Directive</a> <a title="Permanent link" href="#browsermatch" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets environment variables conditional on HTTP User-Agent
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>BrowserMatch <em>regex [!]env-variable</em>[=<em>value</em>]
[[!]<em>env-variable</em>[=<em>value</em>]] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_setenvif</td></tr>
</table>
  <p>The <code class="directive">BrowserMatch</code> is a special cases of the
  <code class="directive"><a href="#setenvif">SetEnvIf</a></code> directive that
  sets environment variables conditional on the
  <code>User-Agent</code> HTTP request header.  The following two
  lines have the same effect:</p>
<pre class="prettyprint lang-config">BrowserMatch Robot is_a_robot
SetEnvIf User-Agent Robot is_a_robot</pre>


    <p>Some additional examples:</p>
<pre class="prettyprint lang-config">BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
BrowserMatch MSIE !javascript</pre>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="BrowserMatchNoCase" id="BrowserMatchNoCase">BrowserMatchNoCase</a> <a name="browsermatchnocase" id="browsermatchnocase">Directive</a> <a title="Permanent link" href="#browsermatchnocase" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets environment variables conditional on User-Agent without
respect to case</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>BrowserMatchNoCase  <em>regex [!]env-variable</em>[=<em>value</em>]
    [[!]<em>env-variable</em>[=<em>value</em>]] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_setenvif</td></tr>
</table>

    <p>The <code class="directive">BrowserMatchNoCase</code> directive is
    semantically identical to the <code class="directive"><a href="#browsermatch">BrowserMatch</a></code> directive.
    However, it provides for case-insensitive matching. For
    example:</p>
<pre class="prettyprint lang-config">BrowserMatchNoCase mac platform=macintosh
BrowserMatchNoCase win platform=windows</pre>


    <p>The <code class="directive">BrowserMatch</code> and
    <code class="directive">BrowserMatchNoCase</code> directives are special cases of
    the <code class="directive"><a href="#setenvif">SetEnvIf</a></code> and <code class="directive"><a href="#setenvifnocase">SetEnvIfNoCase</a></code>
    directives. The following two lines have the same effect:</p>
<pre class="prettyprint lang-config">BrowserMatchNoCase Robot is_a_robot
SetEnvIfNoCase User-Agent Robot is_a_robot</pre>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SetEnvIf" id="SetEnvIf">SetEnvIf</a> <a name="setenvif" id="setenvif">Directive</a> <a title="Permanent link" href="#setenvif" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets environment variables based on attributes of the request
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SetEnvIf <em>attribute
    regex [!]env-variable</em>[=<em>value</em>]
    [[!]<em>env-variable</em>[=<em>value</em>]] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_setenvif</td></tr>
</table>
    <p>The <code class="directive">SetEnvIf</code> directive defines
    environment variables based on attributes of the request. The
    <em>attribute</em> specified in the first argument can be one of the
    following things:</p>

<ol>
<li>An HTTP request header field (see <a href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a>
    for more information about these); for example: <code>Host</code>,
    <code>User-Agent</code>, <code>Referer</code>, and
    <code>Accept-Language</code>.  A regular expression may be
    used to specify a set of request headers.</li>

<li>One of the following aspects of the request:
    <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>Server_Addr</code> - the IP address of the server
      on which the request was received (only with versions later
      than 2.0.43)</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 resource requested on the HTTP
       request line -- generally the portion of the URL
      following the scheme and host portion without the query string. See
      the <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
      directive of <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> for extra information on
      how to match your query string.</li>
    </ul>
</li>

<li>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. 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.
Environment variables will be considered only if there was no match
among request characteristics and a regular expression was not
used for the <em>attribute</em>.</li>

</ol>

<p>The second argument (<em>regex</em>) is a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>.  If the <em>regex</em>
matches against the <em>attribute</em>, then the remainder of the
arguments are evaluated.</p>

<p>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 literal value given by
    <code><em>value</em></code>. Since version 2.0.51, Apache httpd will
    recognize occurrences of <code>$1</code>..<code>$9</code> within
    <var>value</var> and replace them by parenthesized subexpressions
    of <var>regex</var>. <code>$0</code> provides access to the whole
    string matched by that pattern.</p>

    <p>If the special value <code>--early</code> is specified, and this
    directive is not in directory context, the directive will be evaluated
    earlier during request processing.  This allows the output variables
    set by this directive to be used as input to the "early mode" option of
    the <code class="directive"><a href="../mod/mod_headers.html#requestheader">RequestHeader</a></code> directive.
    Available in 2.5.1 and later.</p>

<pre class="prettyprint lang-config">SetEnvIf Request_URI "\.gif$" object_is_image=gif
SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
SetEnvIf Request_URI "\.xbm$" object_is_image=xbm

SetEnvIf Referer www\.mydomain\.example\.com intra_site_referral

SetEnvIf object_is_image xbm XBIT_PROCESSING=1

SetEnvIf Request_URI "\.(.*)$" EXTENSION=$1

SetEnvIf ^TS  ^[a-z]  HAVE_TS</pre>


    <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.example.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>

<h3>See also</h3>
<ul>
<li><a href="../env.html">Environment Variables in Apache HTTP Server</a>,
for additional examples.
</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SetEnvIfExpr" id="SetEnvIfExpr">SetEnvIfExpr</a> <a name="setenvifexpr" id="setenvifexpr">Directive</a> <a title="Permanent link" href="#setenvifexpr" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets environment variables based on an ap_expr expression</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SetEnvIfExpr <em>expr
    [!]env-variable</em>[=<em>value</em>]
    [[!]<em>env-variable</em>[=<em>value</em>]] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_setenvif</td></tr>
</table>
    <p>The <code class="directive">SetEnvIfExpr</code> directive defines
    environment variables based on an <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code>
    <code>ap_expr</code>. These expressions will be evaluated at runtime,
    and applied <em>env-variable</em> in the same fashion as <code class="directive">SetEnvIf</code>.</p>

<pre class="prettyprint lang-config">SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:\images\very_big.iso')" iso_delivered</pre>


    <p>This would set the environment variable <code>iso_delivered</code>
    every time our application attempts to send it via <code>X-Sendfile</code></p>

    <p>A more useful example would be to set the variable rfc1918 if the
    remote IP address is a private address according to RFC 1918:</p>

<pre class="prettyprint lang-config">SetEnvIfExpr "-R '10.0.0.0/8' || -R '172.16.0.0/12' || -R '192.168.0.0/16'" rfc1918</pre>


<h3>See also</h3>
<ul>
<li><a href="../expr.html">Expressions in Apache HTTP Server</a>,
for a complete reference and more examples.</li>
<li><code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code> can be used to achieve similar
results.</li>
<li><code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SetEnvIfNoCase" id="SetEnvIfNoCase">SetEnvIfNoCase</a> <a name="setenvifnocase" id="setenvifnocase">Directive</a> <a title="Permanent link" href="#setenvifnocase" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets environment variables based on attributes of the request
without respect to case</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SetEnvIfNoCase <em>attribute regex
        [!]env-variable</em>[=<em>value</em>]
    [[!]<em>env-variable</em>[=<em>value</em>]] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_setenvif</td></tr>
</table>

    <p>The <code class="directive">SetEnvIfNoCase</code> is semantically identical to
    the <code class="directive"><a href="#setenvif">SetEnvIf</a></code> directive,
    and differs only in that the regular expression matching is
    performed in a case-insensitive manner. For example:</p>
<pre class="prettyprint lang-config">SetEnvIfNoCase Host Example\.Org site=example</pre>


    <p>This will cause the <code>site</code> environment variable
    to be set to "<code>example</code>" if the HTTP request header
    field <code>Host:</code> was included and contained
    <code>Example.Org</code>, <code>example.org</code>, or any other
    combination.</p>

</div>
</div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="../en/mod/mod_setenvif.html" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_setenvif.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_setenvif.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_setenvif.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/mod_setenvif.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_setenvif.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else {
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>