mod_macro.html.en revision c44eeebd065e2c8cd028016b45c58afb480aaf8f
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<?xml version="1.0" encoding="ISO-8859-1"?>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe This file is generated from xml source: DO NOT EDIT
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe -->
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<title>mod_macro - Apache HTTP Server Version 2.5</title>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<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.min.js" type="text/javascript">
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen</script>
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<link href="/images/favicon.ico" rel="shortcut icon" /></head>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<body>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<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>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<img alt="" src="/images/feather.gif" /></div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<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>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div id="page-content">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div id="preamble"><h1>Apache Module mod_macro</h1>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div class="toplang">
0066eddda7203f6345b56f77d146a759298dc635gryzor<p><span>Available Languages: </span><a href="/en/mod/mod_macro.html" title="English">&nbsp;en&nbsp;</a> |
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung<a href="/fr/mod/mod_macro.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</div>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<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>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<tr><th><a href="module-dict.html#ModuleIdentifier">Module�Identifier:</a></th><td>macro_module</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="module-dict.html#SourceFile">Source�File:</a></th><td>mod_macro.c</td></tr></table>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<h3>Summary</h3>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe <p>Provides macros within Apache httpd runtime configuration files,
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe to ease the process of creating numerous similar configuration
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin blocks. When the server starts up, the macros are expanded using the
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin provided parameters, and the result is processed as along with the
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin rest of the configuration file.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</div>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<div id="quickview"><h3>Topics</h3>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<ul id="topics">
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<li><img alt="" src="/images/down.gif" /> <a href="#usage">Usage</a></li>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<li><img alt="" src="/images/down.gif" /> <a href="#tips">Tips</a></li>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<li><img alt="" src="/images/down.gif" /> <a href="#examples">Examples</a></li>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin</ul><h3 class="directives">Directives</h3>
b244bbf442a0aea3dc397b4d0d751f4716c5891dnd<ul id="toc">
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<li><img alt="" src="/images/down.gif" /> <a href="#macro">&lt;Macro&gt;</a></li>
57b31f30545668d28e895efe7f5c0eb15d37a03figalic<li><img alt="" src="/images/down.gif" /> <a href="#undefmacro">UndefMacro</a></li>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<li><img alt="" src="/images/down.gif" /> <a href="#use">Use</a></li>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin</ul>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div class="directive-section"><h2><a name="Macro" id="Macro">&lt;Macro&gt;</a> <a name="macro" id="macro">Directive</a></h2>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<table class="directive">
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Define a configuration file macro</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;Macro <var>name</var> [<var>par1</var> .. <var>parN</var>]&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe... &lt;/Macro&gt;</code></td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</table>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe <p>The <code class="directive">Macro</code> directive controls the definition of
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe a macro within the server runtime configuration files.
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe The first argument is the name of the macro.
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe Other arguments are parameters to the macro. It is good practice to prefix
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe parameter names with any of '<code>$%@</code>', and not macro names
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe with such characters.
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe </p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe <pre class="prettyprint lang-config">&lt;Macro LocalAccessPolicy&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe Require ip 10.2.16.0/24
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;/Macro&gt;
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;Macro RestrictedAccessPolicy $ipnumbers&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe Require ip $ipnumbers
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;/Macro&gt;</pre>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin</div>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<div class="directive-section"><h2><a name="UndefMacro" id="UndefMacro">UndefMacro</a> <a name="undefmacro" id="undefmacro">Directive</a></h2>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<table class="directive">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Undefine a macro</td></tr>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>UndefMacro <var>name</var></code></td></tr>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin</table>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin <p>The <code class="directive">UndefMacro</code> directive undefines a macro
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe which has been defined before hand.</p>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
27dcd8d81085fd60aadcd8a9bad35a607b26b758nilgun <pre class="prettyprint lang-config">UndefMacro LocalAccessPolicy
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrinUndefMacro RestrictedAccessPolicy</pre>
57b31f30545668d28e895efe7f5c0eb15d37a03figalic
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<div class="directive-section"><h2><a name="Use" id="Use">Use</a> <a name="use" id="use">Directive</a></h2>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<table class="directive">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Use a macro</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Use <var>name</var> [<var>value1</var> ... <var>valueN</var>]
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</code></td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</table>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe <p>The <code class="directive">Use</code> directive controls the use of a macro.
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe The specified macro is expanded. It must be given the same number of
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe arguments as in the macro definition. The provided values are
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe associated to their corresponding initial parameters and are substituted
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe before processing.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf <pre class="prettyprint lang-config">Use LocalAccessPolicy
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe...
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUse RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"</pre>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe <p>is equivalent, with the macros defined above, to:</p>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe <pre class="prettyprint lang-config">Require ip 10.2.16.0/24
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe...
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweRequire ip 192.54.172.0/24 192.54.148.0/24</pre>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf</div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<div class="section">
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<h2><a name="usage" id="usage">Usage</a></h2>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>Macros are defined using <code class="directive">&lt;Macro&gt;</code> blocks, which contain the portion of
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweyour configuration that needs to be repeated, complete with variables
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowefor those parts that will need to be substituted.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
4aa603e6448b99f9371397d439795c91a93637eand<p>For example, you might use a macro to define a <code class="directive">&lt;VirtualHost&gt;</code> block, in order to define
e487d6c09669296f94a5190cc34586a98e624a00ndmultiple similar virtual hosts:</p>
17ade6df5ec233536985eb1c130a906c725dd614humbedooh
4aa603e6448b99f9371397d439795c91a93637eand<pre class="prettyprint lang-config">&lt;Macro VHost $name $domain&gt;
e487d6c09669296f94a5190cc34586a98e624a00nd&lt;VirtualHost *:80&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe ServerName $domain
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe ServerAlias www.$domain
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe DocumentRoot /var/www/vhosts/$name
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe ErrorLog /var/log/httpd/$name.error_log
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe CustomLog /var/log/httpd/$name.access_log combined
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;/VirtualHost&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;/Macro&gt;</pre>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>Macro names are case-insensitive, like httpd configuration
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowedirectives. However, variable names are case sensitive.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<p>You would then invoke this macro several times to create virtual
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowehosts:</p>
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<pre class="prettyprint lang-config">Use VHost example example.com
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUse VHost myhost hostname.org
4aa603e6448b99f9371397d439795c91a93637eandUse VHost apache apache.org
53c8c4e968f092ac29976710db5829444e4c11fahumbedooh
4aa603e6448b99f9371397d439795c91a93637eandUndefMacro VHost</pre>
e487d6c09669296f94a5190cc34586a98e624a00nd
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>At server startup time, each of these <code class="directive">Use</code>
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweinvocations would be expanded into a full virtualhost, as
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowedescribed by the <code class="directive">Macro</code> definition.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>The <code class="directive">UndefMacro</code> directive is used so that later
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowemacros using the same variable names don't result in conflicting
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowedefinitions.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>A more elaborate version of this example may be seen below in the
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweExamples section.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<div class="section">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<h2><a name="tips" id="tips">Tips</a></h2>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
27dcd8d81085fd60aadcd8a9bad35a607b26b758nilgun<p>Parameter names should begin with a sigil such as <code>$</code>,
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<code>%</code>, or <code>@</code>, so that they are clearly
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweidentifiable, and also in order to help deal with interactions with
4aa603e6448b99f9371397d439795c91a93637eandother directives, such as the core <code class="directive"><a href="/mod/core.html#define">Define</a></code> directive. Failure to do so will
4aa603e6448b99f9371397d439795c91a93637eandresult in a warning. Nevertheless, you are encouraged to have a good
53c8c4e968f092ac29976710db5829444e4c11fahumbedoohknowledge of your entire server configuration in order to avoid reusing
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowethe same variables in different scopes, which can cause confusion.</p>
4aa603e6448b99f9371397d439795c91a93637eand
17ade6df5ec233536985eb1c130a906c725dd614humbedooh<p>Parameters prefixed with either <code>$</code> or <code>%</code> are
4aa603e6448b99f9371397d439795c91a93637eandnot escaped. Parameters prefixes with <code>@</code> are escaped in
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowequotes.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>Avoid using a parameter which contains another parameter as a prefix,
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe(For example, <code>$win</code> and <code>$winter</code>) as this may
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowecause confusion at expression evaluation time. In the event of such
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweconfusion, the longest possible parameter name is used.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>If you want to use a value within another string, it is useful to
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowesurround the parameter in braces, to avoid confusion:</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<pre class="prettyprint lang-config">&lt;Macro DocRoot ${docroot}&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe DocumentRoot /var/www/${docroot}/htdocs
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;/Macro&gt;</pre>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<div class="section">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<h2><a name="examples" id="examples">Examples</a></h2>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
4aa603e6448b99f9371397d439795c91a93637eand
4aa603e6448b99f9371397d439795c91a93637eand<h3>Virtual Host Definition</h3>
e487d6c09669296f94a5190cc34586a98e624a00nd
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>A common usage of <code class="module"><a href="/mod/mod_macro.html">mod_macro</a></code> is for the creation of
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowedynamically-generated virtual hosts.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<pre class="prettyprint lang-config">## Define a VHost Macro for repetitive configurations
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;Macro VHost $host $port $dir&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe Listen $port
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe &lt;VirtualHost *:$port&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe ServerName $host
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe DocumentRoot $dir
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin # Public document root
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf &lt;Directory $dir&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe Require all granted
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe &lt;/Directory&gt;
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe # limit access to intranet subdir.
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe &lt;Directory $dir/intranet&gt;
4aa603e6448b99f9371397d439795c91a93637eand Require ip 10.0.0.0/8
17ade6df5ec233536985eb1c130a906c725dd614humbedooh &lt;/Directory&gt;
4aa603e6448b99f9371397d439795c91a93637eand &lt;/VirtualHost&gt;
e487d6c09669296f94a5190cc34586a98e624a00nd&lt;/Macro&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe## Use of VHost with different arguments.
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUse VHost www.apache.org 80 /vhosts/apache/htdocs
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUse VHost example.org 8080 /vhosts/example/htdocs
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUse VHost www.example.fr 1234 /vhosts/example.fr/htdocs</pre>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<h3>Removal of a macro definition</h3>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>It's recommended that you undefine a macro once you've used it. This
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrinavoids confusion in a complex configuration file where there may be
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweconflicts in variable names.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
48b62528cd9513fe8b5f1bbcee92ab3b28c94807rbowen<pre class="prettyprint lang-config">&lt;Macro DirGroup $dir $group&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe &lt;Directory $dir&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe Require group $group
4aa603e6448b99f9371397d439795c91a93637eand &lt;/Directory&gt;
4aa603e6448b99f9371397d439795c91a93637eand&lt;/Macro&gt;
e487d6c09669296f94a5190cc34586a98e624a00nd
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUse DirGroup /www/apache/private private
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUse DirGroup /www/apache/server admin
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUndefMacro DirGroup</pre>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</div>
0066eddda7203f6345b56f77d146a759298dc635gryzor<div class="bottomlang">
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung<p><span>Available Languages: </span><a href="/en/mod/mod_macro.html" title="English">&nbsp;en&nbsp;</a> |
727872d18412fc021f03969b8641810d8896820bhumbedooh<a href="/fr/mod/mod_macro.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
0d0ba3a410038e179b695446bb149cce6264e0abnd</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>
727872d18412fc021f03969b8641810d8896820bhumbedooh<script type="text/javascript"><!--//--><![CDATA[//><!--
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedoohvar comments_shortname = 'httpd';
0d0ba3a410038e179b695446bb149cce6264e0abndvar comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_macro.html';
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh(function(w, d) {
727872d18412fc021f03969b8641810d8896820bhumbedooh if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
0d0ba3a410038e179b695446bb149cce6264e0abnd d.write('<div id="comments_thread"><\/div>');
0d0ba3a410038e179b695446bb149cce6264e0abnd var s = d.createElement('script');
0d0ba3a410038e179b695446bb149cce6264e0abnd s.type = 'text/javascript';
ac082aefa89416cbdc9a1836eaf3bed9698201c8humbedooh s.async = true;
0d0ba3a410038e179b695446bb149cce6264e0abnd s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
0d0ba3a410038e179b695446bb149cce6264e0abnd (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
0d0ba3a410038e179b695446bb149cce6264e0abnd }
727872d18412fc021f03969b8641810d8896820bhumbedooh else {
0d0ba3a410038e179b695446bb149cce6264e0abnd d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
0d0ba3a410038e179b695446bb149cce6264e0abnd }
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh})(window, document);
07dc96d063d49299da433f84b5c5681da9bbdf68rbowen//--><!]]></script></div><div id="footer">
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen<p class="apache">Copyright 2015 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>
0d0ba3a410038e179b695446bb149cce6264e0abnd<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[//><!--
7fec19672a491661b2fe4b29f685bc7f4efa64d4ndif (typeof(prettyPrint) !== 'undefined') {
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd prettyPrint();
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd}
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe//--><!]]></script>
</body></html>