far...</p>
<dl>
+ <dt><code>ap_hook_pre_config</code></dt>
+ <dd>do any setup required prior to processing configuration
+ directives</dd>
+
+ <dt><code>ap_hook_check_config</code></dt>
+ <dd>review configuration directive interdependencies</dd>
+
+ <dt><code>ap_hook_test_config</code></dt>
+ <dd>executes only with <code>-t</code> option</dd>
+
+ <dt><code>ap_hook_open_logs</code></dt>
+ <dd>open any specified logs</dd>
+
<dt><code>ap_hook_post_config</code></dt>
<dd>this is where the old <code>_init</code> routines get
registered</dd>
<dt><code>ap_hook_http_method</code></dt>
<dd>retrieve the http method from a request. (legacy)</dd>
- <dt><code>ap_hook_open_logs</code></dt>
- <dd>open any specified logs</dd>
-
<dt><code>ap_hook_auth_checker</code></dt>
<dd>check if the resource requires authorization</dd>
<?xml version="1.0" encoding="iso-2022-jp"?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
-<!-- English Revision: 420993 -->
+<!-- English Revision: 420993:462914 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<variants>
<variant>en</variant>
- <variant>ja</variant>
+ <variant outdated="yes">ja</variant>
</variants>
</metafile>
<div class="example"><p><code>
AuthType Basic<br />
AuthName "By Invitation Only"<br />
- # Optional line:
- AuthBasicProvider file
+ # Optional line:<br />
+ AuthBasicProvider file<br />
AuthUserFile /usr/local/apache/passwd/passwords<br />
AuthGroupFile /usr/local/apache/passwd/groups<br />
Require group GroupName
AuthType Basic<br />
AuthBasicProvider dbm<br />
AuthDBMUserFile /www/passwords/passwd.dbm<br />
- Require valid-user
+ Require valid-user<br />
+ </Directory>
</code></p></div>
<p>Other options are available. Consult the
<?xml version='1.0' encoding='iso-2022-jp' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
-<!-- English Revision: 219484:420993 (outdated) -->
+<!-- English Revision: 219484:453083 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<?xml version='1.0' encoding='EUC-KR' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
-<!-- English Revision: 105989:420993 (outdated) -->
+<!-- English Revision: 105989:453083 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
to fit in <code>.htaccess</code> context instead
of per-server context. Always try to understand what a
particular ruleset really does before you use it. It
- avoid problems.</div>
+ avoids problems.</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<?xml version="1.0" encoding="EUC-KR" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
-<!-- English Revision: 122770:420990 (outdated) -->
+<!-- English Revision: 122770:449030 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Limits the size of the HTTP request header allowed from the
client</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LimitRequestFieldsize <var>bytes</var></code></td></tr>
-<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>LimitRequestFieldsize 8190</code></td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LimitRequestFieldSize <var>bytes</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>LimitRequestFieldSize 8190</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
<li>The IP address of the virtual host;</li>
<li>A fully qualified domain name for the IP address of the
- virtual host;</li>
+ virtual host (not recommended);</li>
<li>The character <code>*</code>, which is used only in combination with
<code>NameVirtualHost *</code> to match all IP addresses; or</li>
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
-<!-- English Revision: 167959:420990 (outdated) -->
+<!-- English Revision: 167959:449522 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<?xml version="1.0" encoding="iso-2022-jp"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
-<!-- English Revision: 190982:420990 (outdated) -->
+<!-- English Revision: 190982:449522 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
MyHeader: D=3775428 t=991424704447256 mytext
</code></p></div>
</li>
+ <li>Enable DAV to work with Apache running HTTP through SSL hardware
+ (<a href="http://svn.haxx.se/users/archive-2006-03/0549.shtml">problem description</a>) by replacing <var>https:</var> with
+ <var>http:</var> in the <var>Destination</var> header:
+ <div class="example"><p><code>
+ RequestHeader edit Destination ^https: http: early
+ </code></p></div>
+ </li>
+
</ol>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Header" id="Header">Header</a> <a name="header" id="header">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure HTTP response headers</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Header [<var>condition</var>] set|append|add|unset|echo
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Header [<var>condition</var>] set|append|add|unset|echo|edit
<var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</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>
response headers. <var>header</var> may be a
<a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>.
<var>value</var> must be omitted.</dd>
+
+ <dt><code>edit</code></dt>
+ <dd>If this request header exists, its value is transformed according
+ to a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>
+ search-and-replace. The <var>value</var> argument is a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>, and the <var>replacement</var>
+ is a replacement string, which may contain backreferences.</dd>
</dl>
<p>This argument is followed by a <var>header</var> name, which
more efficient than <code>%s</code>.</p>
</div>
+ <p>For <code>edit</code> there is both a <var>value</var> argument
+ which is a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>,
+ and an additional <var>replacement</var> string.</p>
+
<p>The <code class="directive">Header</code> directive may be followed by an
an additional argument, which may be used to specify conditions under
which the action will be taken, or may be the keyword <code>early</code>
<div class="directive-section"><h2><a name="RequestHeader" id="RequestHeader">RequestHeader</a> <a name="requestheader" id="requestheader">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure HTTP request headers</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RequestHeader set|append|add|unset <var>header</var>
-[<var>value</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RequestHeader set|append|add|unset|edit <var>header</var>
+[<var>value</var>] [<var>replacement</var>] [early|env=[!]<var>variable</var>]</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>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_headers</td></tr>
</table>
- <p>This directive can replace, merge or remove HTTP request
+ <p>This directive can replace, merge, change or remove HTTP request
headers. The header is modified just before the content handler
is run, allowing incoming headers to be modified. The action it
performs is determined by the first argument. This can be one
<dd>The request header of this name is removed, if it exists. If
there are multiple headers of the same name, all will be removed.
<var>value</var> must be omitted.</dd>
+
+ <dt><code>edit</code></dt>
+ <dd>If this request header exists, its value is transformed according
+ to a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>
+ search-and-replace. The <var>value</var> argument is a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>, and the <var>replacement</var>
+ is a replacement string, which may contain backreferences.</dd>
</dl>
<p>This argument is followed by a header name, which can
include the final colon, but it is not required. Case is
ignored. For <code>add</code>, <code>append</code> and
- <code>set</code> a <var>value</var> is given as the third argument. If
+ <code>set</code> a <var>value</var> is given as the third argument. If a
<var>value</var> contains spaces, it should be surrounded by double
quotes. For unset, no <var>value</var> should be given.
<var>value</var> may be a character string, a string containing format
specifiers or a combination of both. The supported format specifiers
are the same as for the <code class="directive"><a href="#header">Header</a></code>,
- please have a look there for details.</p>
+ please have a look there for details. For <code>edit</code> both
+ a <var>value</var> and a <var>replacement</var> are required, and are
+ a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a> and a
+ replacement string respectively.</p>
<p>The <code class="directive">RequestHeader</code> directive may be followed by
an additional argument, which may be used to specify conditions under
<?xml version="1.0" encoding="iso-2022-jp"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
-<!-- English Revision: 151408:420990 (outdated) -->
+<!-- English Revision: 151408:462917 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<?xml version="1.0" encoding="EUC-KR" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
-<!-- English Revision: 151408:420990 (outdated) -->
+<!-- English Revision: 151408:462917 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<p>You may wish to use <code class="module"><a href="../mod/mod_access.html">mod_access</a></code> inside the
<code class="directive"><a href="../mod/core.html#location"><Location></a></code>
- directive to limite access to your server configuration
+ directive to limit access to your server configuration
information:</p>
<div class="example"><p><code>
<?xml version="1.0" encoding="iso-2022-jp"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
-<!-- English Revision: 151408:420990 (outdated) -->
+<!-- English Revision: 151408:450473 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<?xml version="1.0" encoding="EUC-KR" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
-<!-- English Revision: 125277:420990 (outdated) -->
+<!-- English Revision: 125277:450473 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<div class="section">
<h2><a name="environment" id="environment">Exported Environment Variables</a></h2>
- <p>At present there are 5 environment variables exported:</p>
-
-
+ <p>At present there are 6 environment variables exported:</p>
+
<dl>
+
<dt><var><a name="balancer_session_sticky" id="balancer_session_sticky">BALANCER_SESSION_STICKY</a></var></dt>
<dd>
<p>This is assigned the <var>stickysession</var> value used in the current
<p>This is assigned the <var>route</var> of the worker that will be
used for the current request.</p>
</dd>
+
+
+ <dt><var><a name="balancer_route_changed" id="balancer_route_changed">BALANCER_ROUTE_CHANGED</a></var></dt>
+ <dd>
+ <p>This is set to 1 if the session route does not match the
+ worker route (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE) or the
+ session does not yet have an established route. This can be used to
+ determine when/if the client needs to be sent an updated route
+ when sticky sessions are used.</p>
+ </dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<?xml version="1.0" encoding="iso-2022-jp"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
-<!-- English Revision: 395228:437773 (outdated) -->
+<!-- English Revision: 395228:453630 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
synchronization takes place.</li>
</ol>
</li>
+ <li>
+ <p><strong>SQL Query</strong><br />
+ MapType: <code>dbd</code> or <code>fastdbd</code>,
+ MapSource: An SQL SELECT statement that takes a single
+ argument and returns a single value.</p>
+ <p>This uses <code class="module"><a href="../mod/mod_dbd.html">mod_dbd</a></code> to implement a rewritemap
+ by lookup in an SQL database. There are two forms:
+ <code>fastdbd</code> caches database lookups internally,
+ <code>dbd</code> doesn't. So <code>dbd</code> incurs a
+ performance penalty but responds immediately if the database
+ contents are updated, while <code>fastdbd</code> is more
+ efficient but won't re-read database contents until server
+ restart.</p>
+ <p>If a query returns more than one row, a random row from
+ the result set is used.</p>
+<div class="example"><h3>Example</h3><p><code>
+
+RewriteMap myquery "fastdbd:SELECT destination FROM rewrite WHERE source = %s"
+</code></p></div>
+ </li>
</ul>
<p>The <code class="directive">RewriteMap</code> directive can occur more than
once. For each mapping-function use one
will exit.</td></tr>
<tr><td><a href="mpm_common.html#group">Group <var>unix-group</var></a></td><td> #-1 </td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Group under which the server will answer
requests</td></tr>
-<tr class="odd"><td><a href="mod_headers.html#header" id="H" name="H">Header [<var>condition</var>] set|append|add|unset|echo
+<tr class="odd"><td><a href="mod_headers.html#header" id="H" name="H">Header [<var>condition</var>] set|append|add|unset|echo|edit
<var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</a></td><td></td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Configure HTTP response headers</td></tr>
<tr><td><a href="mod_autoindex.html#headername">HeaderName <var>filename</var></a></td><td></td><td>svdh</td><td>B</td></tr><tr><td class="descr" colspan="4">Name of the file that will be inserted at the top
of the index listing</td></tr>
from the client</td></tr>
<tr class="odd"><td><a href="core.html#limitrequestfields">LimitRequestFields <var>number</var></a></td><td> 100 </td><td>s</td><td>C</td></tr><tr class="odd"><td class="descr" colspan="4">Limits the number of HTTP request header fields that
will be accepted from the client</td></tr>
-<tr><td><a href="core.html#limitrequestfieldsize">LimitRequestFieldsize <var>bytes</var></a></td><td></td><td>s</td><td>C</td></tr><tr><td class="descr" colspan="4">Limits the size of the HTTP request header allowed from the
+<tr><td><a href="core.html#limitrequestfieldsize">LimitRequestFieldSize <var>bytes</var></a></td><td> 8190 </td><td>s</td><td>C</td></tr><tr><td class="descr" colspan="4">Limits the size of the HTTP request header allowed from the
client</td></tr>
<tr class="odd"><td><a href="core.html#limitrequestline">LimitRequestLine <var>bytes</var></a></td><td> 8190 </td><td>s</td><td>C</td></tr><tr class="odd"><td class="descr" colspan="4">Limit the size of the HTTP request line that will be accepted
from the client</td></tr>
<tr class="odd"><td><a href="mod_mime.html#removetype">RemoveType <var>extension</var> [<var>extension</var>]
...</a></td><td></td><td>vdh</td><td>B</td></tr><tr class="odd"><td class="descr" colspan="4">Removes any content type associations for a set of file
extensions</td></tr>
-<tr><td><a href="mod_headers.html#requestheader">RequestHeader set|append|add|unset <var>header</var>
-[<var>value</var>] [early|env=[!]<var>variable</var>]</a></td><td></td><td>svdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Configure HTTP request headers</td></tr>
+<tr><td><a href="mod_headers.html#requestheader">RequestHeader set|append|add|unset|edit <var>header</var>
+[<var>value</var>] [<var>replacement</var>] [early|env=[!]<var>variable</var>]</a></td><td></td><td>svdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Configure HTTP request headers</td></tr>
<tr class="odd"><td><a href="mod_authz_core.html#require">Require <var>entity-name</var> [<var>entity-name</var>] ...</a></td><td></td><td>dh</td><td>B</td></tr><tr class="odd"><td class="descr" colspan="4">Selects which authenticated users can access
a resource</td></tr>
<tr><td><a href="mod_rewrite.html#rewritebase">RewriteBase <em>URL-path</em></a></td><td></td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Sets the base URL for per-directory rewrites</td></tr>
<div class="section">
<h2><a name="module" id="module">Module Enhancements</a></h2>
-
+ <dl>
+ <dt><code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code></dt>
+
+ <dd>Using the new <code>edit</code> argument, header values may
+ be edited using a regular expression search-and-replace
+ operation.</dd>
+ </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<div class="section">
<h2><a name="developer" id="developer">Module Developer Changes</a></h2>
-
+ <dl>
+ <dt>Check Configuration Hook Added</dt>
+
+ <dd>A new hook, <code>check_config</code>, has been added which runs
+ between the <code>pre_config</code> and <code>open_logs</code>
+ hooks. It also runs before the <code>test_config</code> hook
+ when the <code>-t</code> option is passed to
+ <code class="program"><a href="./programs/httpd.html">httpd</a></code>. The <code>check_config</code> hook
+ allows modules to review interdependent configuration directive
+ values and adjust them while messages can still be logged to the
+ console. The user can thus be alerted to misconfiguration problems
+ before the core <code>open_logs</code> hook function redirects
+ console output to the error log.</dd>
+ </dl>
</div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="./en/new_features_2_4.html" title="English"> en </a></p>