<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head> <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" /> <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX This file is generated from xml source: DO NOT EDIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> <title>mod_macro - Serveur Apache HTTP Version 2.4</title> <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> <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" /> <script src="../style/scripts/prettify.min.js" type="text/javascript"> </script> <link href="../images/favicon.ico" rel="shortcut icon" /></head> <body> <div id="page-header"> <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.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> <p class="apache">Serveur Apache HTTP Version 2.4</p> <img alt="" src="../images/feather.png" /></div> <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div> <div id="path"> <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.4</a> > <a href="./">Modules</a></div> <div id="page-content"> <div id="preamble"><h1>Module Apache mod_macro</h1> <div class="toplang"> <p><span>Langues Disponibles: </span><a href="../en/mod/mod_macro.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/mod/mod_macro.html" title="Français"> fr </a></p> </div> <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 de configuration Apache.</td></tr> <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr> <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>macro_module</td></tr> <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_macro.c</td></tr></table> <h3>Sommaire</h3> <p>Ce module permet d'utiliser des macros dans les fichiers de configuration à l'exécution du serveur HTTP Apache afin de faciliter la création de nombreux blocs de configuration similaires. Quand le serveur démarre, les macros sont exécutées avec les paramètres fournis, et le résultat obtenu est traité au même titre que le reste du fichier de configuration.</p> </div> <div id="quickview"><h3>Sujets</h3> <ul id="topics"> <li><img alt="" src="../images/down.gif" /> <a href="#usage">Utilisation</a></li> <li><img alt="" src="../images/down.gif" /> <a href="#tips">Conseils</a></li> <li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li> </ul><h3 class="directives">Directives</h3> <ul id="toc"> <li><img alt="" src="../images/down.gif" /> <a href="#macro"><Macro></a></li> <li><img alt="" src="../images/down.gif" /> <a href="#undefmacro">UndefMacro</a></li> <li><img alt="" src="../images/down.gif" /> <a href="#use">Use</a></li> </ul> <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> <ul class="seealso"> <li><a href="#comments_section">Commentaires</a></li></ul></div> <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> <h2><a name="usage" id="usage">Utilisation</a></h2> <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 configuration qui intervient de manière répétitive, y compris les variables pour les parties qui devront être substituées.</p> <p>Par exemple, vous pouvez utiliser une macro pour définir un bloc <code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>, afin de pouvoir définir de nombreux serveurs virtuels similaires :</p> <pre class="prettyprint lang-config"><Macro VHost $name $domain> <VirtualHost *:80> ServerName $domain ServerAlias www.$domain DocumentRoot "/var/www/vhosts/$name" ErrorLog "/var/log/httpd/$name.error_log" CustomLog "/var/log/httpd/$name.access_log" combined </VirtualHost> </Macro></pre> <p>Comme les directives de configuration httpd, les noms des macros sont insensibles à la casse, à la différence des variables qui y sont, elles, sensibles.</p> <p>Vous pouvez alors invoquer cette macro autant de fois que vous le voulez pour créer des serveurs virtuels </p> <pre class="prettyprint lang-config">Use VHost example example.com Use VHost myhost hostname.org Use VHost apache apache.org UndefMacro VHost</pre> <p>Au démarrage du serveur, chacune de ces invocations <code class="directive"><a href="#use">Use</a></code> sera remplacée par une définition de serveur virtuel complète, comme décrit dans la définition de la <code class="directive"><a href="#macro"><Macro></a></code>.</p> <p>La directive <code class="directive"><a href="#undefmacro">UndefMacro</a></code> permet d'éviter les conflits de définitions qui pourraient provenir de l'utilisation ultérieure de macros contenant les mêmes noms de variables.</p> <p>Vous trouverez une version plus élaborée de cet exemple plus loin dans la section Exemples.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> <h2><a name="tips" id="tips">Conseils</a></h2> <p>Les noms de paramètres doivent commencer par un sigil tel que <code>$</code>, <code>%</code>, ou <code>@</code>, de façon à ce qu'ils soient clairement identifiables, mais aussi afin de faciliter les interactions avec les autres directives, comme la directive de base <code class="directive"><a href="../mod/core.html#define">Define</a></code>. Dans le cas contraire, vous recevrez un avertissement. En tout état de cause, il est conseillé d'avoir une bonne connaissance globale de la configuration du serveur, afin d'éviter la réutilisation des mêmes variables à différents niveaux, ce qui peut être à l'origine de confusions.</p> <p>Les paramètres préfixés par <code>$</code> ou <code>%</code> ne sont pas échappés. Les paramètres préfixés par <code>@</code> sont échappés entre guillemets.</p> <p>Evitez de préfixer un paramètre par le nom d'un autre paramètre (par exemple, présence simultanée des paramètres <code>$win</code> et <code>$winter</code>), car ceci peut introduire de la confusion lors de l'évaluation des expressions. Si cela se produit, c'est le nom de paramètre le plus long possible qui sera utilisé.</p> <p>Si vous désirez insérer une valeur dans une chaîne, il est conseillé de l'entourer d'accolades afin d'éviter toute confusion :</p> <pre class="prettyprint lang-config"><Macro DocRoot ${docroot}> DocumentRoot "/var/www/${docroot}/htdocs" </Macro></pre> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> <h2><a name="examples" id="examples">Exemples</a></h2> <h3>Définition de serveurs virtuels</h3> <p>Un exemple typique d'utilisation de <code class="module"><a href="../mod/mod_macro.html">mod_macro</a></code> est la création dynamique de serveurs virtuels.</p> <pre class="prettyprint lang-config">## Définition d'une macro VHost pour les configurations répétitives <Macro VHost $host $port $dir> Listen $port <VirtualHost *:$port> ServerName $host DocumentRoot "$dir" # Racine des documents publique <Directory "$dir"> Require all granted </Directory> # restriction d'accès au sous-répertoire intranet. <Directory "$dir/intranet"> Require ip 10.0.0.0/8 </Directory> </VirtualHost> </Macro> ## Utilisation de la macro VHost avec différents 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>Suppression d'une définition de macro</h3> <p>Il est recommandé de supprimer la définition d'une macro après l'avoir utilisée. Ceci permet d'éviter les confusions au sein d'un fichier de configuration complexe où des conflits entre noms de variables peuvent survenir.</p> <pre class="prettyprint lang-config"><Macro DirGroup $dir $group> <Directory "$dir"> Require group $group </Directory> </Macro> 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">Directive</a> <a name="Macro" id="Macro"><Macro></a></h2> <table class="directive"> <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définition d'une macro dans un fichier de configuration</td></tr> <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code> <Macro <var>nom</var> [<var>par1</var> .. <var>parN</var>]> ... </Macro></code></td></tr> <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire</td></tr> <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr> <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr> </table> <p>La directive <code class="directive"><Macro></code> permet de définir une macro dans un fichier de configuration Apache. Le premier argument est le nom de la macro, et les arguments suivants sont les paramètres. Il est de bon aloi de préfixer les noms des paramètres d'une macro avec un caractère parmi '<code>$%@</code>', et d'éviter d'en faire de même avec les noms de macros. </p> <pre class="prettyprint lang-config"><Macro LocalAccessPolicy> Require ip 10.2.16.0/24 </Macro> <Macro RestrictedAccessPolicy $ipnumbers> Require ip $ipnumbers </Macro></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">Directive</a> <a name="UndefMacro" id="UndefMacro">UndefMacro</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">Syntaxe:</a></th><td><code>UndefMacro <var>name</var></code></td></tr> <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire</td></tr> <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr> <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr> </table><p>La documentation de cette directive n'a pas encore t traduite. Veuillez vous reporter la version en langue anglaise.</p></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">Directive</a> <a name="Use" id="Use">Use</a></h2> <table class="directive"> <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Utilisation d'une macro</td></tr> <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>Use <var>nom</var> [<var>valeur1</var> ... <var>valeurN</var>] </code></td></tr> <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire</td></tr> <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr> <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_macro</td></tr> </table> <p> La directive <code class="directive">Use</code> permet d'utiliser une macro. La macro considérée est expansée. Son nombre d'arguments doit être égal au nombre de paramètres précisés dans sa définition. Les valeurs passées en argument sont attribuées aux paramètres correspondants et substituées avant l'interprétation du texte de la macro.</p> <pre class="prettyprint lang-config">Use LocalAccessPolicy ... Use RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"</pre> <p>est équivalent, avec les macros définies ci-dessus à :</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>Langues Disponibles: </span><a href="../en/mod/mod_macro.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/mod/mod_macro.html" title="Français"> fr </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">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> <script type="text/javascript"><!--//--><![CDATA[//><!-- var comments_shortname = 'httpd'; var comments_identifier = 'http://httpd.apache.org/docs/2.4/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 2016 The Apache Software Foundation.<br />Autorisé sous <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/directives.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[//><!-- if (typeof(prettyPrint) !== 'undefined') { prettyPrint(); } //--><!]]></script> </body></html>