2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1673945 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- $LastChangedRevision: 2015041801 $ -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <modulesynopsis metafile="mod_vhost_alias.xml.meta">
27 <name>mod_vhost_alias</name>
28 <description>Permet de configurer dynamiquement l'hébergement virtuel de
30 <status>Extension</status>
31 <sourcefile>mod_vhost_alias.c</sourcefile>
32 <identifier>vhost_alias_module</identifier>
35 <p>Ce module permet de créer des serveurs virtuels configurés
36 dynamiquement, en autorisant l'utilisation de l'adresse IP et/ou de
37 l'en-tête <code>Host:</code> de la requête HTTP comme partie du nom
38 de chemin afin de déterminer les fichiers à servir. Ceci facilite la
39 gestion d'un grand nombre de serveurs virtuels possèdant des
40 configurations similaires.</p>
42 <note><title>Note</title>
43 <p>Si les modules <module>mod_alias</module> ou
44 <module>mod_userdir</module> sont utilisés pour traduire les URIs
45 en noms de fichiers, ils l'emportent sur les directives du module
46 <module>mod_vhost_alias</module> décrites ci-dessous. Par
47 exemple, la configuration suivante fera correspondre <code>
48 /cgi-bin/script.pl</code> à <code>
49 /usr/local/apache2/cgi-bin/script.pl</code> dans tous les cas :</p>
51 <highlight language="config">
52 ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
53 VirtualScriptAlias "/never/found/%0/cgi-bin/"
58 <seealso><directive module="core">UseCanonicalName</directive></seealso>
59 <seealso><a href="../vhosts/mass.html">Configuration dynamique de
60 l'hébergement virtuel de masse</a></seealso>
62 <section id="interpol">
63 <title>Interpolation du nom de répertoire</title>
65 <p>Toutes les directives de ce module insèrent une chaîne dans un
66 nom de chemin. La chaîne insérée (que nous appellerons maintenant le
67 "nom") peux être soit le nom du serveur (voir la directive
68 <directive module="core">UseCanonicalName</directive> pour les
69 détails sur la manière dont il est déterminé), soit l'adresse IP du
70 serveur virtuel hébergé par le serveur sous la forme d'un quadruplet
71 d'octets séparés par des points. L'insertion est contrôlée par des
72 spécificateurs inspirés de <code>printf</code> et possèdant de
73 nombreux formats :</p>
76 <columnspec><column width=".2"/><column width=".6"/></columnspec>
77 <tr><td><code>%%</code></td>
78 <td>insère un <code>%</code></td></tr>
80 <tr><td><code>%p</code></td>
81 <td>insère le numéro de port du serveur virtuel</td></tr>
83 <tr><td><code>%N.M</code></td>
84 <td>insère le nom (en partie)</td></tr>
88 <p><code>N</code> et <code>M</code> permettent de spécifier des
89 sous-chaînes du nom. <code>N</code> sélectionne un des composants du
90 nom séparés par des points, et <code>M</code> sélectionne des
91 caractères à l'intérieur de ce que <code>N</code> a sélectionné.
92 <code>M</code> est optionnel et sa valeur par défaut est 0 s'il
93 n'est pas spécifié ; le point doit être présent si et seulement si
94 <code>M</code> l'est aussi. Les modes d'insertion sont les suivants
98 <columnspec><column width=".1"/><column width=".4"/></columnspec>
99 <tr><td><code>0</code></td>
100 <td>le nom en entier</td></tr>
102 <tr><td><code>1</code></td>
103 <td>la première partie</td></tr>
105 <tr><td><code>2</code></td>
106 <td>la seconde partie</td></tr>
108 <tr><td><code>-1</code></td>
109 <td>la dernière partir</td></tr>
111 <tr><td><code>-2</code></td>
112 <td>l'avant-dernière partie</td></tr>
114 <tr><td><code>2+</code></td>
115 <td>toutes les parties à partir de la seconde</td></tr>
117 <tr><td><code>-2+</code></td>
118 <td>toutes les parties jusqu'à l'avant-dernière</td></tr>
120 <tr><td><code>1+</code> et <code>-1+</code></td>
121 <td>identique à <code>0</code></td></tr>
124 <p>Si <code>N</code> ou <code>M</code> est plus grand que le nombre
125 de parties disponibles, seul un caractère de soulignement est
130 <section id="examples">
131 <title>Exemples</title>
133 <p>Pour des serveurs virtuels simples à base de nom, utilisez les
134 directives suivantes dans le fichier de configuration de votre
137 <highlight language="config">
139 VirtualDocumentRoot "/usr/local/apache/vhosts/%0"
143 <code>http://www.example.com/repertoire/fichier.html</code>
144 concernera alors la ressource
145 <code>/usr/local/apache/vhosts/www.example.com/repertoire/fichier.html</code>.
148 <p>Pour un très grand nombre de serveurs virtuels, il est avantageux
149 d'organiser les fichiers de façon à réduire la taille du répertoire
150 <code>vhosts</code>. Pour ce faire, insérez les lignes suivantes
151 dans votre fichier de configuration :</p>
153 <highlight language="config">
155 VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2"
159 <code>http://www.domaine.example.com/repertoire/fichier.html</code>
160 concernera alors la ressource
161 <code>/usr/local/apache/vhosts/example.com/d/o/m/domaine/repertoire/fichier.html</code>.</p>
163 <p>Une répartition plus régulière des fichiers peut être obtenue en
164 partant de la fin d'un composant du nom, comme dans l'exemple
167 <highlight language="config">
168 VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2"
171 <p>La requête précédente concernerait alors
172 <code>/usr/local/apache/vhosts/example.com/e/n/i/domaine/repertoire/fichier.html</code>.</p>
174 <p>Vous pouvez aussi utiliser : </p>
176 <highlight language="config">
177 VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+"
180 <p>La requête précédente concernerait alors
181 <code>/usr/local/apache/vhosts/example.com/d/o/m/aine/repertoire/fichier.html</code>.</p>
183 <p>Une demande très courante des utilisateurs concerne la possibilité de
184 faire correspondre plusieurs racines de documents à plusieurs
185 domaines, sans avoir à se préoccuper de la longueur ou du nombre de
186 parties du nom d'hôte faisant partie de la requête. Si le nom d'hôte
187 de la requête est <code>sub.www.domain.example.com</code> au lieu de
188 simplement <code>www.domain.example.com</code>, alors en utilisant
189 %3+, la racine des documents sera
190 <code>/usr/local/apache/vhosts/domain.example.com/...</code> au
191 lieu du répertoire <code>example.com</code> attendu. Dans ce genre
192 de situation, il peut s'avérer préférable d'utiliser la combinaison
193 <code>%-2.0.%-1.0</code> qui fournira toujours le nom de domaine et
194 le tld, par exemple <code>example.com</code> sans tenir compte du
195 nombre de sous-domaines ajoutés au nom d'hôte. Dans ces conditions,
196 il est possible d'élaborer une configuration qui associera les
197 sous-domaines de premier, second et troisième niveau au même
200 <highlight language="config">
201 VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0"
204 Dans l'exemple ci-dessus, <code>www.example.com</code>,
205 <code>www.sub.example.com</code> ou <code>example.com</code>
206 correspondront tous au répertoire
207 <code>/usr/local/apache/vhosts/example.com</code>.
212 <p>Pour l'hébergement virtuel à base d'adresse IP, vous pouvez
213 insérer les lignes suivantes dans votre fichier de configuration
216 <highlight language="config">
218 VirtualDocumentRootIP "/usr/local/apache/vhosts/%1/%2/%3/%4/docs"
219 VirtualScriptAliasIP "/usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin"
222 <p>Si l'adresse IP de <code>www.domaine.example.com</code> est
223 10.20.30.40, une requête pour
224 <code>http://www.domaine.example.com/repertoire/fichier.html</code>
225 concernera la ressource
226 <code>/usr/local/apache/vhosts/10/20/30/40/docs/repertoire/fichier.html</code>.
228 <code>http://www.domaine.example.com/cgi-bin/script.pl</code>
229 concernera la ressource
230 <code>/usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl</code>.</p>
232 <p>Si vous voulez insérer le caractère <code>.</code> dans une
233 directive <code>VirtualDocumentRoot</code>, et si cela crée un
234 conflit avec un spécificateur <code>%</code>, vous pouvez contourner
235 le problème de la manière suivante :</p>
237 <highlight language="config">
238 VirtualDocumentRoot "/usr/local/apache/vhosts/%2.0.%3.0"
242 <code>http://www.domaine.example.com/repertoire/fichier.html</code>
243 concernera alors la ressource
244 <code>/usr/local/apache/vhosts/domaine.exemple/repertoire/fichier.html</code>.</p>
246 <p>Les spécificateurs de format <code>%V</code> et <code>%A</code>
247 de la directive <directive
248 module="mod_log_config">LogFormat</directive> s'avèrent très utiles
249 lorsqu'ils sont utilisés en conjonction avec ce module.</p>
253 <name>VirtualDocumentRoot</name>
254 <description>Permet une configuration dynamique de la racine des
255 documents d'un serveur virtuel donné</description>
256 <syntax>VirtualDocumentRoot <em>répertoire-interpolé</em>|none</syntax>
257 <default>VirtualDocumentRoot none</default>
259 <context>server config</context>
260 <context>virtual host</context>
265 <p>La directive <directive>VirtualDocumentRoot</directive> vous
266 permet de spécifier où le serveur HTTP Apache pourra trouver vos
267 documents en se basant
268 sur le nom du serveur. Le résultat de l'expansion du
269 <em>répertoire-interpolé</em> est utilisé comme racine de
270 l'arborescence des documents d'une manière similaire à l'argument de
271 la directive <directive module="core">DocumentRoot</directive>. Si
272 <em>répertoire-interpolé</em> a pour valeur <code>none</code>, la
273 directive <directive>VirtualDocumentRoot</directive> est désactivée.
274 Cette directive ne peut pas être utilisée dans le même contexte que
275 la directive <directive
276 module="mod_vhost_alias">VirtualDocumentRootIP</directive>.</p>
278 <note type="warning"><title>Note</title>
279 La directive <directive>VirtualDocumentRoot</directive> l'emporte sur
280 toute directive <directive module="core">DocumentRoot</directive>
281 définie dans le même contexte ou dans des contextes enfants. Le fait de
282 définir une directive <directive>VirtualDocumentRoot</directive> dans le
283 contexte du serveur principal va effectivement l'emporter sur toute
284 directive <directive module="core">DocumentRoot</directive> définie dans
285 un serveur virtuel quelconque, si vous n'avez pas défini
286 <directive>VirtualDocumentRoot</directive> à <code>None</code> dans ce
294 <name>VirtualDocumentRootIP</name>
295 <description>Configuration dynamique de la racine des documents pour un
296 serveur virtuel donné</description>
297 <syntax>VirtualDocumentRootIP <em>répertoire-interpolé</em>|none</syntax>
298 <default>VirtualDocumentRootIP none</default>
300 <context>server config</context>
301 <context>virtual host</context>
306 <p>La directive <directive>VirtualDocumentRootIP</directive> est
307 identique à la directive <directive
308 module="mod_vhost_alias">VirtualDocumentRoot</directive> à l'exception
309 près qu'elle utilise l'adresse IP du serveur virtuel pour
310 l'interpolation du répertoire à la place du nom du serveur.</p>
315 <name>VirtualScriptAlias</name>
316 <description>Configuration dynamique du répertoire des scripts CGI pour
317 un serveur virtuel donné</description>
318 <syntax>VirtualScriptAlias <em>répertoire-interpolé</em>|none</syntax>
319 <default>VirtualScriptAlias none</default>
321 <context>server config</context>
322 <context>virtual host</context>
327 <p>La directive <directive>VirtualScriptAlias</directive> vous
328 permet de spécifier où Apache httpd pourra trouver les scripts CGI selon une
329 méthode similaire à celle qu'utilise la directive <directive
330 module="mod_vhost_alias">VirtualDocumentRoot</directive> pour les
331 autres documents. Elle recherche des requêtes dont l'URI commence
332 par <code>/cgi-bin/</code>, comme le ferait la directive <directive
333 module="mod_alias">ScriptAlias</directive>.</p>
339 <name>VirtualScriptAliasIP</name>
340 <description>Configuration dynamique du répertoire des scripts CGI pour
341 un serveur virtuel donné</description>
342 <syntax>VirtualScriptAliasIP <em>répertoire-interpolé</em>|none</syntax>
343 <default>VirtualScriptAliasIP none</default>
345 <context>server config</context>
346 <context>virtual host</context>
351 <p>La directive <directive>VirtualScriptAliasIP</directive> est
352 identique à la directive <directive
353 module="mod_vhost_alias">VirtualScriptAlias</directive> à
354 l'exception près qu'elle utilise l'adresse IP du serveur virtuel
355 pour l'interpolation du répertoire à la place du nom du serveur.</p>