mod_macro.html.en revision aaed4ebc116f5862aff2610a809a9a9e9a28f50e
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" />
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen<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">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<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>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<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="section">
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<h2><a name="usage" id="usage">Usage</a></h2>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
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
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>For example, you might use a macro to define a <code class="directive">&lt;VirtualHost&gt;</code> block, in order to define
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowemultiple similar virtual hosts:</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<pre class="prettyprint lang-config">&lt;Macro VHost $name $domain&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&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
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>You would then invoke this macro several times to create virtual
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrinhosts:</p>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<pre class="prettyprint lang-config">Use VHost example example.com
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrinUse VHost myhost hostname.org
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrinUse VHost apache apache.org
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrinUndefMacro VHost</pre>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin<p>At server startup time, each of these <code class="directive">Use</code>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrininvocations would be expanded into a full virtualhost, as
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrindescribed by the <code class="directive">Macro</code> definition.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<p>The <code class="directive">UndefMacro</code> directive is used so that later
27dcd8d81085fd60aadcd8a9bad35a607b26b758nilgunmacros using the same variable names don't result in conflicting
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrindefinitions.</p>
57b31f30545668d28e895efe7f5c0eb15d37a03figalic
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>A more elaborate version of this example may be seen below in the
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweExamples section.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div class="section">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<h2><a name="tips" id="tips">Tips</a></h2>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<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
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweother directives, such as the core <code class="directive"><a href="/mod/core.html#define">Define</a></code> directive. Failure to do so will
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweresult in a warning. Nevertheless, you are encouraged to have a good
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweknowledge of your entire server configuration in order to avoid reusing
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowethe same variables in different scopes, which can cause confusion.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p>Parameters prefixed with either <code>$</code> or <code>%</code> are
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowenot escaped. Parameters prefixes with <code>@</code> are escaped in
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowequotes.</p>
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf
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
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin<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>
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin</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="examples" id="examples">Examples</a></h2>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<h3>Virtual Host Definition</h3>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
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
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe # Public document root
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe &lt;Directory "$dir"&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe Require all granted
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe &lt;/Directory&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe # limit access to intranet subdir.
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe &lt;Directory "$dir/intranet"&gt;
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin Require ip 10.0.0.0/8
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe &lt;/Directory&gt;
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf &lt;/VirtualHost&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&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
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweavoids confusion in a complex configuration file where there may be
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweconflicts in variable names.</p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<pre class="prettyprint lang-config">&lt;Macro DirGroup $dir $group&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe &lt;Directory "$dir"&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe Require group $group
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin &lt;/Directory&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;/Macro&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
27dcd8d81085fd60aadcd8a9bad35a607b26b758nilgunUse DirGroup /www/apache/private private
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUse DirGroup /www/apache/server admin
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUndefMacro DirGroup</pre>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</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>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<table class="directive">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<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.
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin </p>
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin <pre class="prettyprint lang-config">&lt;Macro LocalAccessPolicy&gt;
59877c2b4bb77f563370d7fb238f4a6d7a0e7f44minfrin Require ip 10.2.16.0/24
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;/Macro&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;Macro RestrictedAccessPolicy $ipnumbers&gt;
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe Require ip $ipnumbers
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe&lt;/Macro&gt;</pre>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</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="UndefMacro" id="UndefMacro">UndefMacro</a> <a name="undefmacro" id="undefmacro">Directive</a></h2>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<table class="directive">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Undefine a macro</td></tr>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>UndefMacro <var>name</var></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">UndefMacro</code> directive undefines a macro
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe which has been defined before hand.</p>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf <pre class="prettyprint lang-config">UndefMacro LocalAccessPolicy
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUndefMacro RestrictedAccessPolicy</pre>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</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="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
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe <pre class="prettyprint lang-config">Use LocalAccessPolicy
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe...
5f4e50966b2b9b58436a1651cbe588d1b595657ewroweUse RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"</pre>
c8ea2fd531ec56b7969ee48fc05655b503fa57a3minfrin
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe <p>is equivalent, with the macros defined above, to:</p>
48b62528cd9513fe8b5f1bbcee92ab3b28c94807rbowen
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
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</div>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<div class="bottomlang">
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<p><span>Available Languages: </span><a href="/en/mod/mod_macro.html" title="English">&nbsp;en&nbsp;</a> |
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<a href="/fr/mod/mod_macro.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe</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>
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe<script type="text/javascript"><!--//--><![CDATA[//><!--
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowevar comments_shortname = 'httpd';
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowevar comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_macro.html';
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe(function(w, d) {
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
0066eddda7203f6345b56f77d146a759298dc635gryzor d.write('<div id="comments_thread"><\/div>');
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung var s = d.createElement('script');
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe s.type = 'text/javascript';
5effc8b39fae5cd169d17f342bfc265705840014rbowen s.async = true;
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen }
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen else {
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
5f4e50966b2b9b58436a1651cbe588d1b595657ewrowe }
})(window, document);
//--><!]]></script></div><div id="footer">
<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>
<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>