]> granicus.if.org Git - apache/blobdiff - docs/manual/mod/mod_macro.xml.fr
Quote path/URL arguments to Proxy* directives.
[apache] / docs / manual / mod / mod_macro.xml.fr
index 7617768f10fb372564e7008ca72b74a7b096b609..bb45eaa84ccf9e43d363ba1ee74afbb63dfdb17a 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1524240:1525426 (outdated) -->
+<!-- English Revision: 1533274:1673917 (outdated) -->
 <!-- French translation: Fabien Coelho -->
 <!-- Updated by Lucien Gentis -->
 
@@ -33,81 +33,105 @@ de configuration Apache.</description>
 
 <summary>
 
-    <p>Ce module permet de d&eacute;finir et d'utiliser des macros dans les fichiers
-    de configuration Apache. Ces macros peuvent avoir des param&egrave;tres qui sont
-    expans&eacute;s &agrave; l'utilisation (les param&egrave;tres sont remplac&eacute;s par la valeur
-    pass&eacute;e en argument), et le r&eacute;sultat de la substitution est trait&eacute;
-    normalement.</p>
+    <p>Ce module permet d'utiliser des macros dans les fichiers de
+    configuration &agrave; l'ex&eacute;cution du serveur HTTP Apache afin de faciliter
+    la cr&eacute;ation de nombreux blocs de configuration similaires. Quand le
+    serveur d&eacute;marre, les macros sont ex&eacute;cut&eacute;es avec les param&egrave;tres
+    fournis, et le r&eacute;sultat obtenu est trait&eacute; au m&ecirc;me titre que le reste
+    du fichier de configuration.</p>
+
 </summary>
 
-<section id="features"><title>Caract&eacute;ristiques</title>
-
-    <p>D&eacute;finition d'une macro :</p>
-    <ul>
-    <li> dans une section &lt;Macro&gt; au style conforme &agrave; la
-         syntaxe des fichiers de configuration Apache.</li>
-    <li> l'utilisateur choisit le nom de la macro et de ses param&egrave;tres.</li>
-    <li> les noms de macro sont insensibles &agrave; la casse, comme les directives Apache.</li>
-    <li> les noms de param&egrave;tres sont par contre sensibles &agrave; la casse.</li>
-    <li> les param&egrave;tres d'une macro doivent avoir des noms distincts.</li>
-    <li> il y a une erreur si un param&egrave;tre a un nom vide.</li>
-    <li> la red&eacute;finition d'une macro g&eacute;n&egrave;re un avertissement.</li>
-    <li> des d&eacute;finitions de macros peuvent &ecirc;tre imbriqu&eacute;es les unes dans les autres... (mais dans quel but ?)</li>
-    <li> les param&egrave;tres inutilis&eacute;s g&eacute;n&egrave;rent un avertissement.</li>
-    <li> les noms de param&egrave;tre en pr&eacute;fixe les uns des autres g&eacute;n&egrave;rent un avertissement.</li>
-    <li> les noms de param&egrave;tre non pr&eacute;fix&eacute;s par un des caract&egrave;res '<code>$%@</code>' g&eacute;n&egrave;rent un
-         avertissement pour encourager cette bonne pratique.</li>
-    <li> les diff&eacute;rents pr&eacute;fixes propos&eacute;s permettent de g&eacute;rer les interactions
-         avec d'autres directives comme <directive module="core">Define</directive>.</li>
-    <li> un conseil : il peut &ecirc;tre utile d'ajouter des accolades autour du nom d'un
-         param&egrave;tre, par exemple <code>${foo}</code>, de mani&egrave;re &agrave; ce que le
-         param&egrave;tre puisse &ecirc;tre utilis&eacute; entour&eacute; de caract&egrave;res,
-         par exemple <code>bla${foo}bla</code>.</li>
-    <li> g&eacute;n&egrave;re un avertissement si le contenu de la macro est vide.</li>
-    <li> g&eacute;n&egrave;re un avertissement si le syst&egrave;me d&eacute;tecte que les sections &agrave; l'int&eacute;rieur
-         d'une macro ne sont pas correctement imbriqu&eacute;es.</li>
-    <li> la port&eacute;e lexicale des param&egrave;tres d'une macro est restreinte au texte
-         de la macro elle-m&ecirc;me... en particulier elle n'est pas propag&eacute;e aux inclusions.</li>
-    <li> il n'y a pas de contrainte sur le contenu d'une macro.
-         <p>Cela signifie que vous pouvez mettre une section perl ou n'importe
-         quoi d'autre dans une macro. Il n'y a pas d'autre contrainte sur la
-         structure lexicale et syntaxique de la macro (guillemets, espaces...)
-         que d'attendre une s&eacute;quence de ligne avec &eacute;ventuellement des
-         continuations.</p></li>
-    </ul>
-
-    <p>Utilisation d'une macro:</p>
-    <ul>
-    <li> le nombre d'arguments doit &ecirc;tre coh&eacute;rent avec la d&eacute;finition.</li>
-    <li> toutes les occurences des param&egrave;tres sont substitu&eacute;es par leur valeur.</li>
-    <li> en cas de conflit, le nom le plus long est choisi.</li>
-    <li> une r&eacute;cursion dans l'expansion d'une macro est d&eacute;tect&eacute;e et interrompue avec envoi d'un message d'erreur.</li>
-    <li> si un argument vide est d&eacute;tect&eacute;, un avertissement est g&eacute;n&eacute;r&eacute;.</li>
-    <li> le syst&egrave;me s'efforce de g&eacute;n&eacute;rer une description pr&eacute;cise de la localisation des erreurs.</li>
-    <li> les valeurs des param&egrave;tres pr&eacute;fix&eacute;es par <code>$</code> et <code>%</code> ne sont pas &eacute;chapp&eacute;es.</li>
-    <li> les valeurs des param&egrave;tres pr&eacute;fix&eacute;es par <code>@</code> sont &eacute;chapp&eacute;es par des guillemets.</li>
-    </ul>
-
-    <p>Suppression de la d&eacute;finition d'une macro :</p>
-    <ul>
-    <li> la macro supprim&eacute;e doit avoir &eacute;t&eacute; d&eacute;finie auparavant.</li>
-    </ul>
+<section id="usage"><title>Utilisation</title>    
+<p>On d&eacute;finit une macro &agrave; l'aide des blocs <directive
+type="section">Macro</directive> qui contiennent la portion de votre
+configuration qui intervient de mani&egrave;re r&eacute;p&eacute;titive, y compris les
+variables pour les parties qui devront &ecirc;tre substitu&eacute;es.</p>
+
+<p>Par exemple, vous pouvez utiliser une macro pour d&eacute;finir un bloc
+<directive type="section">VirtualHost</directive>, afin de pouvoir
+d&eacute;finir de nombreux serveurs virtuels similaires :</p>    
 
     <highlight language="config">
-&lt;Macro DirGroup $dir $group&gt;
-  &lt;Directory $dir&gt;
-    require group $group
-  &lt;/Directory&gt;
+&lt;Macro VHost $name $domain&gt;
+&lt;VirtualHost *:80&gt;
+    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
+&lt;/VirtualHost&gt;
 &lt;/Macro&gt;
+</highlight>
 
-Use DirGroup /www/apache/private private
-Use DirGroup /www/apache/server  admin
+<p>Comme les directives de configuration httpd, les noms des macros sont
+insensibles &agrave; la casse, &agrave; la diff&eacute;rence des variables qui y sont, elles,
+sensibles.</p>
 
-UndefMacro DirGroup
+<p>Vous pouvez alors invoquer cette macro autant de fois que vous le
+voulez pour cr&eacute;er des serveurs virtuels </p>
+
+<highlight language="config">
+Use VHost example example.com
+Use VHost myhost hostname.org
+Use VHost apache apache.org
+
+UndefMacro VHost
     </highlight>
+
+<p>Au d&eacute;marrage du serveur, chacune de ces invocations
+<directive>Use</directive> sera remplac&eacute;e par une d&eacute;finition de serveur
+virtuel compl&egrave;te, comme d&eacute;crit dans la d&eacute;finition de la
+<directive>Macro</directive>.</p>
+
+<p>La directive <directive>UndefMacro</directive> permet d'&eacute;viter les
+conflits de d&eacute;finitions qui pourraient provenir de l'utilisation
+ult&eacute;rieure de macros contenant les m&ecirc;mes noms de variables.</p>
+
+<p>Vous trouverez une version plus &eacute;labor&eacute;e de cet exemple plus loin
+dans la section Exemples.</p>
+
 </section>
 
-<section id="examples"><title>Exemples</title>
+<section id="tips"><title>Conseils</title>
+
+<p>Les noms de param&egrave;tres doivent commencer par un sigil tel que
+<code>$</code>, <code>%</code>, ou <code>@</code>, de fa&ccedil;on &agrave; ce qu'ils
+soient clairement identifiables, mais aussi afin de faciliter les
+interactions avec les autres directives, comme la directive de base
+<directive module="core">Define</directive>. Dans le cas contraire, vous
+recevrez un avertissement. En tout &eacute;tat de cause, il est conseill&eacute;
+d'avoir une bonne connaissance globale de la configuration du serveur,
+afin d'&eacute;viter la r&eacute;utilisation des m&ecirc;mes variables &agrave; diff&eacute;rents niveaux,
+ce qui peut &ecirc;tre &agrave; l'origine de confusions.</p>
+
+<p>Les param&egrave;tres pr&eacute;fix&eacute;s par <code>$</code> ou <code>%</code> ne sont
+pas &eacute;chapp&eacute;s. Les param&egrave;tres pr&eacute;fix&eacute;s par <code>@</code> sont &eacute;chapp&eacute;s
+entre guillemets.</p>
+
+<p>Evitez de pr&eacute;fixer un param&egrave;tre par le nom d'un autre param&egrave;tre (par
+exemple, pr&eacute;sence simultan&eacute;e des param&egrave;tres <code>$win</code> et
+<code>$winter</code>), car ceci peut introduire de la confusion lors de
+l'&eacute;valuation des expressions. Si cela se produit, c'est le nom de
+param&egrave;tre le plus long possible qui sera utilis&eacute;.</p>
+
+<p>Si vous d&eacute;sirez ins&eacute;rer une valeur dans une cha&icirc;ne, il est conseill&eacute;
+de l'entourer d'accolades afin d'&eacute;viter toute confusion :</p>
+
+<highlight language="config">
+&lt;Macro DocRoot ${docroot}&gt;
+    DocumentRoot /var/www/${docroot}/htdocs
+&lt;/Macro&gt;
+</highlight>
+
+</section>
+
+<section id="examples">
+<title>Exemples</title>
+
+<section>
+<title>D&eacute;finition de serveurs virtuels</title>
 
 <p>Un exemple typique d'utilisation de <module>mod_macro</module> est la
 cr&eacute;ation dynamique de serveurs virtuels.</p>
@@ -122,8 +146,9 @@ cr&eacute;ation dynamique de serveurs virtuels.</p>
     ServerName $host
     DocumentRoot $dir
 
+    # Racine des documents publique
     &lt;Directory $dir&gt;
-      # directives propres au r&eacute;pertoire $dir ...
+      Require all granted
     &lt;/Directory&gt;
 
     # restriction d'acc&egrave;s au sous-r&eacute;pertoire intranet.
@@ -139,8 +164,32 @@ 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
 </highlight>
+</section> <!-- Vhosts -->
 
-</section>
+<section>
+<title>Suppression d'une d&eacute;finition de macro</title>
+
+<p>Il est recommand&eacute; de supprimer la d&eacute;finition d'une macro apr&egrave;s
+l'avoir utilis&eacute;e. Ceci permet d'&eacute;viter les confusions au sein d'un
+fichier de configuration complexe o&ugrave; des conflits entre noms de
+variables peuvent survenir.</p>
+
+<highlight language="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
+</highlight>
+
+</section> <!-- UndefMacro -->
+
+</section> <!-- Example -->
 
 <!-- Macro -->
 <directivesynopsis type="section">
@@ -233,4 +282,5 @@ UndefMacro RestrictedAccessPolicy
     </highlight>
 </usage>
 </directivesynopsis>
+
 </modulesynopsis>