mod_macro.html.en revision d5e8240ee767cced65a45a2b9d590ca08b3d3859
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<?xml version="1.0" encoding="ISO-8859-1"?>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
a78048ccbdb6256da15e6b0e7e95355e480c2301nd XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
a78048ccbdb6256da15e6b0e7e95355e480c2301nd This file is generated from xml source: DO NOT EDIT
a78048ccbdb6256da15e6b0e7e95355e480c2301nd XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
a78048ccbdb6256da15e6b0e7e95355e480c2301nd -->
96ad5d81ee4a2cc66a4ae19893efc8aa6d06fae7jailletc<title>mod_macro - Apache HTTP Server</title>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen<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" />
2e545ce2450a9953665f701bb05350f0d3f26275nd<script src="/style/scripts/prettify.js" type="text/javascript">
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen</script>
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<link href="/images/favicon.ico" rel="shortcut icon" /></head>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<body>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div id="page-header">
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen<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>
3f08db06526d6901aa08c110b5bc7dde6bc39905nd<p class="apache">Apache HTTP Server Version 2.5</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<img alt="" src="/images/feather.gif" /></div>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div id="path">
3f08db06526d6901aa08c110b5bc7dde6bc39905nd<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>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div id="page-content">
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div id="preamble"><h1>Apache Module mod_macro</h1>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div class="toplang">
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p><span>Available Languages: </span><a href="/en/mod/mod_macro.html" title="English">&nbsp;en&nbsp;</a> |
053bfa8a288528fafab2b7a032c15116bb5de711nd<a href="/fr/mod/mod_macro.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung</div>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Provides macros within apache httpd runtime configuration files</td></tr>
4b575a6b6704b516f22d65a3ad35696d7b9ba372rpluem<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
4b575a6b6704b516f22d65a3ad35696d7b9ba372rpluem<tr><th><a href="module-dict.html#ModuleIdentifier">Module�Identifier:</a></th><td>macro_module</td></tr>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<tr><th><a href="module-dict.html#SourceFile">Source�File:</a></th><td>mod_macro.c</td></tr></table>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<h3>Summary</h3>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd <p>Provides macros within Apache httpd runtime configuration files,
a78048ccbdb6256da15e6b0e7e95355e480c2301nd to ease the process of creating numerous similar configuration
a78048ccbdb6256da15e6b0e7e95355e480c2301nd blocks. When the server starts up, the macros are expanded using the
a78048ccbdb6256da15e6b0e7e95355e480c2301nd provided parameters, and the result is processed as along with the
a78048ccbdb6256da15e6b0e7e95355e480c2301nd rest of the configuration file.</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd</div>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div id="quickview"><h3 class="directives">Directives</h3>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<ul id="toc">
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<li><img alt="" src="/images/down.gif" /> <a href="#macro">&lt;Macro&gt;</a></li>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<li><img alt="" src="/images/down.gif" /> <a href="#undefmacro">UndefMacro</a></li>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<li><img alt="" src="/images/down.gif" /> <a href="#use">Use</a></li>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd</ul>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<h3>Topics</h3>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<ul id="topics">
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<li><img alt="" src="/images/down.gif" /> <a href="#usage">Usage</a></li>
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh<li><img alt="" src="/images/down.gif" /> <a href="#tips">Tips</a></li>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<li><img alt="" src="/images/down.gif" /> <a href="#examples">Examples</a></li>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd</ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div class="section">
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<h2><a name="usage" id="usage">Usage</a></h2>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>Macros are defined using <code class="directive">&lt;Macro&gt;</code> blocks, which contain the portion of
a78048ccbdb6256da15e6b0e7e95355e480c2301ndyour configuration that needs to be repeated, complete with variables
a78048ccbdb6256da15e6b0e7e95355e480c2301ndfor those parts that will need to be substituted.</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>For example, you might use a macro to define a <code class="directive">&lt;VirtualHost&gt;</code> block, in order to define
a78048ccbdb6256da15e6b0e7e95355e480c2301ndmultiple similar virtual hosts:</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<pre class="prettyprint lang-config">
a78048ccbdb6256da15e6b0e7e95355e480c2301nd&lt;Macro VHost $name $domain&gt;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd&lt;VirtualHost *:80&gt;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd ServerName $domain
a78048ccbdb6256da15e6b0e7e95355e480c2301nd ServerAlias www.$domain
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd DocumentRoot /var/www/vhosts/$name
a78048ccbdb6256da15e6b0e7e95355e480c2301nd ErrorLog /var/log/httpd/$name.error_log
a78048ccbdb6256da15e6b0e7e95355e480c2301nd CustomLog /var/log/httpd/name.access_log combined
a78048ccbdb6256da15e6b0e7e95355e480c2301nd&gt;/VirtualHost&gt;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd&lt;/Macro&gt;
a78048ccbdb6256da15e6b0e7e95355e480c2301nd</pre>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>Macro names are case-insensitive, like httpd configuration
a78048ccbdb6256da15e6b0e7e95355e480c2301nddirectives. However, variable names are case sensitive.</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>You would then invoke this macro several times to create virtual
a78048ccbdb6256da15e6b0e7e95355e480c2301ndhosts:</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<pre class="prettyprint lang-config">
a78048ccbdb6256da15e6b0e7e95355e480c2301ndUse VHost example example.com
a78048ccbdb6256da15e6b0e7e95355e480c2301ndUse VHost myhost hostname.org
a78048ccbdb6256da15e6b0e7e95355e480c2301ndUse VHost apache apache.org
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301ndUndefMacro VHost
a78048ccbdb6256da15e6b0e7e95355e480c2301nd</pre>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>At server startup time, each of these <code class="directive">Use</code>
a78048ccbdb6256da15e6b0e7e95355e480c2301ndinvocations would be expanded into a full virtualhost, as
a78048ccbdb6256da15e6b0e7e95355e480c2301nddescribed by the <code class="directive">Macro</code> definition.</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>The <code class="directive">UndefMacro</code> directive is used so that later
a78048ccbdb6256da15e6b0e7e95355e480c2301ndmacros using the same variable names don't result in conflicting
a78048ccbdb6256da15e6b0e7e95355e480c2301nddefinitions.</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>A more elaborate version of this example may be seen below in the
a78048ccbdb6256da15e6b0e7e95355e480c2301ndExamples section.</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<div class="section">
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<h2><a name="tips" id="tips">Tips</a></h2>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>Parameter names should begin with a sigil such as <code>$</code>,
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<code>%</code>, or <code>@</code>, so that they are clearly
a78048ccbdb6256da15e6b0e7e95355e480c2301ndidentifiable, and also in order to help deail with interactions with
a78048ccbdb6256da15e6b0e7e95355e480c2301ndother directives, such as the core <code class="directive"><a href="/mod/core.html#define">Define</a></code> directive. Failure to do so will
a78048ccbdb6256da15e6b0e7e95355e480c2301ndresult in a warning. Nevertheless, you are encouraged to have a good
a78048ccbdb6256da15e6b0e7e95355e480c2301ndknowledge of your entire server configuration in order to avoid reusing
a78048ccbdb6256da15e6b0e7e95355e480c2301ndthe same variables in different scopes, which can cause confusion.</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>Parameters prefixed with either <code>$</code> or <code>%</code> are
a78048ccbdb6256da15e6b0e7e95355e480c2301ndnot escaped. Parameters prefixes with <code>@</code> are escaped in
a78048ccbdb6256da15e6b0e7e95355e480c2301ndquotes.</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
a78048ccbdb6256da15e6b0e7e95355e480c2301nd<p>Avoid using a parameter which contains another parameter as a prefix,
a78048ccbdb6256da15e6b0e7e95355e480c2301nd(For example, <code>$win</code> and <code>$winter</code>) as this may
a78048ccbdb6256da15e6b0e7e95355e480c2301ndcause confusion at expression evaluation time. In the event of such
a78048ccbdb6256da15e6b0e7e95355e480c2301ndconfusion, the longest possible parameter name is used.</p>
a78048ccbdb6256da15e6b0e7e95355e480c2301nd
053bfa8a288528fafab2b7a032c15116bb5de711nd<p>If you want to use a value within another string, it is useful to
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjungsurround the parameter in braces, to avoid confusion:</p>
727872d18412fc021f03969b8641810d8896820bhumbedooh
0d0ba3a410038e179b695446bb149cce6264e0abnd<pre class="prettyprint lang-config">
727872d18412fc021f03969b8641810d8896820bhumbedooh&lt;Macro DocRoot ${docroot}&gt;
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh DocumentRoot /var/www/${docroot}/htdocs
0d0ba3a410038e179b695446bb149cce6264e0abnd&lt;/Macro&gt;
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh</pre>
727872d18412fc021f03969b8641810d8896820bhumbedooh
0d0ba3a410038e179b695446bb149cce6264e0abnd
0d0ba3a410038e179b695446bb149cce6264e0abnd</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
0d0ba3a410038e179b695446bb149cce6264e0abnd<div class="section">
ac082aefa89416cbdc9a1836eaf3bed9698201c8humbedooh<h2><a name="examples" id="examples">Examples</a></h2>
0d0ba3a410038e179b695446bb149cce6264e0abnd
0d0ba3a410038e179b695446bb149cce6264e0abnd
0d0ba3a410038e179b695446bb149cce6264e0abnd<h3>Virtual Host Definition</h3>
727872d18412fc021f03969b8641810d8896820bhumbedooh
0d0ba3a410038e179b695446bb149cce6264e0abnd
0d0ba3a410038e179b695446bb149cce6264e0abnd<p>A common usage of <code class="module"><a href="/mod/mod_macro.html">mod_macro</a></code> is for the creation of
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedoohdynamically-generated virtual hosts.</p>
07dc96d063d49299da433f84b5c5681da9bbdf68rbowen
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen<pre class="prettyprint lang-config">
0d0ba3a410038e179b695446bb149cce6264e0abnd## Define a VHost Macro for repetitive configurations
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd&lt;Macro VHost $host $port $dir&gt;
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd Listen $port
a78048ccbdb6256da15e6b0e7e95355e480c2301nd &lt;VirtualHost *:$port&gt;
ServerName $host
DocumentRoot $dir
# Public document root
&lt;Directory $dir&gt;
Require all granted
&lt;/Directory&gt;
# limit access to intranet subdir.
&lt;Directory $dir/intranet&gt;
Require ip 10.0.0.0/8
&lt;/Directory&gt;
&lt;/VirtualHost&gt;
&lt;/Macro&gt;
## Use of VHost with different arguments.
Use VHost www.apache.org 80 /vhosts/apache/htdocs
Use VHost example.org 8080 /vhosts/example/htdocs
Use VHost www.example.fr 1234 /vhosts/example.fr/htdocs
</pre>
<h3>Removal of a macro definition</h3>
<ul>
<li> the macro must be already defined.</li>
</ul>
<pre class="prettyprint lang-config">
&lt;Macro DirGroup $dir $group&gt;
&lt;Directory $dir&gt;
Require group $group
&lt;/Directory&gt;
&lt;/Macro&gt;
Use DirGroup /www/apache/private private
Use DirGroup /www/apache/server admin
UndefMacro DirGroup
</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="Macro" id="Macro">&lt;Macro&gt;</a> <a name="macro" id="macro">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Define a configuration file macro</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>
&lt;Macro <var>name</var> [<var>par1</var> .. <var>parN</var>]&gt;
... &lt;/Macro&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</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_macro</td></tr>
</table>
<p>The <code class="directive">Macro</code> directive controls the definition of
a macro within the server runtime configuration files.
The first argument is the name of the macro.
Other arguments are parameters to the macro. It is good practice to prefix
parameter names with any of '<code>$%@</code>', and not macro names
with such characters.
</p>
<pre class="prettyprint lang-config">
&lt;Macro LocalAccessPolicy&gt;
Require ip 10.2.16.0/24
&lt;/Macro&gt;
&lt;Macro RestrictedAccessPolicy $ipnumbers&gt;
Require ip $ipnumbers
&lt;/Macro&gt;
</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="UndefMacro" id="UndefMacro">UndefMacro</a> <a name="undefmacro" id="undefmacro">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Undefine a macro</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>UndefMacro <var>name</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</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_macro</td></tr>
</table>
<p>The <code class="directive">UndefMacro</code> directive undefines a macro
which has been defined before hand.</p>
<pre class="prettyprint lang-config">
UndefMacro LocalAccessPolicy
UndefMacro RestrictedAccessPolicy
</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="Use" id="Use">Use</a> <a name="use" id="use">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Use a macro</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Use <var>name</var> [<var>value1</var> ... <var>valueN</var>]
</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</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_macro</td></tr>
</table>
<p>The <code class="directive">Use</code> directive controls the use of a macro.
The specified macro is expanded. It must be given the same number of
arguments than in the macro definition. The provided values are
associated to their corresponding initial parameters and are substituted
before processing.</p>
<pre class="prettyprint lang-config">
Use LocalAccessPolicy
...
Use RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"
</pre>
<p>is equivalent, with the macros defined above, to:</p>
<pre class="prettyprint lang-config">
Require ip 10.2.16.0/24
...
Require ip 192.54.172.0/24 192.54.148.0/24
</pre>
</div>
</div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="/en/mod/mod_macro.html" title="English">&nbsp;en&nbsp;</a> |
<a href="/fr/mod/mod_macro.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&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 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>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_macro.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 2013 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>