]> 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 4f4d0aa1a7380b11603ff237111f10e939c782f9..bb45eaa84ccf9e43d363ba1ee74afbb63dfdb17a 100644 (file)
@@ -1,7 +1,9 @@
 <?xml version="1.0"?>
 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
+<!-- English Revision: 1533274:1673917 (outdated) -->
 <!-- French translation: Fabien Coelho -->
+<!-- Updated by Lucien Gentis -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
@@ -31,70 +33,151 @@ 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>
-
-    D&eacute;finition d'une macro :
-    <ul>
-    <li> dans une section &lt;Macro&gt; au style homog&egrave;ne &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 nich&eacute;es les unes dans les autres...</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 '<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;e avec des caract&egrave;res coll&eacute;s autour,
-         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 nich&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 hypoth&egrave;se 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>
-
-    Utilisation d'une macro:
-    <ul>
-    <li> le nombre d'argument doit &ecirc;tre coh&eacute;rent avec la d&eacute;finition.</li>
-    <li> toutes les occurences des param&egrave;tres sont substitu&eacute;s par leur valeur.</li>
-    <li> en cas de conflit, le nom le plus long est choisit.</li>
-    <li> une r&eacute;cursion dans l'expansion d'une macro est d&eacute;tect&eacute;e et arr&ecirc;t&eacute;e avec une erreur.</li>
-    <li> les arguments vides g&eacute;n&egrave;rent un avertissement si ils sont utilis&eacute;s.</li>
-    <li> le syst&egrave;me g&eacute;n&egrave;re une description tr&egrave;s pr&eacute;cise de la localisation des erreurs.</li>
-    <li> les valeurs des param&egrave;tres pr&eacute;fix&eacute;s par <code>$</code> et <code>%</code> ne sont pas prot&eacute;g&eacute;s.</li>
-    <li> les valeurs des param&egrave;tres pr&eacute;fix&eacute;s par <code>@</code> sont prot&eacute;g&eacute;s par des guillemets.</li>
-    </ul>
-
-    Effacement de la d&eacute;finition d'une macro :
-    <ul>
-    <li> la macro effac&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 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>
+
+<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>
+
+<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="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>
+
+<highlight language="config">
+## D&eacute;finition d'une macro VHost pour les configurations r&eacute;p&eacute;titives
+
+&lt;Macro VHost $host $port $dir&gt;
+  Listen $port
+  &lt;VirtualHost *:$port&gt;
+
+    ServerName $host
+    DocumentRoot $dir
+
+    # Racine des documents publique
+    &lt;Directory $dir&gt;
+      Require all granted
+    &lt;/Directory&gt;
+
+    # restriction d'acc&egrave;s au sous-r&eacute;pertoire intranet.
+    &lt;Directory $dir/intranet&gt;
+      Require ip 10.0.0.0/8
+    &lt;/Directory&gt;
+  &lt;/VirtualHost&gt;
+&lt;/Macro&gt;
+
+## Utilisation de la macro VHost avec diff&eacute;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
+</highlight>
+</section> <!-- Vhosts -->
+
+<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
+    Require group $group
   &lt;/Directory&gt;
 &lt;/Macro&gt;
 
@@ -102,8 +185,11 @@ Use DirGroup /www/apache/private private
 Use DirGroup /www/apache/server  admin
 
 UndefMacro DirGroup
-    </highlight>
-</section>
+</highlight>
+
+</section> <!-- UndefMacro -->
+
+</section> <!-- Example -->
 
 <!-- Macro -->
 <directivesynopsis type="section">
@@ -119,24 +205,21 @@ UndefMacro DirGroup
 </contextlist>
 
 <usage>
-    <p>La diretive <directive>Macro</directive> permet de d&eacute;finir une macro
+    <p>La directive <directive>Macro</directive> permet de d&eacute;finir une macro
     dans un fichier de configuration Apache. Le premier argument est le nom
-    de la macro, et les arguments suivants sont les noms des param&egrave;tres. Il
+    de la macro, et les arguments suivants sont les param&egrave;tres. Il
     est de bon aloi de pr&eacute;fixer les noms des param&egrave;tres d'une macro
-    avec un caract&egrave;re parmi '<code>$%@</code>'.
+    avec un caract&egrave;re parmi '<code>$%@</code>', et d'&eacute;viter d'en faire
+    de m&ecirc;me avec les noms de macros.
     </p>
 
     <highlight language="config">
 &lt;Macro LocalAccessPolicy&gt;
-  order deny,allow
-  deny from all
-  allow from 10.2.16.0/24
+  Require ip 10.2.16.0/24
 &lt;/Macro&gt;
 
 &lt;Macro RestrictedAccessPolicy $ipnumbers&gt;
-   order deny,allow
-   deny from all
-   allow from $ipnumbers
+   Require ip $ipnumbers
 &lt;/Macro&gt;
     </highlight>
 </usage>
@@ -145,7 +228,7 @@ UndefMacro DirGroup
 <!-- Use -->
 <directivesynopsis>
 <name>Use</name>
-<description>Utilisune macro</description>
+<description>Utilisation d'une macro</description>
 <syntax>Use <var>nom</var> [<var>valeur1</var> ... <var>valeurN</var>]
 </syntax>
 <contextlist>
@@ -156,9 +239,10 @@ UndefMacro DirGroup
 
 <usage>
     <p> La directive <directive>Use</directive> permet d'utiliser une macro.
-    La macro est expans&eacute;e. Elle doit avoir le m&ecirc;me nombre d'argument que le
+    La macro consid&eacute;r&eacute;e est expans&eacute;e. Son nombre d'arguments doit &ecirc;tre &eacute;gal au
     nombre de param&egrave;tres pr&eacute;cis&eacute;s dans sa d&eacute;finition. Les valeurs pass&eacute;es en
-    argument sont substitu&eacute;es avant l'interpr&eacute;tation du texte de la macro.</p>
+    argument sont attribu&eacute;es aux param&egrave;tres correspondants et
+    substitu&eacute;es avant l'interpr&eacute;tation du texte de la macro.</p>
 
     <highlight language="config">
 Use LocalAccessPolicy
@@ -166,16 +250,12 @@ Use LocalAccessPolicy
 Use RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"
     </highlight>
 
-    est &eacute;quivalent, avec les macros d&eacute;finies au dessus, &agrave; :
+    <p>est &eacute;quivalent, avec les macros d&eacute;finies ci-dessus &agrave; :</p>
 
     <highlight language="config">
-order deny,allow
-deny from all
-allow from 10.2.16.0/24
+Require ip 10.2.16.0/24
 ...
-order deny,allow
-deny from all
-allow from 192.54.172.0/24 192.54.148.0/24
+Require ip 192.54.172.0/24 192.54.148.0/24
     </highlight>
 </usage>
 </directivesynopsis>
@@ -183,7 +263,7 @@ allow from 192.54.172.0/24 192.54.148.0/24
 <!-- UndefMacro -->
 <directivesynopsis>
 <name>undefMacro</name>
-<description>Efface une macro</description>
+<description>Supprime une macro</description>
 
 <syntax>UndefMacro <var>nom</var></syntax>
 <contextlist>
@@ -193,8 +273,8 @@ allow from 192.54.172.0/24 192.54.148.0/24
 </contextlist>
 
 <usage>
-    <p>La directive <directive>UndefMacro</directive> efface la d&eacute;finition
-    d'une macro, qui doit avoir &eacute;t&eacute; d&eacute;finie auparavant.</p>
+    <p>La directive <directive>UndefMacro</directive> annule la d&eacute;finition
+    d'une macro qui doit avoir &eacute;t&eacute; d&eacute;finie auparavant.</p>
 
     <highlight language="config">
 UndefMacro LocalAccessPolicy
@@ -202,4 +282,5 @@ UndefMacro RestrictedAccessPolicy
     </highlight>
 </usage>
 </directivesynopsis>
+
 </modulesynopsis>