blob: 7ccf03727ec66c5e05f870159730ec9e1ecf5f9a [file] [log] [blame]
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1673945 -->
<!-- French translation : Lucien GENTIS -->
<!-- $LastChangedRevision: 2015041801 $ -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<modulesynopsis metafile="mod_vhost_alias.xml.meta">
<name>mod_vhost_alias</name>
<description>Permet de configurer dynamiquement l'hébergement virtuel de
masse</description>
<status>Extension</status>
<sourcefile>mod_vhost_alias.c</sourcefile>
<identifier>vhost_alias_module</identifier>
<summary>
<p>Ce module permet de créer des serveurs virtuels configurés
dynamiquement, en autorisant l'utilisation de l'adresse IP et/ou de
l'en-tête <code>Host:</code> de la requête HTTP comme partie du nom
de chemin afin de déterminer les fichiers à servir. Ceci facilite la
gestion d'un grand nombre de serveurs virtuels possèdant des
configurations similaires.</p>
<note><title>Note</title>
<p>Si les modules <module>mod_alias</module> ou
<module>mod_userdir</module> sont utilisés pour traduire les URIs
en noms de fichiers, ils l'emportent sur les directives du module
<module>mod_vhost_alias</module> décrites ci-dessous. Par
exemple, la configuration suivante fera correspondre <code>
/cgi-bin/script.pl</code> à <code>
/usr/local/apache2/cgi-bin/script.pl</code> dans tous les cas :</p>
<highlight language="config">
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
VirtualScriptAlias "/never/found/%0/cgi-bin/"
</highlight>
</note>
</summary>
<seealso><directive module="core">UseCanonicalName</directive></seealso>
<seealso><a href="../vhosts/mass.html">Configuration dynamique de
l'hébergement virtuel de masse</a></seealso>
<section id="interpol">
<title>Interpolation du nom de répertoire</title>
<p>Toutes les directives de ce module insèrent une chaîne dans un
nom de chemin. La chaîne insérée (que nous appellerons maintenant le
"nom") peux être soit le nom du serveur (voir la directive
<directive module="core">UseCanonicalName</directive> pour les
détails sur la manière dont il est déterminé), soit l'adresse IP du
serveur virtuel hébergé par le serveur sous la forme d'un quadruplet
d'octets séparés par des points. L'insertion est contrôlée par des
spécificateurs inspirés de <code>printf</code> et possèdant de
nombreux formats :</p>
<table>
<columnspec><column width=".2"/><column width=".6"/></columnspec>
<tr><td><code>%%</code></td>
<td>insère un <code>%</code></td></tr>
<tr><td><code>%p</code></td>
<td>insère le numéro de port du serveur virtuel</td></tr>
<tr><td><code>%N.M</code></td>
<td>insère le nom (en partie)</td></tr>
</table>
<p><code>N</code> et <code>M</code> permettent de spécifier des
sous-chaînes du nom. <code>N</code> sélectionne un des composants du
nom séparés par des points, et <code>M</code> sélectionne des
caractères à l'intérieur de ce que <code>N</code> a sélectionné.
<code>M</code> est optionnel et sa valeur par défaut est 0 s'il
n'est pas spécifié ; le point doit être présent si et seulement si
<code>M</code> l'est aussi. Les modes d'insertion sont les suivants
:</p>
<table>
<columnspec><column width=".1"/><column width=".4"/></columnspec>
<tr><td><code>0</code></td>
<td>le nom en entier</td></tr>
<tr><td><code>1</code></td>
<td>la première partie</td></tr>
<tr><td><code>2</code></td>
<td>la seconde partie</td></tr>
<tr><td><code>-1</code></td>
<td>la dernière partir</td></tr>
<tr><td><code>-2</code></td>
<td>l'avant-dernière partie</td></tr>
<tr><td><code>2+</code></td>
<td>toutes les parties à partir de la seconde</td></tr>
<tr><td><code>-2+</code></td>
<td>toutes les parties jusqu'à l'avant-dernière</td></tr>
<tr><td><code>1+</code> et <code>-1+</code></td>
<td>identique à <code>0</code></td></tr>
</table>
<p>Si <code>N</code> ou <code>M</code> est plus grand que le nombre
de parties disponibles, seul un caractère de soulignement est
inséré.</p>
</section>
<section id="examples">
<title>Exemples</title>
<p>Pour des serveurs virtuels simples à base de nom, utilisez les
directives suivantes dans le fichier de configuration de votre
serveur :</p>
<highlight language="config">
UseCanonicalName Off
VirtualDocumentRoot "/usr/local/apache/vhosts/%0"
</highlight>
<p>Une requête pour
<code>http://www.example.com/repertoire/fichier.html</code>
concernera alors la ressource
<code>/usr/local/apache/vhosts/www.example.com/repertoire/fichier.html</code>.
</p>
<p>Pour un très grand nombre de serveurs virtuels, il est avantageux
d'organiser les fichiers de façon à réduire la taille du répertoire
<code>vhosts</code>. Pour ce faire, insérez les lignes suivantes
dans votre fichier de configuration :</p>
<highlight language="config">
UseCanonicalName Off
VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2"
</highlight>
<p>Une requête pour
<code>http://www.domaine.example.com/repertoire/fichier.html</code>
concernera alors la ressource
<code>/usr/local/apache/vhosts/example.com/d/o/m/domaine/repertoire/fichier.html</code>.</p>
<p>Une répartition plus régulière des fichiers peut être obtenue en
partant de la fin d'un composant du nom, comme dans l'exemple
suivant :</p>
<highlight language="config">
VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2"
</highlight>
<p>La requête précédente concernerait alors
<code>/usr/local/apache/vhosts/example.com/e/n/i/domaine/repertoire/fichier.html</code>.</p>
<p>Vous pouvez aussi utiliser : </p>
<highlight language="config">
VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+"
</highlight>
<p>La requête précédente concernerait alors
<code>/usr/local/apache/vhosts/example.com/d/o/m/aine/repertoire/fichier.html</code>.</p>
<p>Une demande très courante des utilisateurs concerne la possibilité de
faire correspondre plusieurs racines de documents à plusieurs
domaines, sans avoir à se préoccuper de la longueur ou du nombre de
parties du nom d'hôte faisant partie de la requête. Si le nom d'hôte
de la requête est <code>sub.www.domain.example.com</code> au lieu de
simplement <code>www.domain.example.com</code>, alors en utilisant
%3+, la racine des documents sera
<code>/usr/local/apache/vhosts/domain.example.com/...</code> au
lieu du répertoire <code>example.com</code> attendu. Dans ce genre
de situation, il peut s'avérer préférable d'utiliser la combinaison
<code>%-2.0.%-1.0</code> qui fournira toujours le nom de domaine et
le tld, par exemple <code>example.com</code> sans tenir compte du
nombre de sous-domaines ajoutés au nom d'hôte. Dans ces conditions,
il est possible d'élaborer une configuration qui associera les
sous-domaines de premier, second et troisième niveau au même
répertoire :
</p>
<highlight language="config">
VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0"
</highlight>
<p>
Dans l'exemple ci-dessus, <code>www.example.com</code>,
<code>www.sub.example.com</code> ou <code>example.com</code>
correspondront tous au répertoire
<code>/usr/local/apache/vhosts/example.com</code>.
</p>
<p>Pour l'hébergement virtuel à base d'adresse IP, vous pouvez
insérer les lignes suivantes dans votre fichier de configuration
:</p>
<highlight language="config">
UseCanonicalName DNS
VirtualDocumentRootIP "/usr/local/apache/vhosts/%1/%2/%3/%4/docs"
VirtualScriptAliasIP "/usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin"
</highlight>
<p>Si l'adresse IP de <code>www.domaine.example.com</code> est
10.20.30.40, une requête pour
<code>http://www.domaine.example.com/repertoire/fichier.html</code>
concernera la ressource
<code>/usr/local/apache/vhosts/10/20/30/40/docs/repertoire/fichier.html</code>.
Une requête pour
<code>http://www.domaine.example.com/cgi-bin/script.pl</code>
concernera la ressource
<code>/usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl</code>.</p>
<p>Si vous voulez insérer le caractère <code>.</code> dans une
directive <code>VirtualDocumentRoot</code>, et si cela crée un
conflit avec un spécificateur <code>%</code>, vous pouvez contourner
le problème de la manière suivante :</p>
<highlight language="config">
VirtualDocumentRoot "/usr/local/apache/vhosts/%2.0.%3.0"
</highlight>
<p>Une requête pour
<code>http://www.domaine.example.com/repertoire/fichier.html</code>
concernera alors la ressource
<code>/usr/local/apache/vhosts/domaine.exemple/repertoire/fichier.html</code>.</p>
<p>Les spécificateurs de format <code>%V</code> et <code>%A</code>
de la directive <directive
module="mod_log_config">LogFormat</directive> s'avèrent très utiles
lorsqu'ils sont utilisés en conjonction avec ce module.</p>
</section>
<directivesynopsis>
<name>VirtualDocumentRoot</name>
<description>Permet une configuration dynamique de la racine des
documents d'un serveur virtuel donné</description>
<syntax>VirtualDocumentRoot <em>répertoire-interpolé</em>|none</syntax>
<default>VirtualDocumentRoot none</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
</contextlist>
<usage>
<p>La directive <directive>VirtualDocumentRoot</directive> vous
permet de spécifier où le serveur HTTP Apache pourra trouver vos
documents en se basant
sur le nom du serveur. Le résultat de l'expansion du
<em>répertoire-interpolé</em> est utilisé comme racine de
l'arborescence des documents d'une manière similaire à l'argument de
la directive <directive module="core">DocumentRoot</directive>. Si
<em>répertoire-interpolé</em> a pour valeur <code>none</code>, la
directive <directive>VirtualDocumentRoot</directive> est désactivée.
Cette directive ne peut pas être utilisée dans le même contexte que
la directive <directive
module="mod_vhost_alias">VirtualDocumentRootIP</directive>.</p>
<note type="warning"><title>Note</title>
La directive <directive>VirtualDocumentRoot</directive> l'emporte sur
toute directive <directive module="core">DocumentRoot</directive>
définie dans le même contexte ou dans des contextes enfants. Le fait de
définir une directive <directive>VirtualDocumentRoot</directive> dans le
contexte du serveur principal va effectivement l'emporter sur toute
directive <directive module="core">DocumentRoot</directive> définie dans
un serveur virtuel quelconque, si vous n'avez pas défini
<directive>VirtualDocumentRoot</directive> à <code>None</code> dans ce
serveur virtuel.
</note>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>VirtualDocumentRootIP</name>
<description>Configuration dynamique de la racine des documents pour un
serveur virtuel donné</description>
<syntax>VirtualDocumentRootIP <em>répertoire-interpolé</em>|none</syntax>
<default>VirtualDocumentRootIP none</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
</contextlist>
<usage>
<p>La directive <directive>VirtualDocumentRootIP</directive> est
identique à la directive <directive
module="mod_vhost_alias">VirtualDocumentRoot</directive> à l'exception
près qu'elle utilise l'adresse IP du serveur virtuel pour
l'interpolation du répertoire à la place du nom du serveur.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>VirtualScriptAlias</name>
<description>Configuration dynamique du répertoire des scripts CGI pour
un serveur virtuel donné</description>
<syntax>VirtualScriptAlias <em>répertoire-interpolé</em>|none</syntax>
<default>VirtualScriptAlias none</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
</contextlist>
<usage>
<p>La directive <directive>VirtualScriptAlias</directive> vous
permet de spécifier où Apache httpd pourra trouver les scripts CGI selon une
méthode similaire à celle qu'utilise la directive <directive
module="mod_vhost_alias">VirtualDocumentRoot</directive> pour les
autres documents. Elle recherche des requêtes dont l'URI commence
par <code>/cgi-bin/</code>, comme le ferait la directive <directive
module="mod_alias">ScriptAlias</directive>.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>VirtualScriptAliasIP</name>
<description>Configuration dynamique du répertoire des scripts CGI pour
un serveur virtuel donné</description>
<syntax>VirtualScriptAliasIP <em>répertoire-interpolé</em>|none</syntax>
<default>VirtualScriptAliasIP none</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
</contextlist>
<usage>
<p>La directive <directive>VirtualScriptAliasIP</directive> est
identique à la directive <directive
module="mod_vhost_alias">VirtualScriptAlias</directive> à
l'exception près qu'elle utilise l'adresse IP du serveur virtuel
pour l'interpolation du répertoire à la place du nom du serveur.</p>
</usage>
</directivesynopsis>
</modulesynopsis>