github.com/krum110487/go-htaccess@v0.0.0-20240316004156-60641c8e7598/tests/data/apache_2_2_34/manual/mod/mod_headers.html.en (about)

     1  <?xml version="1.0" encoding="ISO-8859-1"?>
     2  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     3  <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
     4  <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
     5  <!--
     6          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     7                This file is generated from xml source: DO NOT EDIT
     8          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     9        -->
    10  <title>mod_headers - Apache HTTP Server Version 2.2</title>
    11  <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
    12  <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
    13  <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" />
    14  <script src="../style/scripts/prettify.min.js" type="text/javascript">
    15  </script>
    16  
    17  <link href="../images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/mod/mod_headers.html" rel="canonical" /></head>
    18  <body>
    19  <div id="page-header">
    20  <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.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>
    21  <p class="apache">Apache HTTP Server Version 2.2</p>
    22  <img alt="" src="../images/feather.gif" /></div>
    23  <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
    24  <div id="path">
    25  <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.2</a> &gt; <a href="./">Modules</a></div>
    26  <div id="page-content">
    27  <div class="retired"><h4>Please note</h4>
    28              <p> This document refers to a legacy release (<strong>2.2</strong>) of Apache httpd. The active release (<strong>2.4</strong>) is documented <a href="http://httpd.apache.org/docs/current">here</a>. If you have not already upgraded, please follow <a href="http://httpd.apache.org/docs/current/upgrading.html">this link</a> for more information.</p>
    29          <p>You may follow <a href="http://httpd.apache.org/docs/current/mod/mod_headers.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Apache Module mod_headers</h1>
    30  <div class="toplang">
    31  <p><span>Available Languages: </span><a href="../en/mod/mod_headers.html" title="English">&nbsp;en&nbsp;</a> |
    32  <a href="../ja/mod/mod_headers.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
    33  <a href="../ko/mod/mod_headers.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
    34  </div>
    35  <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Customization of HTTP request and response
    36  headers</td></tr>
    37  <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
    38  <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>headers_module</td></tr>
    39  <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_headers.c</td></tr></table>
    40  <h3>Summary</h3>
    41  
    42      <p>This module provides directives to control and modify HTTP
    43      request and response headers. Headers can be merged, replaced
    44      or removed.</p>
    45  </div>
    46  <div id="quickview"><h3>Topics</h3>
    47  <ul id="topics">
    48  <li><img alt="" src="../images/down.gif" /> <a href="#order">Order of Processing</a></li>
    49  <li><img alt="" src="../images/down.gif" /> <a href="#early">Early and Late Processing</a></li>
    50  <li><img alt="" src="../images/down.gif" /> <a href="#examples">Examples</a></li>
    51  </ul><h3 class="directives">Directives</h3>
    52  <ul id="toc">
    53  <li><img alt="" src="../images/down.gif" /> <a href="#header">Header</a></li>
    54  <li><img alt="" src="../images/down.gif" /> <a href="#requestheader">RequestHeader</a></li>
    55  </ul>
    56  <ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
    57  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
    58  <div class="section">
    59  <h2><a name="order" id="order">Order of Processing</a></h2>
    60  
    61      <p>The directives provided by <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> can
    62      occur almost anywhere within the server configuration, and can be
    63      limited in scope by enclosing them in <a href="../sections.html">configuration sections</a>.</p>
    64  
    65      <p>Order of processing is important and is affected both by the
    66      order in the configuration file and by placement in <a href="../sections.html#mergin">configuration sections</a>. These
    67      two directives have a different effect if reversed:</p>
    68  
    69      <div class="example"><p><code>
    70        RequestHeader append MirrorID "mirror 12"<br />
    71        RequestHeader unset MirrorID
    72      </code></p></div>
    73  
    74      <p>This way round, the <code>MirrorID</code> header is not set. If
    75      reversed, the MirrorID header is set to "mirror 12".</p>
    76  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
    77  <div class="section">
    78  <h2><a name="early" id="early">Early and Late Processing</a></h2>
    79      <p><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> can be applied either early or late
    80      in the request.  The normal mode is late, when <em>Request</em> Headers are
    81      set immediately before running the content generator and <em>Response</em>
    82      Headers just as the response is sent down the wire.  Always use
    83      Late mode in an operational server.</p>
    84  
    85      <p>Early mode is designed as a test/debugging aid for developers.
    86      Directives defined using the <code>early</code> keyword are set
    87      right at the beginning of processing the request.  This means
    88      they can be used to simulate different requests and set up test
    89      cases, but it also means that headers may be changed at any time
    90      by other modules before generating a Response.</p>
    91  
    92      <p>Because early directives are processed before the request path's
    93      configuration is traversed, early headers can only be set in a
    94      main server or virtual host context.  Early directives cannot depend
    95      on a request path, so they will fail in contexts such as
    96      <code>&lt;Directory&gt;</code> or <code>&lt;Location&gt;</code>.</p>
    97  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
    98  <div class="section">
    99  <h2><a name="examples" id="examples">Examples</a></h2>
   100  
   101      <ol>
   102        <li>
   103          Copy all request headers that begin with "TS" to the
   104          response headers:
   105  
   106          <div class="example"><p><code>
   107            Header echo ^TS
   108          </code></p></div>
   109        </li>
   110  
   111        <li>
   112          Add a header, <code>MyHeader</code>, to the response including a
   113          timestamp for when the request was received and how long it
   114          took to begin serving the request. This header can be used by
   115          the client to intuit load on the server or in isolating
   116          bottlenecks between the client and the server.
   117  
   118          <div class="example"><p><code>
   119            Header set MyHeader "%D %t"
   120          </code></p></div>
   121  
   122          <p>results in this header being added to the response:</p>
   123  
   124          <div class="example"><p><code>
   125            MyHeader: D=3775428 t=991424704447256
   126          </code></p></div>
   127        </li>
   128  
   129        <li>
   130          Say hello to Joe
   131  
   132          <div class="example"><p><code>
   133            Header set MyHeader "Hello Joe. It took %D microseconds \<br />
   134            for Apache to serve this request."
   135          </code></p></div>
   136  
   137          <p>results in this header being added to the response:</p>
   138  
   139          <div class="example"><p><code>
   140            MyHeader: Hello Joe. It took D=3775428 microseconds for Apache
   141            to serve this request.
   142          </code></p></div>
   143        </li>
   144  
   145        <li>
   146          Conditionally send <code>MyHeader</code> on the response if and
   147          only if header <code>MyRequestHeader</code> is present on the request.
   148          This is useful for constructing headers in response to some client
   149          stimulus. Note that this example requires the services of the
   150          <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> module.
   151  
   152          <div class="example"><p><code>
   153            SetEnvIf MyRequestHeader myvalue HAVE_MyRequestHeader<br />
   154            Header set MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
   155          </code></p></div>
   156  
   157          <p>If the header <code>MyRequestHeader: myvalue</code> is present on
   158          the HTTP request, the response will contain the following header:</p>
   159  
   160          <div class="example"><p><code>
   161            MyHeader: D=3775428 t=991424704447256 mytext
   162          </code></p></div>
   163        </li>
   164  
   165        <li>
   166          Enable DAV to work with Apache running HTTP through SSL hardware
   167          (<a href="http://svn.haxx.se/users/archive-2006-03/0549.shtml">problem
   168          description</a>) by replacing <var>https:</var> with
   169          <var>http:</var> in the <var>Destination</var> header:
   170  
   171          <div class="example"><p><code>
   172            RequestHeader edit Destination ^https: http: early
   173          </code></p></div>
   174        </li>
   175  
   176        <li>
   177          Set the same header value under multiple nonexclusive conditions,
   178          but do not duplicate the value in the final header.
   179          If all of the following conditions applied to a request (i.e.,
   180          if the <code>CGI</code>, <code>NO_CACHE</code> and
   181          <code>NO_STORE</code> environment variables all existed for the
   182          request):
   183  
   184          <div class="example"><p><code>
   185            Header merge Cache-Control no-cache env=CGI<br />
   186            Header merge Cache-Control no-cache env=NO_CACHE<br />
   187            Header merge Cache-Control no-store env=NO_STORE
   188          </code></p></div>
   189  
   190          <p>then the response would contain the following header:</p>
   191  
   192          <div class="example"><p><code>
   193            Cache-Control: no-cache, no-store
   194          </code></p></div>
   195  
   196          <p>If <code>append</code> was used instead of <code>merge</code>,
   197          then the response would contain the following header:</p>
   198  
   199          <div class="example"><p><code>
   200            Cache-Control: no-cache, no-cache, no-store
   201          </code></p></div>
   202        </li>
   203      </ol>
   204  </div>
   205  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   206  <div class="directive-section"><h2><a name="Header" id="Header">Header</a> <a name="header" id="header">Directive</a></h2>
   207  <table class="directive">
   208  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure HTTP response headers</td></tr>
   209  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Header [<var>condition</var>] set|append|merge|add|unset|echo|edit
   210  <var>header</var> [<var>value</var>] [<var>replacement</var>]
   211  [early|env=[!]<var>variable</var>]</code></td></tr>
   212  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
   213  <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
   214  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   215  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_headers</td></tr>
   216  <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The <code>merge</code> argument is available in version
   217  2.2.9 and later. The <code>edit</code> argument is available in version
   218  2.2.4 and later.</td></tr>
   219  </table>
   220      <p>This directive can replace, merge or remove HTTP response
   221      headers. The header is modified just after the content handler
   222      and output filters are run, allowing outgoing headers to be
   223      modified.</p>
   224  
   225      <p> The optional <var>condition</var> argument determines which internal
   226      table of responses headers this directive will operate against.  Other
   227      components of the server may have stored their response headers in either
   228      the table that corresponds to <code>onsuccess</code> or the table that
   229      corresponds to <code>always</code>.  "Always" in this context refers to
   230      whether headers you add will be sent during both a successful and unsucessful 
   231      response, but if your action is a function of an existing header, you
   232      will have to read on for further complications.</p>
   233  
   234      <p> The default value of <code>onsuccess</code> may need to be changed to 
   235      <code>always</code> under the circumstances similar to those listed below.
   236      Note also that repeating this directive with both conditions makes sense in
   237      some scenarios because <code>always</code> is not a superset of 
   238      <code>onsuccess</code> with respect to existing headers:</p>
   239  
   240      <ul>
   241         <li> You're adding a header to a non-success (non-2xx) response, such 
   242              as a redirect, in which case only the table corresponding to 
   243              <code>always</code> is used in the ultimate response.</li>
   244         <li> You're modifying or removing a header generated by a CGI script,
   245              in which case the CGI scripts are in the table corresponding to 
   246              <code>always</code> and not in the default table.</li>
   247         <li> You're modifying or removing a header generated by some piece of 
   248              the server but that header is not being found by the default 
   249              <code>onsuccess</code> condition.</li>
   250      </ul>
   251  
   252      <p>The action it performs is determined by the first
   253      argument (second argument if a <var>condition</var> is specified).
   254      This can be one of the following values:</p>
   255  
   256      <dl>
   257      <dt><code>set</code></dt>
   258      <dd>The response header is set, replacing any previous header
   259      with this name. The <var>value</var> may be a format string.</dd>
   260  
   261      <dt><code>append</code></dt>
   262      <dd>The response header is appended to any existing header of
   263      the same name. When a new value is merged onto an existing
   264      header it is separated from the existing header with a comma.
   265      This is the HTTP standard way of giving a header multiple values.</dd>
   266  
   267      <dt><code>merge</code></dt>
   268      <dd>The response header is appended to any existing header of
   269      the same name, unless the value to be appended already appears in the
   270      header's comma-delimited list of values.  When a new value is merged onto
   271      an existing header it is separated from the existing header with a comma.
   272      This is the HTTP standard way of giving a header multiple values.
   273      Values are compared in a case sensitive manner, and after
   274      all format specifiers have been processed.  Values in double quotes
   275      are considered different from otherwise identical unquoted values.
   276      <em>Available in version 2.2.9 and later.</em></dd>
   277  
   278      <dt><code>add</code></dt>
   279      <dd>The response header is added to the existing set of headers,
   280      even if this header already exists. This can result in two
   281      (or more) headers having the same name. This can lead to
   282      unforeseen consequences, and in general <code>set</code>,
   283      <code>append</code> or <code>merge</code> should be used instead.</dd>
   284  
   285      <dt><code>unset</code></dt>
   286      <dd>The response header of this name is removed, if it exists.
   287      If there are multiple headers of the same name, all will be
   288      removed. <var>value</var> must be omitted.</dd>
   289  
   290      <dt><code>echo</code></dt>
   291      <dd>Request headers with this name are echoed back in the
   292      response headers. <var>header</var> may be a
   293      <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>.
   294      <var>value</var> must be omitted.</dd>
   295  
   296      <dt><code>edit</code></dt>
   297      <dd>If this response header exists, its value is transformed
   298      according to a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>
   299      search-and-replace.  The <var>value</var> argument is
   300      a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>, and
   301      the <var>replacement</var> is a replacement string, which may
   302      contain backreferences. <em>Available in version 2.2.4 and
   303      later.</em></dd>
   304      </dl>
   305  
   306      <p>This argument is followed by a <var>header</var> name, which
   307      can include the final colon, but it is not required. Case is
   308      ignored for <code>set</code>, <code>append</code>, <code>merge</code>,
   309      <code>add</code>, <code>unset</code> and <code>edit</code>.
   310      The <var>header</var> name for <code>echo</code>
   311      is case sensitive and may be a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular
   312      expression</a>.</p>
   313  
   314      <p>For <code>set</code>, <code>append</code>, <code>merge</code> and
   315      <code>add</code> a <var>value</var> is specified as the next argument.
   316      If <var>value</var>
   317      contains spaces, it should be surrounded by double quotes.
   318      <var>value</var> may be a character string, a string containing format
   319      specifiers or a combination of both. The following format specifiers
   320      are supported in <var>value</var>:</p>
   321  
   322      <table class="bordered"><tr class="header"><th>Format</th><th>Description</th></tr>
   323  <tr><td><code>%%</code></td>
   324          <td>The percent sign</td></tr>
   325  <tr class="odd"><td><code>%t</code></td>
   326          <td>The time the request was received in Universal Coordinated Time
   327          since the epoch (Jan. 1, 1970) measured in microseconds. The value
   328          is preceded by <code>t=</code>.</td></tr>
   329  <tr><td><code>%D</code></td>
   330          <td>The time from when the request was received to the time the
   331          headers are sent on the wire. This is a measure of the duration
   332          of the request. The value is preceded by <code>D=</code>.
   333          The value is measured in microseconds.</td></tr>
   334  <tr class="odd"><td><code>%{FOOBAR}e</code></td>
   335          <td>The contents of the <a href="../env.html">environment
   336          variable</a> <code>FOOBAR</code>.</td></tr>
   337  <tr><td><code>%{FOOBAR}s</code></td>
   338          <td>The contents of the <a href="mod_ssl.html#envvars">SSL environment
   339          variable</a> <code>FOOBAR</code>, if <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is enabled.</td></tr>
   340  </table>
   341  
   342      <div class="note"><h3>Note</h3>
   343        <p>The <code>%s</code> format specifier is only available in
   344        Apache 2.1 and later; it can be used instead of <code>%e</code>
   345        to avoid the overhead of enabling <code>SSLOptions
   346        +StdEnvVars</code>.  If <code>SSLOptions +StdEnvVars</code> must
   347        be enabled anyway for some other reason, <code>%e</code> will be
   348        more efficient than <code>%s</code>.</p>
   349      </div>
   350  
   351      <p>For <code>edit</code> there is both a <var>value</var> argument
   352      which is a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>,
   353      and an additional <var>replacement</var> string.</p>
   354  
   355      <p>The <code class="directive">Header</code> directive may be followed by an
   356      an additional argument, which may be used to specify conditions under
   357      which the action will be taken, or may be the keyword <code>early</code>
   358      to specify <a href="#early">early processing</a>. If the
   359      <a href="../env.html">environment variable</a> specified in the
   360      <code>env=<var>...</var></code> argument exists (or if the environment
   361      variable does not exist and <code>env=!<var>...</var></code> is specified)
   362      then the action specified by the <code class="directive">Header</code> directive
   363      will take effect. Otherwise, the directive will have no effect
   364      on the request.</p>
   365  
   366      <p>Except in <a href="#early">early</a> mode, the
   367      <code class="directive">Header</code> directives are processed just
   368      before the response is sent to the network. This means that it is
   369      possible to set and/or override most headers, except for some headers
   370      added by the HTTP header filter.  Prior to 2.2.12, it was not possible 
   371      to change the Content-Type header with this directive.</p>
   372  
   373  </div>
   374  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   375  <div class="directive-section"><h2><a name="RequestHeader" id="RequestHeader">RequestHeader</a> <a name="requestheader" id="requestheader">Directive</a></h2>
   376  <table class="directive">
   377  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure HTTP request headers</td></tr>
   378  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RequestHeader set|append|merge|add|unset|edit <var>header</var>
   379  [<var>value</var>] [<var>replacement</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
   380  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
   381  <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
   382  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   383  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_headers</td></tr>
   384  <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The <code>merge</code> argument is available in version
   385  2.2.9 and later. The <code>edit</code> argument is available in version
   386  2.2.4 and later.</td></tr>
   387  </table>
   388      <p>This directive can replace, merge, change or remove HTTP request
   389      headers. The header is modified just before the content handler
   390      is run, allowing incoming headers to be modified. The action it
   391      performs is determined by the first argument. This can be one
   392      of the following values:</p>
   393  
   394      <dl>
   395      <dt><code>set</code></dt>
   396      <dd>The request header is set, replacing any previous header
   397      with this name</dd>
   398  
   399      <dt><code>append</code></dt>
   400      <dd>The request header is appended to any existing header of the
   401      same name. When a new value is merged onto an existing header
   402      it is separated from the existing header with a comma. This
   403      is the HTTP standard way of giving a header multiple
   404      values.</dd>
   405  
   406      <dt><code>merge</code></dt>
   407      <dd>The request header is appended to any existing header of
   408      the same name, unless the value to be appended already appears in the
   409      existing header's comma-delimited list of values.  When a new value is
   410      merged onto an existing header it is separated from the existing header
   411      with a comma.  This is the HTTP standard way of giving a header multiple
   412      values.  Values are compared in a case sensitive manner, and after
   413      all format specifiers have been processed.  Values in double quotes
   414      are considered different from otherwise identical unquoted values.
   415      <em>Available in version 2.2.9 and later.</em></dd>
   416  
   417      <dt><code>add</code></dt>
   418      <dd>The request header is added to the existing set of headers,
   419      even if this header already exists. This can result in two
   420      (or more) headers having the same name. This can lead to
   421      unforeseen consequences, and in general <code>set</code>,
   422      <code>append</code> or <code>merge</code> should be used instead.</dd>
   423  
   424      <dt><code>unset</code></dt>
   425      <dd>The request header of this name is removed, if it exists. If
   426      there are multiple headers of the same name, all will be removed.
   427      <var>value</var> must be omitted.</dd>
   428  
   429      <dt><code>edit</code></dt>
   430      <dd>If this request header exists, its value is transformed
   431      according to a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>
   432      search-and-replace.  The <var>value</var> argument is
   433      a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>, and
   434      the <var>replacement</var> is a replacement string, which may
   435      contain backreferences. <em>Available in version 2.2.4 and
   436      later</em>.</dd>
   437      </dl>
   438  
   439      <p>This argument is followed by a header name, which can
   440      include the final colon, but it is not required. Case is
   441      ignored. For <code>set</code>, <code>append</code>, <code>merge</code> and
   442      <code>add</code> a <var>value</var> is given as the third argument. If a
   443      <var>value</var> contains spaces, it should be surrounded by double
   444      quotes. For <code>unset</code>, no <var>value</var> should be given.
   445      <var>value</var> may be a character string, a string containing format
   446      specifiers or a combination of both. The supported format specifiers
   447      are the same as for the <code class="directive"><a href="#header">Header</a></code>,
   448      please have a look there for details.  For <code>edit</code> both
   449      a <var>value</var> and a <var>replacement</var> are required, and are
   450      a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a> and a
   451      replacement string respectively.</p>
   452  
   453      <p>The <code class="directive">RequestHeader</code> directive may be followed by
   454      an additional argument, which may be used to specify conditions under
   455      which the action will be taken, or may be the keyword <code>early</code>
   456      to specify <a href="#early">early processing</a>. If the
   457      <a href="../env.html">environment
   458      variable</a> specified in the <code>env=<var>...</var></code> argument
   459      exists (or if the environment variable does not exist and
   460      <code>env=!<var>...</var></code> is specified) then the action specified
   461      by the <code class="directive">RequestHeader</code> directive will take effect.
   462      Otherwise, the directive will have no effect on the request.</p>
   463  
   464      <p>Except in <a href="#early">early</a> mode, the
   465      <code class="directive">RequestHeader</code> directive is processed
   466      just before the request is run by its handler in the fixup phase.
   467      This should allow headers generated by the browser, or by Apache
   468      input filters to be overridden or modified.</p>
   469  
   470  </div>
   471  </div>
   472  <div class="bottomlang">
   473  <p><span>Available Languages: </span><a href="../en/mod/mod_headers.html" title="English">&nbsp;en&nbsp;</a> |
   474  <a href="../ja/mod/mod_headers.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
   475  <a href="../ko/mod/mod_headers.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
   476  </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 again 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 Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
   477  <script type="text/javascript"><!--//--><![CDATA[//><!--
   478  var comments_shortname = 'httpd';
   479  var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_headers.html';
   480  (function(w, d) {
   481      if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
   482          d.write('<div id="comments_thread"><\/div>');
   483          var s = d.createElement('script');
   484          s.type = 'text/javascript';
   485          s.async = true;
   486          s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
   487          (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
   488      }
   489      else { 
   490          d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
   491      }
   492  })(window, document);
   493  //--><!]]></script></div><div id="footer">
   494  <p class="apache">Copyright 2017 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>
   495  <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.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[//><!--
   496  if (typeof(prettyPrint) !== 'undefined') {
   497      prettyPrint();
   498  }
   499  //--><!]]></script>
   500  </body></html>