1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
4 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 This file is generated from xml source: DO NOT EDIT
8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
10 <title>mod_macro - Serveur Apache HTTP Version 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
19 <div id="page-header">
20 <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">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
21 <p class="apache">Serveur Apache HTTP Version 2.5</p>
22 <img alt="" src="../images/feather.png" /></div>
23 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
25 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div>
26 <div id="page-content">
27 <div id="preamble"><h1>Module Apache mod_macro</h1>
29 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_macro.html" hreflang="en" rel="alternate" title="English"> en </a> |
30 <a href="../fr/mod/mod_macro.html" title="Français"> fr </a></p>
32 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Ce module permet d'utiliser des macros dans les fichiers
33 de configuration Apache.</td></tr>
34 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr>
35 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>macro_module</td></tr>
36 <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_macro.c</td></tr></table>
40 <p>Ce module permet d'utiliser des macros dans les fichiers de
41 configuration à l'exécution du serveur HTTP Apache afin de faciliter
42 la création de nombreux blocs de configuration similaires. Quand le
43 serveur démarre, les macros sont exécutées avec les paramètres
44 fournis, et le résultat obtenu est traité au même titre que le reste
45 du fichier de configuration.</p>
48 <div id="quickview"><h3>Sujets</h3>
50 <li><img alt="" src="../images/down.gif" /> <a href="#usage">Utilisation</a></li>
51 <li><img alt="" src="../images/down.gif" /> <a href="#tips">Conseils</a></li>
52 <li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li>
53 </ul><h3 class="directives">Directives</h3>
55 <li><img alt="" src="../images/down.gif" /> <a href="#macro"><Macro></a></li>
56 <li><img alt="" src="../images/down.gif" /> <a href="#macroignorebadnesting">MacroIgnoreBadNesting</a></li>
57 <li><img alt="" src="../images/down.gif" /> <a href="#macroignoreemptyargs">MacroIgnoreEmptyArgs</a></li>
58 <li><img alt="" src="../images/down.gif" /> <a href="#undefmacro">UndefMacro</a></li>
59 <li><img alt="" src="../images/down.gif" /> <a href="#use">Use</a></li>
61 <h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_macro">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_macro">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
63 <li><a href="#comments_section">Commentaires</a></li></ul></div>
64 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
66 <h2><a name="usage" id="usage">Utilisation</a></h2>
67 <p>On définit une macro à l'aide des blocs <code class="directive"><a href="#macro"><Macro></a></code> qui contiennent la portion de votre
68 configuration qui intervient de manière répétitive, y compris les
69 variables pour les parties qui devront être substituées.</p>
71 <p>Par exemple, vous pouvez utiliser une macro pour définir un bloc
72 <code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>, afin de pouvoir
73 définir de nombreux serveurs virtuels similaires :</p>
75 <pre class="prettyprint lang-config"><Macro VHost $name $domain>
76 <VirtualHost *:80>
78 ServerAlias www.$domain
80 DocumentRoot "/var/www/vhosts/$name"
81 ErrorLog "/var/log/httpd/$name.error_log"
82 CustomLog "/var/log/httpd/$name.access_log" combined
87 <p>Comme les directives de configuration httpd, les noms des macros sont
88 insensibles à la casse, à la différence des variables qui y sont, elles,
91 <p>Vous pouvez alors invoquer cette macro autant de fois que vous le
92 voulez pour créer des serveurs virtuels </p>
94 <pre class="prettyprint lang-config">Use VHost example example.com
95 Use VHost myhost hostname.org
96 Use VHost apache apache.org
98 UndefMacro VHost</pre>
101 <p>Au démarrage du serveur, chacune de ces invocations
102 <code class="directive"><a href="#use">Use</a></code> sera remplacée par une définition de serveur
103 virtuel complète, comme décrit dans la définition de la
104 <code class="directive"><a href="#macro"><Macro></a></code>.</p>
106 <p>La directive <code class="directive"><a href="#undefmacro">UndefMacro</a></code> permet d'éviter les
107 conflits de définitions qui pourraient provenir de l'utilisation
108 ultérieure de macros contenant les mêmes noms de variables.</p>
110 <p>Vous trouverez une version plus élaborée de cet exemple plus loin
111 dans la section Exemples.</p>
113 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
114 <div class="section">
115 <h2><a name="tips" id="tips">Conseils</a></h2>
117 <p>Les noms de paramètres doivent commencer par un sigil tel que
118 <code>$</code>, <code>%</code>, ou <code>@</code>, de façon à ce qu'ils
119 soient clairement identifiables, mais aussi afin de faciliter les
120 interactions avec les autres directives, comme la directive de base
121 <code class="directive"><a href="../mod/core.html#define">Define</a></code>. Dans le cas contraire, vous
122 recevrez un avertissement. En tout état de cause, il est conseillé
123 d'avoir une bonne connaissance globale de la configuration du serveur,
124 afin d'éviter la réutilisation des mêmes variables à différents niveaux,
125 ce qui peut être à l'origine de confusions.</p>
127 <p>Les paramètres préfixés par <code>$</code> ou <code>%</code> ne sont
128 pas échappés. Les paramètres préfixés par <code>@</code> sont échappés
129 entre guillemets.</p>
131 <p>Evitez de préfixer un paramètre par le nom d'un autre paramètre (par
132 exemple, présence simultanée des paramètres <code>$win</code> et
133 <code>$winter</code>), car ceci peut introduire de la confusion lors de
134 l'évaluation des expressions. Si cela se produit, c'est le nom de
135 paramètre le plus long possible qui sera utilisé.</p>
137 <p>Si vous désirez insérer une valeur dans une chaîne, il est conseillé
138 de l'entourer d'accolades afin d'éviter toute confusion :</p>
140 <pre class="prettyprint lang-config"><Macro DocRoot ${docroot}>
141 DocumentRoot "/var/www/${docroot}/htdocs"
145 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
146 <div class="section">
147 <h2><a name="examples" id="examples">Exemples</a></h2>
150 <h3>Définition de serveurs virtuels</h3>
153 <p>Un exemple typique d'utilisation de <code class="module"><a href="../mod/mod_macro.html">mod_macro</a></code> est la
154 création dynamique de serveurs virtuels.</p>
156 <pre class="prettyprint lang-config">## Définition d'une macro VHost pour les configurations répétitives
158 <Macro VHost $host $port $dir>
160 <VirtualHost *:$port>
165 # Racine des documents publique
166 <Directory "$dir">
170 # restriction d'accès au sous-répertoire intranet.
171 <Directory "$dir/intranet">
172 Require ip 10.0.0.0/8
177 ## Utilisation de la macro VHost avec différents arguments.
179 Use VHost www.apache.org 80 /vhosts/apache/htdocs
180 Use VHost example.org 8080 /vhosts/example/htdocs
181 Use VHost www.example.fr 1234 /vhosts/example.fr/htdocs</pre>
185 <h3>Suppression d'une définition de macro</h3>
188 <p>Il est recommandé de supprimer la définition d'une macro après
189 l'avoir utilisée. Ceci permet d'éviter les confusions au sein d'un
190 fichier de configuration complexe où des conflits entre noms de
191 variables peuvent survenir.</p>
193 <pre class="prettyprint lang-config"><Macro DirGroup $dir $group>
194 <Directory "$dir">
199 Use DirGroup /www/apache/private private
200 Use DirGroup /www/apache/server admin
202 UndefMacro DirGroup</pre>
208 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
209 <div class="directive-section"><h2><a name="macro" id="macro">Directive</a> <a name="Macro" id="Macro"><Macro></a></h2>
210 <table class="directive">
211 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définition d'une macro dans un fichier de configuration</td></tr>
212 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>
213 <Macro <var>nom</var> [<var>par1</var> .. <var>parN</var>]>
214 ... </Macro></code></td></tr>
215 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire</td></tr>
216 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
217 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
218 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr>
220 <p>La directive <code class="directive"><Macro></code> permet de définir une macro
221 dans un fichier de configuration Apache. Le premier argument est le nom
222 de la macro, et les arguments suivants sont les paramètres. Il
223 est de bon aloi de préfixer les noms des paramètres d'une macro
224 avec un caractère parmi '<code>$%@</code>', et d'éviter d'en faire
225 de même avec les noms de macros.
228 <pre class="prettyprint lang-config"><Macro LocalAccessPolicy>
229 Require ip 10.2.16.0/24
232 <Macro RestrictedAccessPolicy $ipnumbers>
233 Require ip $ipnumbers
238 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
239 <div class="directive-section"><h2><a name="macroignorebadnesting" id="macroignorebadnesting">Directive</a> <a name="MacroIgnoreBadNesting" id="MacroIgnoreBadNesting">MacroIgnoreBadNesting</a></h2>
240 <table class="directive">
241 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore les avertissements et n'inscrit rien dans le journal à
242 propos d'une imbrication de Macros non conforme</td></tr>
243 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>MacroIgnoreBadNesting</code></td></tr>
244 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire</td></tr>
245 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
246 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
247 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr>
250 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
251 <div class="directive-section"><h2><a name="macroignoreemptyargs" id="macroignoreemptyargs">Directive</a> <a name="MacroIgnoreEmptyArgs" id="MacroIgnoreEmptyArgs">MacroIgnoreEmptyArgs</a></h2>
252 <table class="directive">
253 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore les avertissements et n'inscrit rien dans le journal à
254 propos des arguments de Macro vides</td></tr>
255 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>MacroIgnoreEmptyArgs</code></td></tr>
256 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire</td></tr>
257 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
258 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
259 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr>
262 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
263 <div class="directive-section"><h2><a name="undefmacro" id="undefmacro">Directive</a> <a name="UndefMacro" id="UndefMacro">UndefMacro</a></h2>
264 <table class="directive">
265 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Supprime une macro</td></tr>
266 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>UndefMacro <var>nom</var></code></td></tr>
267 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire</td></tr>
268 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
269 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
270 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr>
272 <p>La directive <code class="directive">UndefMacro</code> annule la définition
273 d'une macro qui doit avoir été définie auparavant.</p>
275 <pre class="prettyprint lang-config">UndefMacro LocalAccessPolicy
276 UndefMacro RestrictedAccessPolicy</pre>
280 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
281 <div class="directive-section"><h2><a name="use" id="use">Directive</a> <a name="Use" id="Use">Use</a></h2>
282 <table class="directive">
283 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Utilisation d'une macro</td></tr>
284 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>Use <var>nom</var> [<var>valeur1</var> ... <var>valeurN</var>]
286 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire</td></tr>
287 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
288 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
289 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr>
291 <p> La directive <code class="directive">Use</code> permet d'utiliser une macro.
292 La macro considérée est expansée. Son nombre d'arguments doit être égal au
293 nombre de paramètres précisés dans sa définition. Les valeurs passées en
294 argument sont attribuées aux paramètres correspondants et
295 substituées avant l'interprétation du texte de la macro.</p>
297 <pre class="prettyprint lang-config">Use LocalAccessPolicy
299 Use RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"</pre>
302 <p>est équivalent, avec les macros définies ci-dessus à :</p>
304 <pre class="prettyprint lang-config">Require ip 10.2.16.0/24
306 Require ip 192.54.172.0/24 192.54.148.0/24</pre>
311 <div class="bottomlang">
312 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_macro.html" hreflang="en" rel="alternate" title="English"> en </a> |
313 <a href="../fr/mod/mod_macro.html" title="Français"> fr </a></p>
314 </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">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&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>
315 <script type="text/javascript"><!--//--><![CDATA[//><!--
316 var comments_shortname = 'httpd';
317 var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_macro.html';
319 if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
320 d.write('<div id="comments_thread"><\/div>');
321 var s = d.createElement('script');
322 s.type = 'text/javascript';
324 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
325 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
328 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
330 })(window, document);
331 //--><!]]></script></div><div id="footer">
332 <p class="apache">Copyright 2017 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
333 <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">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
334 if (typeof(prettyPrint) !== 'undefined') {