env.html.en revision 6b75cb86a77a962682d6a42d861822943c1e9683
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein<?xml version="1.0" encoding="ISO-8859-1"?>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein This file is generated from xml source: DO NOT EDIT
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein --><title>Environment Variables in Apache - Apache HTTP Server</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 href="/images/favicon.ico" rel="shortcut icon" /></head><body id="manual-page"><div id="page-header"><p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p><p class="apache">Apache HTTP Server Version 2.0</p><img alt="" src="/images/feather.gif" /></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-project/">Documentation</a> &gt; <a href="./">Version 2.0</a></div><div id="page-content"><div id="preamble"><h1>Environment Variables in Apache</h1>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <p>The Apache HTTP Server provides a mechanism for storing
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein information in named variables that are called <em>environment
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein variables</em>. This information can be used to control various
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein operations such as logging or access control. The variables are
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein also used as a mechanism to communicate with external programs
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein such as CGI scripts. This document discusses different ways to
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein manipulate and use these variables.</p>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <p>Although these variables are referred to as <em>environment
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein variables</em>, they are not the same as the environment
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein variables controlled by the underlying operating system.
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein Instead, these variables are stored and manipulated in an
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein internal Apache structure. They only become actual operating
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein system environment variables when they are provided to CGI
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein scripts and Server Side Include scripts. If you wish to
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein manipulate the operating system environment under which the
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein server itself runs, you must use the standard environment
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein manipulation mechanisms provided by your operating system
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein shell.</p>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein </div><div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#setting">Setting Environment Variables</a></li><li><img alt="" src="/images/down.gif" /> <a href="#using">Using Environment Variables</a></li><li><img alt="" src="/images/down.gif" /> <a href="#special">Special Purpose Environment Variables</a></li><li><img alt="" src="/images/down.gif" /> <a href="#examples">Examples</a></li></ul></div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="setting" id="setting">Setting Environment Variables</a></h2>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <table class="related"><tr><th>Related Modules</th><th>Related Directives</th></tr><tr><td><ul><li><code class="module"><a href="/mod/mod_env.html">mod_env</a></code></li><li><code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code></li><li><code class="module"><a href="/mod/mod_setenvif.html">mod_setenvif</a></code></li><li><code class="module"><a href="/mod/mod_unique_id.html">mod_unique_id</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code></li><li><code class="directive"><a href="/mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li><li><code class="directive"><a href="/mod/mod_env.html#passenv">PassEnv</a></code></li><li><code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li><li><code class="directive"><a href="/mod/mod_env.html#setenv">SetEnv</a></code></li><li><code class="directive"><a href="/mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li><li><code class="directive"><a href="/mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code></li><li><code class="directive"><a href="/mod/mod_env.html#unsetenv">UnsetEnv</a></code></li></ul></td></tr></table>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <h3><a name="basic-manipulation" id="basic-manipulation">Basic Environment Manipulation</a></h3>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <p>The most basic way to set an environment variable in Apache
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein is using the unconditional <code class="directive"><a href="/mod/mod_env.html#setenv">SetEnv</a></code> directive. Variables may also be passed from
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein the environment of the shell which started the server using the
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <code class="directive"><a href="/mod/mod_env.html#passenv">PassEnv</a></code> directive.</p>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <h3><a name="conditional" id="conditional">Conditional Per-Request Settings</a></h3>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <p>For additional flexibility, the directives provided by
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein mod_setenvif allow environment variables to be set on a
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein per-request basis, conditional on characteristics of particular
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein requests. For example, a variable could be set only when a
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein specific browser (User-Agent) is making a request, or only when
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein a specific Referer [sic] header is found. Even more flexibility
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein is available through the mod_rewrite's <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> which uses the
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <code>[E=...]</code> option to set environment variables.</p>
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <h3><a name="unique-identifiers" id="unique-identifiers">Unique Identifiers</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <p>Finally, mod_unique_id sets the environment variable
b0fb330a8581c8bfab5e523084f9f39264a52b12gstein <code>UNIQUE_ID</code> for each request to a value which is
f4c310fd2555c6faca1f980f00b161eadb089023gstein guaranteed to be unique across "all" requests under very
f4c310fd2555c6faca1f980f00b161eadb089023gstein specific conditions.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="standard-cgi" id="standard-cgi">Standard CGI Variables</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>In addition to all environment variables set within the
f4c310fd2555c6faca1f980f00b161eadb089023gstein Apache configuration and passed from the shell, CGI scripts and
f4c310fd2555c6faca1f980f00b161eadb089023gstein SSI pages are provided with a set of environment variables
f4c310fd2555c6faca1f980f00b161eadb089023gstein containing meta-information about the request as required by
f4c310fd2555c6faca1f980f00b161eadb089023gstein the <a href="http://cgi-spec.golux.com/">CGI
f4c310fd2555c6faca1f980f00b161eadb089023gstein specification</a>.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="caveats" id="caveats">Some Caveats</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <ul>
f4c310fd2555c6faca1f980f00b161eadb089023gstein <li>It is not possible to override or change the standard CGI
f4c310fd2555c6faca1f980f00b161eadb089023gstein variables using the environment manipulation directives.</li>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <li>When <a href="suexec.html">suexec</a> is used to launch
f4c310fd2555c6faca1f980f00b161eadb089023gstein CGI scripts, the environment will be cleaned down to a set of
f4c310fd2555c6faca1f980f00b161eadb089023gstein <em>safe</em> variables before CGI scripts are launched. The
f4c310fd2555c6faca1f980f00b161eadb089023gstein list of <em>safe</em> variables is defined at compile-time in
f4c310fd2555c6faca1f980f00b161eadb089023gstein <code>suexec.c</code>.</li>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <li>For portability reasons, the names of environment
f4c310fd2555c6faca1f980f00b161eadb089023gstein variables may contain only letters, numbers, and the
f4c310fd2555c6faca1f980f00b161eadb089023gstein underscore character. In addition, the first character may
f4c310fd2555c6faca1f980f00b161eadb089023gstein not be a number. Characters which do not match this
f4c310fd2555c6faca1f980f00b161eadb089023gstein restriction will be replaced by an underscore when passed to
f4c310fd2555c6faca1f980f00b161eadb089023gstein CGI scripts and SSI pages.</li>
f4c310fd2555c6faca1f980f00b161eadb089023gstein </ul>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="using" id="using">Using Environment Variables</a></h2>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <table class="related"><tr><th>Related Modules</th><th>Related Directives</th></tr><tr><td><ul><li><code class="module"><a href="/mod/mod_authz_host.html">mod_authz_host</a></code></li><li><code class="module"><a href="/mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code></li><li><code class="module"><a href="/mod/mod_headers.html">mod_headers</a></code></li><li><code class="module"><a href="/mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="/mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_authz_host.html#allow">Allow</a></code></li><li><code class="directive"><a href="/mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="/mod/mod_authz_host.html#deny">Deny</a></code></li><li><code class="directive"><a href="/mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code></li><li><code class="directive"><a href="/mod/mod_headers.html#header">Header</a></code></li><li><code class="directive"><a href="/mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="/mod/mod_rewrite.html#rewritecond">RewriteCond</a></code></li><li><code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li></ul></td></tr></table>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="cgi-scripts" id="cgi-scripts">CGI Scripts</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>One of the primary uses of environment variables is to
f4c310fd2555c6faca1f980f00b161eadb089023gstein communicate information to CGI scripts. As discussed above, the
f4c310fd2555c6faca1f980f00b161eadb089023gstein environment passed to CGI scripts includes standard
f4c310fd2555c6faca1f980f00b161eadb089023gstein meta-information about the request in addition to any variables
f4c310fd2555c6faca1f980f00b161eadb089023gstein set within the Apache configuration. For more details, see the
f4c310fd2555c6faca1f980f00b161eadb089023gstein <a href="howto/cgi.html">CGI tutorial</a>.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="ssi-pages" id="ssi-pages">SSI Pages</a></h3>
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>Server-parsed (SSI) documents processed by mod_include's
f4c310fd2555c6faca1f980f00b161eadb089023gstein <code>INCLUDES</code> filter can print environment variables
f4c310fd2555c6faca1f980f00b161eadb089023gstein using the <code>echo</code> element, and can use environment
f4c310fd2555c6faca1f980f00b161eadb089023gstein variables in flow control elements to makes parts of a page
f4c310fd2555c6faca1f980f00b161eadb089023gstein conditional on characteristics of a request. Apache also
f4c310fd2555c6faca1f980f00b161eadb089023gstein provides SSI pages with the standard CGI environment variables
f4c310fd2555c6faca1f980f00b161eadb089023gstein as discussed above. For more details, see the <a href="howto/ssi.html">SSI tutorial</a>.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="access-control" id="access-control">Access Control</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>Access to the server can be controlled based on the value of
f4c310fd2555c6faca1f980f00b161eadb089023gstein environment variables using the <code>allow from env=</code>
f4c310fd2555c6faca1f980f00b161eadb089023gstein and <code>deny from env=</code> directives. In combination with
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm <code class="directive"><a href="/mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>, this
f5ec9b038bb9db933072ba2c0a8e7bb2a3cedbdagstein allows for flexible control of access to the server based on
f4c310fd2555c6faca1f980f00b161eadb089023gstein characteristics of the client. For example, you can use these
f4c310fd2555c6faca1f980f00b161eadb089023gstein directives to deny access to a particular browser (User-Agent).
f4c310fd2555c6faca1f980f00b161eadb089023gstein </p>
f5ec9b038bb9db933072ba2c0a8e7bb2a3cedbdagstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="logging" id="logging">Conditional Logging</a></h3>
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>Environment variables can be logged in the access log using
f4c310fd2555c6faca1f980f00b161eadb089023gstein the <code class="directive"><a href="/mod/mod_log_config.html#logformat">LogFormat</a></code>
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm option <code>%e</code>. In addition, the decision on whether
f4c310fd2555c6faca1f980f00b161eadb089023gstein or not to log requests can be made based on the status of
f4c310fd2555c6faca1f980f00b161eadb089023gstein environment variables using the conditional form of the
f4c310fd2555c6faca1f980f00b161eadb089023gstein <code class="directive"><a href="/mod/mod_log_config.html#customlog">CustomLog</a></code>
f4c310fd2555c6faca1f980f00b161eadb089023gstein directive. In combination with <code class="directive"><a href="/mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> this allows for flexible control of which
f4c310fd2555c6faca1f980f00b161eadb089023gstein requests are logged. For example, you can choose not to log
f4c310fd2555c6faca1f980f00b161eadb089023gstein requests for filenames ending in <code>gif</code>, or you can
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm choose to only log requests from clients which are outside your
f4c310fd2555c6faca1f980f00b161eadb089023gstein subnet.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="response-headers" id="response-headers">Conditional Response Headers</a></h3>
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
f4c310fd2555c6faca1f980f00b161eadb089023gstein
fe4d394397840dd4823e3d6fc5affc1ab395e161gstein <p>The <code class="directive"><a href="/mod/mod_headers.html#header">Header</a></code>
fe4d394397840dd4823e3d6fc5affc1ab395e161gstein directive can use the presence or
fe4d394397840dd4823e3d6fc5affc1ab395e161gstein absence of an environment variable to determine whether or not
fe4d394397840dd4823e3d6fc5affc1ab395e161gstein a certain HTTP header will be placed in the response to the
fe4d394397840dd4823e3d6fc5affc1ab395e161gstein client. This allows, for example, a certain response header to
f4c310fd2555c6faca1f980f00b161eadb089023gstein be sent only if a corresponding header is received in the
f4c310fd2555c6faca1f980f00b161eadb089023gstein request from the client.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm <h3><a name="external-filter" id="external-filter">External Filter Activation</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>External filters configured by <code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code>
f4c310fd2555c6faca1f980f00b161eadb089023gstein using the <code class="directive"><a href="/mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code> directive can
f4c310fd2555c6faca1f980f00b161eadb089023gstein by activated conditional on an environment variable using the
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm <code>disableenv=</code> and <code>enableenv=</code> options.</p>
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="url-rewriting" id="url-rewriting">URL Rewriting</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>The <code>%{ENV:...}</code> form of <em>TestString</em> in
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm the <code class="directive"><a href="/mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
f4c310fd2555c6faca1f980f00b161eadb089023gstein allows mod_rewrite's rewrite
f4c310fd2555c6faca1f980f00b161eadb089023gstein engine to make decisions conditional on environment variables.
f4c310fd2555c6faca1f980f00b161eadb089023gstein Note that the variables accessible in mod_rewrite without the
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm <code>ENV:</code> prefix are not actually environment
f4c310fd2555c6faca1f980f00b161eadb089023gstein variables. Rather, they are variables special to mod_rewrite
f4c310fd2555c6faca1f980f00b161eadb089023gstein which cannot be accessed from other modules.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="special" id="special">Special Purpose Environment Variables</a></h2>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>Interoperability problems have led to the introduction of
f4c310fd2555c6faca1f980f00b161eadb089023gstein mechanisms to modify the way Apache behaves when talking to
f4c310fd2555c6faca1f980f00b161eadb089023gstein particular clients. To make these mechanisms as flexible as
f4c310fd2555c6faca1f980f00b161eadb089023gstein possible, they are invoked by defining environment variables,
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm typically with <code class="directive"><a href="/mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>,
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm though <code class="directive"><a href="/mod/mod_env.html#setenv">SetEnv</a></code> and
f4c310fd2555c6faca1f980f00b161eadb089023gstein <code class="directive"><a href="/mod/mod_env.html#passenv">PassEnv</a></code> could also be used,
f4c310fd2555c6faca1f980f00b161eadb089023gstein for example.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="downgrade" id="downgrade">downgrade-1.0</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>This forces the request to be treated as a HTTP/1.0 request
f4c310fd2555c6faca1f980f00b161eadb089023gstein even if it was in a later dialect.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="force-no-vary" id="force-no-vary">force-no-vary</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>This causes any <code>Vary</code> fields to be removed from
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm the response header before it is sent back to the client. Some
f4c310fd2555c6faca1f980f00b161eadb089023gstein clients don't interpret this field correctly (see the <a href="misc/known_client_problems.html">known client
f4c310fd2555c6faca1f980f00b161eadb089023gstein problems</a> page); setting this variable can work around this
f4c310fd2555c6faca1f980f00b161eadb089023gstein problem. Setting this variable also implies
f4c310fd2555c6faca1f980f00b161eadb089023gstein <strong>force-response-1.0</strong>.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="force-response" id="force-response">force-response-1.0</a></h3>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein <p>This forces an HTTP/1.0 response to clients making an HTTP/1.0
709df1e1c2e1710570f8cb4209497e88662829c3gstein request. It was originally
f4c310fd2555c6faca1f980f00b161eadb089023gstein implemented as a result of a problem with AOL's proxies. Some
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm HTTP/1.0 clients may not behave correctly when given an HTTP/1.1
709df1e1c2e1710570f8cb4209497e88662829c3gstein response, and this can be used to interoperate with them.</p>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein <h3><a name="gzip-only-text-html" id="gzip-only-text-html">gzip-only-text/html</a></h3>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein <p>When set to a value of "1", this variable disables the DEFLATE
709df1e1c2e1710570f8cb4209497e88662829c3gstein output filter provided by <code class="module"><a href="/mod/mod_deflate.html">mod_deflate</a></code> for
f4c310fd2555c6faca1f980f00b161eadb089023gstein content-types other than <code>text/html</code>.</p>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein <h3><a name="nogzip" id="nogzip">nogzip</a></h3>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>When set, the <code>DEFLATE</code> filter of
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm <code class="module"><a href="/mod/mod_deflate.html">mod_deflate</a></code> will be turned off.</p>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
709df1e1c2e1710570f8cb4209497e88662829c3gstein <h3><a name="nokeepalive" id="nokeepalive">nokeepalive</a></h3>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein <p>This disables <code class="directive"><a href="/mod/core.html#keepalive">KeepAlive</a></code> when set.</p>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="redirect-carefully" id="redirect-carefully">redirect-carefully</a></h3>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein <p>This forces the server to be more careful when sending a redirect
709df1e1c2e1710570f8cb4209497e88662829c3gstein to the client. This is typically used when a client has a known
f4c310fd2555c6faca1f980f00b161eadb089023gstein problem handling redirects. This was originally implemented as a
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm result of a problem with Microsoft's WebFolders software which has
709df1e1c2e1710570f8cb4209497e88662829c3gstein a problem handling redirects on directory resources via DAV
709df1e1c2e1710570f8cb4209497e88662829c3gstein methods.</p>
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
709df1e1c2e1710570f8cb4209497e88662829c3gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
709df1e1c2e1710570f8cb4209497e88662829c3gstein <h3><a name="suppress-error-charset" id="suppress-error-charset">suppress-error-charset</a></h3>
709df1e1c2e1710570f8cb4209497e88662829c3gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p><em>Available in versions after 2.0.40</em></p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>When Apache issues a redirect in response to a client request,
f4c310fd2555c6faca1f980f00b161eadb089023gstein the response includes some actual text to be displayed in case
f4c310fd2555c6faca1f980f00b161eadb089023gstein the client can't (or doesn't) automatically follow the redirection.
f4c310fd2555c6faca1f980f00b161eadb089023gstein Apache ordinarily labels this text according to the character set
f4c310fd2555c6faca1f980f00b161eadb089023gstein which it uses, which is ISO-8859-1.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p> However, if the redirection is to a page that uses a different
f4c310fd2555c6faca1f980f00b161eadb089023gstein character set, some broken browser versions will try to use the
f4c310fd2555c6faca1f980f00b161eadb089023gstein character set from the redirection text rather than the actual page.
f4c310fd2555c6faca1f980f00b161eadb089023gstein This can result in Greek, for instance, being incorrectly rendered.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>Setting this environment variable causes Apache to omit the character
f4c310fd2555c6faca1f980f00b161eadb089023gstein set for the redirection text, and these broken browsers will then correctly
f4c310fd2555c6faca1f980f00b161eadb089023gstein use that of the destination page.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="examples" id="examples">Examples</a></h2>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="misbehaving" id="misbehaving">Changing protocol behavior with misbehaving clients</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>We recommend that the following lines be included in
f4c310fd2555c6faca1f980f00b161eadb089023gstein httpd.conf to deal with known client problems.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein<div class="example"><pre>
f4c310fd2555c6faca1f980f00b161eadb089023gstein#
f4c310fd2555c6faca1f980f00b161eadb089023gstein# The following directives modify normal HTTP response behavior.
f4c310fd2555c6faca1f980f00b161eadb089023gstein# The first directive disables keepalive for Netscape 2.x and browsers that
f4c310fd2555c6faca1f980f00b161eadb089023gstein# spoof it. There are known problems with these browser implementations.
f4c310fd2555c6faca1f980f00b161eadb089023gstein# The second directive is for Microsoft Internet Explorer 4.0b2
f4c310fd2555c6faca1f980f00b161eadb089023gstein# which has a broken HTTP/1.1 implementation and does not properly
f4c310fd2555c6faca1f980f00b161eadb089023gstein# support keepalive when it is used on 301 or 302 (redirect) responses.
f4c310fd2555c6faca1f980f00b161eadb089023gstein#
f4c310fd2555c6faca1f980f00b161eadb089023gsteinBrowserMatch "Mozilla/2" nokeepalive
26250b0077972bf21b6d8a8d23772a4cf53f9477gsteinBrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein#
f4c310fd2555c6faca1f980f00b161eadb089023gstein# The following directive disables HTTP/1.1 responses to browsers which
f4c310fd2555c6faca1f980f00b161eadb089023gstein# are in violation of the HTTP/1.0 spec by not being able to grok a
f4c310fd2555c6faca1f980f00b161eadb089023gstein# basic 1.1 response.
f4c310fd2555c6faca1f980f00b161eadb089023gstein#
f4c310fd2555c6faca1f980f00b161eadb089023gsteinBrowserMatch "RealPlayer 4\.0" force-response-1.0
f4c310fd2555c6faca1f980f00b161eadb089023gsteinBrowserMatch "Java/1\.0" force-response-1.0
f4c310fd2555c6faca1f980f00b161eadb089023gsteinBrowserMatch "JDK/1\.0" force-response-1.0</pre></div>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="no-img-log" id="no-img-log">Do not log requests for images in the access log</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
26250b0077972bf21b6d8a8d23772a4cf53f9477gstein <p>This example keeps requests for images from appearing in the
f4c310fd2555c6faca1f980f00b161eadb089023gstein access log. It can be easily modified to prevent logging of
f4c310fd2555c6faca1f980f00b161eadb089023gstein particular directories, or to prevent logging of requests
f4c310fd2555c6faca1f980f00b161eadb089023gstein coming from particular hosts.</p>
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm <div class="example"><pre>
f4c310fd2555c6faca1f980f00b161eadb089023gsteinSetEnvIf Request_URI \.gif image-request
f4c310fd2555c6faca1f980f00b161eadb089023gsteinSetEnvIf Request_URI \.jpg image-request
f4c310fd2555c6faca1f980f00b161eadb089023gsteinSetEnvIf Request_URI \.png image-request
f4c310fd2555c6faca1f980f00b161eadb089023gsteinCustomLog logs/access_log common env=!image-request</pre></div>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <h3><a name="image-theft" id="image-theft">Prevent "Image Theft"</a></h3>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>This example shows how to keep people not on your server
f4c310fd2555c6faca1f980f00b161eadb089023gstein from using images on your server as inline-images on their
f4c310fd2555c6faca1f980f00b161eadb089023gstein pages. This is not a recommended configuration, but it can work
f4c310fd2555c6faca1f980f00b161eadb089023gstein in limited circumstances. We assume that all your images are in
f4c310fd2555c6faca1f980f00b161eadb089023gstein a directory called /web/images.</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein <div class="example"><pre>
f4c310fd2555c6faca1f980f00b161eadb089023gsteinSetEnvIf Referer "^http://www.example.com/" local_referal
f4c310fd2555c6faca1f980f00b161eadb089023gstein# Allow browsers that do not send Referer info
f4c310fd2555c6faca1f980f00b161eadb089023gsteinSetEnvIf Referer "^$" local_referal
f4c310fd2555c6faca1f980f00b161eadb089023gstein&lt;Directory /web/images&gt;
f4c310fd2555c6faca1f980f00b161eadb089023gstein Order Deny,Allow
f4c310fd2555c6faca1f980f00b161eadb089023gstein Deny from all
f4c310fd2555c6faca1f980f00b161eadb089023gstein Allow from env=local_referal
f4c310fd2555c6faca1f980f00b161eadb089023gstein&lt;/Directory&gt;</pre></div>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein <p>For more information about this technique, see the
f4c310fd2555c6faca1f980f00b161eadb089023gstein ApacheToday tutorial " <a href="http://apachetoday.com/news_story.php3?ltsn=2000-06-14-002-01-PS">
f4c310fd2555c6faca1f980f00b161eadb089023gstein Keeping Your Images from Adorning Other Sites</a>".</p>
f4c310fd2555c6faca1f980f00b161eadb089023gstein
f4c310fd2555c6faca1f980f00b161eadb089023gstein </div></div><div id="footer"><p class="apache">Maintained by the <a href="http://httpd.apache.org/docs-project/">Apache HTTP Server Documentation Project</a></p><p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p></div></body></html>