<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
-<!-- English Revision: 1301742:1334033 (outdated) -->
+<!-- English Revision : 1334033 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<p>Par exemple, pour faire en sorte que le serveur accepte des connexions
sur les ports 80 et 8000, sur toutes les interfaces, utilisez :</p>
- <example>
- Listen 80<br />
- Listen 8000
- </example>
+ <highlight language="config">
+Listen 80
+Listen 8000
+ </highlight>
<p>Pour faire en sorte que le serveur accepte des connexions sur le port 80
pour une interface, et sur le port 8000 pour une
autre interface, utilisez :</p>
- <example>
- Listen 192.0.2.1:80<br />
- Listen 192.0.2.5:8000
- </example>
+ <highlight language="config">
+Listen 192.0.2.1:80
+Listen 192.0.2.5:8000
+ </highlight>
<p>Les adresses IPv6 doivent être mises entre crochets, comme dans
l'exemple suivant :</p>
- <example>
+ <highlight language="config">
Listen [2001:db8::a00:20ff:fea7:ccea]:80
- </example>
+ </highlight>
<note type="warning"><p>Des directives <directive
module="mpm_common">Listen</directive>
<directive module="mpm_common">Listen</directive>, comme dans l'exemple
suivant :</p>
- <example>
- Listen 0.0.0.0:80<br />
- Listen 192.0.2.1:80
- </example>
+ <highlight language="config">
+Listen 0.0.0.0:80
+Listen 192.0.2.1:80
+ </highlight>
<p>Si votre plateforme le supporte et si vous souhaitez que httpd gère
des connexions IPv4 et IPv6 sur des points de connexion séparés
des ports non standards. Par exemple, pour travailler en
<code>https</code> sur le port 8443 :</p>
- <example>
+ <highlight language="config">
Listen 192.170.2.1:8443 https
- </example>
+ </highlight>
</section>
<section id="virtualhost">
<?xml-stylesheet type="text/xsl" href="style/manual.fr.xsl"?>
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
-<!-- English Revision: 1291841:1334033 (outdated) -->
+<!-- English Revision : 1334033 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<p>En général, le module se configure comme suit :</p>
- <example>
-CacheRoot /var/cache/apache/<br />
-CacheEnable disk /<br />
-CacheDirLevels 2<br />
+ <highlight language="config">
+CacheRoot "/var/cache/apache/"
+CacheEnable disk /
+CacheDirLevels 2
CacheDirLength 1
- </example>
+ </highlight>
<p>Il est important de savoir que, les fichiers mis en cache étant stockés
localement, la mise en cache par l'intermédiaire du système d'exploitation
réutiliser le descripteur de fichier mis en cache pour tous les
accès futurs à ce fichier.</p>
- <example>
+ <highlight language="config">
CacheFile /usr/local/apache2/htdocs/index.html
- </example>
+ </highlight>
<p>Si vous désirez mettre en cache un grand nombre de fichiers
de cette manière, vous devez vous assurer que le nombre maximal
utilisera le contenu chargé en mémoire pour satisfaire ultérieurement
toutes les demandes d'accès à ce fichier.</p>
- <example>
+ <highlight language="config">
MMapFile /usr/local/apache2/htdocs/index.html
- </example>
+ </highlight>
<p>Comme dans le cas de la directive
<directive module="mod_file_cache">CacheFile</directive>, toute
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
-<!-- English Revision: 1187986:1334033 (outdated) -->
+<!-- English Revision : 1334033 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
.htaccess si <directive module="core">AllowOverride</directive> est
définie à FileInfo.</p>
- <example>
- ErrorDocument 500 "Désolé, notre script s'est crashé ; comme c'est
- dommage !"<br />
- ErrorDocument 500 /cgi-bin/crash-recover<br />
- ErrorDocument 500 http://erreur.example.com/erreur_serveur.html<br />
- ErrorDocument 404 /erreurs/non_trouve.html <br />
- ErrorDocument 401 /inscription/comment_s_inscrire.html
- </example>
+ <highlight language="config">
+ErrorDocument 500 "Désolé, notre script s'est
+crashé ; comme c'est dommage !"<br />
+ErrorDocument 500 /cgi-bin/crash-recover<br />
+ErrorDocument 500 http://error.example.com/server_error.html<br />
+ErrorDocument 404 /errors/not_found.html <br />
+ErrorDocument 401 /subscription/how_to_subscribe.html
+ </highlight>
<p>La syntaxe de la directive <code>ErrorDocument</code> est :</p>
- <example>
+ <highlight language="config">
ErrorDocument <code_3_chiffres> <action>
- </example>
+ </highlight>
<p>où action peut être traitée comme :</p>
<ol>
<li>Une URL de redirection local (si l'action commence par un "/").</li>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
-<!-- English Revision: 1300911:1334033 (outdated) -->
+<!-- English Revision : 1330883-->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<module>mod_setenvif</module> et <module>mod_header</module>,
et permettant de prendre en compte ces en-têtes :</p>
-<example>
-# <br />
+<highlight language="config">
# L'exemple suivant montre comment prendre en compte un en-tête<br />
-# Accept_Encoding non conforme envoyé par un client.<br />
-#<br />
-SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1<br />
+# Accept_Encoding non conforme envoyé par un client.
+#
+SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1
RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding
-</example>
+</highlight>
</section>
httpd.conf pour tenir compte de problèmes connus avec certains clients.
Comme les clients concernés sont maintenant très peu utilisés, cet
ajout n'est pratiquement plus nécessaire.</p>
-<example>
-#<br />
-# The following directives modify normal HTTP response behavior.<br />
-# The first directive disables keepalive for Netscape 2.x and browsers that<br />
-# spoof it. There are known problems with these browser implementations.<br />
-# The second directive is for Microsoft Internet Explorer 4.0b2<br />
-# which has a broken HTTP/1.1 implementation and does not properly<br />
-# support keepalive when it is used on 301 or 302 (redirect) responses.<br />
-#<br />
-BrowserMatch "Mozilla/2" nokeepalive<br />
-BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0<br />
-<br />
-#<br />
-# The following directive disables HTTP/1.1 responses to browsers which<br />
-# are in violation of the HTTP/1.0 spec by not being able to grok a<br />
-# basic 1.1 response.<br />
-#<br />
-BrowserMatch "RealPlayer 4\.0" force-response-1.0<br />
-BrowserMatch "Java/1\.0" force-response-1.0<br />
+<highlight language="config">
+#
+# The following directives modify normal HTTP response behavior.
+# The first directive disables keepalive for Netscape 2.x and browsers that
+# spoof it. There are known problems with these browser implementations.
+# The second directive is for Microsoft Internet Explorer 4.0b2
+# which has a broken HTTP/1.1 implementation and does not properly
+# support keepalive when it is used on 301 or 302 (redirect) responses.
+#
+BrowserMatch "Mozilla/2" nokeepalive
+BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+
+#
+# The following directive disables HTTP/1.1 responses to browsers which
+# are in violation of the HTTP/1.0 spec by not being able to grok a
+# basic 1.1 response.
+#
+BrowserMatch "RealPlayer 4\.0" force-response-1.0
+BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
-</example>
+</highlight>
</section>
<section id="no-img-log">
dans le fichier de trace des accès. Il peut être facilement adapté pour
empêcher le traçage de répertoires particuliers, ou de requêtes
en provenance de certains hôtes.</p>
- <example>
- SetEnvIf Request_URI \.gif image-request<br />
- SetEnvIf Request_URI \.jpg image-request<br />
- SetEnvIf Request_URI \.png image-request<br />
- CustomLog logs/access_log common env=!image-request
- </example>
+ <highlight language="config">
+SetEnvIf Request_URI \.gif image-request
+SetEnvIf Request_URI \.jpg image-request
+SetEnvIf Request_URI \.png image-request
+CustomLog logs/access_log common env=!image-request
+ </highlight>
</section>
<section id="image-theft">
recommandée, mais elle peut fonctionner dans des circonstances bien
définies. Nous supposons que toutes vos images sont enregistrées dans
un répertoire nommé <code>/web/images</code>.</p>
- <example>
- SetEnvIf Referer "^http://www\.example\.com/" local_referal<br />
- # Allow browsers that do not send Referer info<br />
- SetEnvIf Referer "^$" local_referal<br />
- <Directory /web/images><br />
- <indent>
- Order Deny,Allow<br />
- Deny from all<br />
- Allow from env=local_referal
- </indent>
- </Directory>
- </example>
+ <highlight language="config">
+SetEnvIf Referer "^http://www\.example\.com/" local_referal
+# Autorise les navigateurs qui n'envoient aucune information de Referer
+SetEnvIf Referer "^$" local_referal
+<Directory /web/images>
+ Order Deny,Allow
+ Deny from all
+ Allow from env=local_referal
+</Directory>
+ </highlight>
<p>Pour plus d'informations sur cette technique, voir le tutoriel sur
ServerWatch
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
-<!-- English Revision: 1174747:1334033 (outdated) -->
+<!-- English Revision: 1334033 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
des fichiers possédant une extension <code>html</code> déclenchent
l'exécution du script CGI <code>footer.pl</code>.</p>
- <example>
- Action add-footer /cgi-bin/footer.pl<br/>
- AddHandler add-footer .html
- </example>
+ <highlight language="config">
+Action add-footer /cgi-bin/footer.pl
+AddHandler add-footer .html
+ </highlight>
<p>À ce moment-là, le script CGI se charge d'envoyer le document
initialement demandé (référencé par la variable d'environnement
<code>send-as-is</code>, sans tenir compte de l'extension
de leur nom de fichier.</p>
- <example>
- <Directory /web/htdocs/asis><br/>
- SetHandler send-as-is<br/>
- </Directory>
- </example>
+ <highlight language="config">
+<Directory /web/htdocs/asis>
+ SetHandler send-as-is
+</Directory>
+ </highlight>
</section>
</section>
Plus précisément, un nouvel enregistrement a été ajouté à la structure
<code>request_rec</code> :</p>
- <example>
+ <highlight language="c">
char *handler
- </example>
+ </highlight>
<p>Si vous voulez que votre module déclenche l'utilisation d'un
gestionnaire, il vous suffit de définir <code>r->handler</code> avec
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
-<!-- English Revision: 1300911:1337469 (outdated) -->
+<!-- English Revision : 1337469 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
un autre site si le serveur est démarré en utilisant la ligne de commande :
<code>httpd -DClosedForNow</code>:</p>
-<example>
-<IfDefine ClosedForNow><br />
-Redirect / http://otherserver.example.com/<br />
+<highlight language="config">
+<IfDefine ClosedForNow>
+ Redirect / http://otherserver.example.com/
</IfDefine>
-</example>
+</highlight>
<p>Le conteneur <directive type="section" module="core">IfModule</directive>
est similaire; les directives qu'il contient ne s'appliqueront que si
module="mod_mime_magic">MimeMagicFile</directive> ne s'appliquera que si le
module <module>mod_mime_magic</module> est disponible.</p>
-<example>
-<IfModule mod_mime_magic.c><br />
-MimeMagicFile conf/magic<br />
+<highlight language="config">
+<IfModule mod_mime_magic.c>
+ MimeMagicFile conf/magic
</IfModule>
-</example>
+</highlight>
<p>Le conteneur
<directive type="section" module="mod_version">IfVersion</directive>
et les grands réseaux qui doivent prendre en compte différentes versions
et configurations de httpd.</p>
-<example>
- <IfVersion >= 2.1><br />
- <indent>
+<highlight language="config">
+<IfVersion >= 2.4>
# les directives situées ici ne s'appliquent que si la version <br />
- # est supérieure ou égale à 2.1.0.<br />
- </indent>
- </IfVersion>
-</example>
+ # est supérieure ou égale à 2.4.0.
+</IfVersion>
+</highlight>
<p><directive type="section" module="core">IfDefine</directive>,
<directive type="section" module="core">IfModule</directive>, et
configuration suivante, l'indexation sera activée pour le répertoire
<code>/var/web/dir1</code> et tous ses sous-répertoires.</p>
-<example>
-<Directory /var/web/dir1><br />
-Options +Indexes<br />
+<highlight language="config">
+<Directory /var/web/dir1>
+ Options +Indexes
</Directory>
-</example>
+</highlight>
<p>Les directives contenues dans une section <directive type="section"
module="core">Files</directive> s'appliquent à tout fichier
l'accès à tout fichier nommé <code>private.html</code> quel que soit
l'endroit où il se trouve.</p>
-<example>
-<Files private.html><br />
-Order allow,deny<br />
-Deny from all<br />
+<highlight language="config">
+<Files private.html>
+ Require all denied
</Files>
-</example>
+</highlight>
<p>Pour faire référence à des fichiers qui se trouvent en des points
particuliers du système de fichiers, les sections
<code>private.html</code> qui se trouve dans l'arborescence
<code>/var/web/dir1/</code>.</p>
-<example>
-<Directory /var/web/dir1><br />
-<Files private.html><br />
-Order allow,deny<br />
-Deny from all<br />
-</Files><br />
+<highlight language="config">
+<Directory /var/web/dir1>
+ <Files private.html>
+ Require all denied
+ </Files>
</Directory>
-</example>
+</highlight>
</section>
<section id="webspace"><title>Conteneurs de l'arborescence du site web</title>
<code>http://yoursite.example.com/private/dir/file.html</code> ainsi qu'à
toute requête commençant par la chaîne de caractères <code>/private</code>.</p>
-<example>
-<LocationMatch ^/private><br />
-Order Allow,Deny<br />
-Deny from all<br />
+<highlight language="config">
+<LocationMatch ^/private>
+ Require all denied
</Location>
-</example>
+</highlight>
<p>Le conteneur <directive type="section" module="core">Location</directive>
n'a pas besoin de faire référence à un élément du système de fichiers.
Il n'est pas nécessaire de trouver un fichier nommé <code>server-status</code>
dans le système de fichiers.</p>
-<example>
-<Location /server-status><br />
-SetHandler server-status<br />
+<highlight language="config">
+<Location /server-status>
+ SetHandler server-status
</Location>
-</example>
+</highlight>
</section>
<section id="overlapping-webspace"><title>Espace web imbriqué</title>
dans lequel certaines sections ou directives sont évaluées. Pour
<directive type="section" module="core">Location</directive>, on doit
avoir :</p>
-<example>
-<Location /foo><br />
-</Location><br />
-<Location /foo/bar><br />
+<highlight language="config">
+<Location /foo>
+</Location>
+<Location /foo/bar>
</Location>
-</example>
+</highlight>
<p>Les directives <directive type="section"
module="mod_alias">Alias</directive>, quant à elles, sont évaluées vice-versa :</p>
-<example>
-Alias /foo/bar /srv/www/uncommon/bar<br />
-Alias /foo /srv/www/common/foo<br />
-</example>
+<highlight language="config">
+Alias /foo/bar /srv/www/uncommon/bar
+Alias /foo /srv/www/common/foo
+</highlight>
<p>Ceci est aussi vrai pour les directives <directive
module="mod_proxy">ProxyPass</directive> :</p>
-<example>
-ProxyPass /special-area http://special.example.com smax=5 max=10<br />
+<highlight language="config">
+ProxyPass /special-area http://special.example.com smax=5 max=10
ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=On
-</example>
+</highlight>
</section>
mais sans utiliser
les expressions rationnelles pourrait ressembler à ceci :</p>
-<example>
-<Directory /home/*/public_html><br />
-Options Indexes<br />
+<highlight language="config">
+<Directory /home/*/public_html>
+ Options Indexes
</Directory>
-</example>
+</highlight>
<p>Avec les conteneurs utilisant les expressions rationnelles,
on peut interdire l'accès à de nombreux types de fichiers d'images
simultanément :</p>
-<example>
-<FilesMatch \.(?i:gif|jpe?g|png)$><br />
-Order allow,deny<br />
-Deny from all<br />
+<highlight language="config">
++<FilesMatch \.(?i:gif|jpe?g|png)$>
+ Require all denied
</FilesMatch>
-</example>
+</highlight>
</section>
être définie sous la forme d'une expression booléenne. Dans l'exemple
suivant, l'accès est interdit si l'en-tête HTTP Referer ne commence pas
par "http://www.example.com/".</p>
-<example>
-<If "!(%{HTTP_REFERER} -strmatch 'http://www.example.com/*')"><br />
-Require all denied<br />
+<highlight language="config">
+<If "!(%{HTTP_REFERER} -strmatch 'http://www.example.com/*')">
+ Require all denied
</If>
-</example>
+</highlight>
</section>
du système de fichier, ce qui peut permettre de contourner vos restrictions.
Par exemple, imaginez la configuration suivante :</p>
-<example>
-<Location /dir/><br />
-Order allow,deny<br />
-Deny from all<br />
+<highlight language="config">
+<Location /dir/>
+ Require all denied
</Location>
-</example>
+</highlight>
<p>Elle fonctionne correctement si la requête appelle
<code>http://yoursite.example.com/dir/</code>. Mais que va-t-il se passer si
va interdire l'utilisation du serveur proxy pour accéder au site
<code>www.example.com</code>.</p>
-<example>
-<Proxy http://www.example.com/*><br />
-Order allow,deny<br />
-Deny from all<br />
+<highlight language="config">
+<Proxy http://www.example.com/*>
+ Require all granted
</Proxy>
-</example>
+</highlight>
</section>
<section id="whatwhere"><title>Quelles sont les directives autorisées ?</title>
</ul>
</section>
-<section id="mergin"><title>Comment les sections sont combinées entre elles</title>
+<section id="merging"><title>Comment les sections sont combinées entre elles</title>
<p>Les sections de configuration sont appliquées dans un ordre très particulier.
Il est important de savoir comment cet ordre est défini car il peut avoir
cet exemple seront appliquées dans l'ordre suivant : A > B > C > D >
E.</p>
-<example>
-<Location /><br />
-E<br />
-</Location><br />
-<br />
-<Files f.html><br />
-D<br />
-</Files><br />
-<br />
-<VirtualHost *><br />
-<Directory /a/b><br />
-B<br />
-</Directory><br />
-</VirtualHost><br />
-<br />
-<DirectoryMatch "^.*b$"><br />
-C<br />
-</DirectoryMatch><br />
-<br />
-<Directory /a/b><br />
-A<br />
-</Directory><br />
-<br />
-</example>
+<highlight language="config">
+<Location />
+ E
+</Location>
+
+<Files f.html>
+ D
+</Files>
+
+<VirtualHost *>
+<Directory /a/b>
+ B
+</Directory>
+</VirtualHost>
+
+<DirectoryMatch "^.*b$">
+ C
+</DirectoryMatch>
+
+<Directory /a/b>
+ A
+</Directory>
+
+</highlight>
<p>Pour un exemple plus concret, considérez ce qui suit. Sans tenir compte
de toute restriction d'accès placée dans les sections <directive module="core"
En d'autres termes, l'ordre de la combinaison des sections est important,
soyez donc prudent !</p>
-<example>
-<Location /><br />
-Order deny,allow<br />
-Allow from all<br />
-</Location><br />
-<br />:if expand("%") == ""|browse confirm w|else|confirm w|endif
-
-# Arrghs! Cette section <Directory> n'aura aucun effet<br />
-<Directory /><br />
-Order allow,deny<br />
-Allow from all<br />
-Deny from badguy.example.com<br />
+<highlight language="config">
+<Location />
+ Require all granted
+</Location>
+
+# Arrghs! Cette section <Directory> n'aura aucun effet
+<Directory />
+ <RequireAll>
+ Require all granted
+ Require not host badguy.example.com
+ </RequireAll>
</Directory>
-</example>
+</highlight>
</section>
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
-<!-- English Revision: 1300911:1334000 (outdated) -->
+<!-- English Revision : 1334000 -->
<!-- French translation by alain B, review by Vincent Deffontaines -->
<!-- Updated by Lucien Gentis -->
de configuration pour définir l'adresse IP (ou serveur virtuel)
que le processus résident doit gérer. Par exemple :</p>
- <example>
+ <highlight language="config">
Listen 192.0.2.100:80
- </example>
+ </highlight>
<p>Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
de domaine (consultez <a href="../dns-caveats.html">Problèmes DNS
<directive module="mod_log_config">CustomLog</directive> avec des
valeurs différentes pour chaque serveur virtuel. Par exemple :</p>
- <example>
- <VirtualHost 172.20.30.40:80><br />
- ServerAdmin webmaster@www1.example.com<br />
- DocumentRoot /www/vhosts/www1<br />
- ServerName www1.example.com<br />
- ErrorLog /www/logs/www1/error_log<br />
- CustomLog /www/logs/www1/access_log combined<br />
- </VirtualHost><br />
- <br />
- <VirtualHost 172.20.30.50:80><br />
- ServerAdmin webmaster@www2.example.org<br />
- DocumentRoot /www/vhosts/www2<br />
- ServerName www2.example.org<br />
- ErrorLog /www/logs/www2/error_log<br />
- CustomLog /www/logs/www2/access_log combined<br />
- </VirtualHost>
- </example>
+ <highlight language="config">
+<VirtualHost 172.20.30.40:80>
+ ServerAdmin webmaster@www1.example.com
+ DocumentRoot /www/vhosts/www1
+ ServerName www1.example.com
+ ErrorLog /www/logs/www1/error_log
+ CustomLog /www/logs/www1/access_log combined
+</VirtualHost>
+
+<VirtualHost 172.20.30.50:80>
+ ServerAdmin webmaster@www2.example.org
+ DocumentRoot /www/vhosts/www2
+ ServerName www2.example.org
+ ErrorLog /www/logs/www2/error_log
+ CustomLog /www/logs/www2/access_log combined
+</VirtualHost>
+ </highlight>
<p>Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
de domaine comme argument à la directive <VirtualHost>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1138405:1334000 (outdated) -->
+<!-- English Revision : 1334000 -->
<!-- French translation : Lucien GENTIS -->
<!--
<code><VirtualHost></code> très semblables,
dans le style :</p>
-<example>
-<pre>
+<highlight language="config">
<VirtualHost 111.22.33.44>
ServerName customer-1.example.com
DocumentRoot /www/hosts/customer-1.example.com/docs
DocumentRoot /www/hosts/customer-N.example.com/docs
ScriptAlias /cgi-bin/ /www/hosts/customer-N.example.com/cgi-bin
</VirtualHost>
-</pre>
-</example>
+</highlight>
<p>Nous voulons remplacer toutes les configurations
<code><VirtualHost></code> par un mécanisme qui les génère
href="#motivation">À qui ce document est-il destiné ?</a> ci-dessus
en utilisant <module>mod_vhost_alias</module>.</p>
-<example>
-# extrait le nom du serveur de l'en-tête Host:<br />
-UseCanonicalName Off<br />
-<br />
+<highlight language="config">
+# extrait le nom du serveur de l'en-tête Host:
+UseCanonicalName Off
+
# ce format de journal peut être éclaté en journaux par serveur virtuel
-# à l'aide du premier champ via l'utilitaire split-logfile<br />
-LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
-CustomLog logs/access_log vcommon<br />
-<br />
+# à l'aide du premier champ via l'utilitaire split-logfile
+LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
+CustomLog logs/access_log vcommon
+
# inclut le nom du serveur dans les noms de fichiers ressources
-# nécessaires aux traitements des requêtes<br />
-VirtualDocumentRoot /www/hosts/%0/docs<br />
+# nécessaires aux traitements des requêtes
+VirtualDocumentRoot /www/hosts/%0/docs
VirtualScriptAlias /www/hosts/%0/cgi-bin
-</example>
+</highlight>
<p>Pour changer cette configuration en solution de serveur virtuel
par IP, il suffit de remplacer <code>UseCanonicalName
<code>cgi-bin</code> suffit pour l'ensemble des
serveurs virtuels.</p>
-<example>
-UseCanonicalName Off<br />
-<br />
-LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
-CustomLog logs/access_log vcommon<br />
-<br />
-# insertion d'une partie du nom du serveur dans les noms de fichiers<br />
-VirtualDocumentRoot /home/%2/www<br />
-<br />
-# répertoire cgi-bin unique<br />
-ScriptAlias /cgi-bin/ /www/std-cgi/<br />
-</example>
+<highlight language="config">
+UseCanonicalName Off
+
+LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
+CustomLog logs/access_log vcommon
+
+# insertion d'une partie du nom du serveur dans les noms de fichiers
+VirtualDocumentRoot /home/%2/www
+
+# répertoire cgi-bin unique
+ScriptAlias /cgi-bin/ /www/std-cgi/
+</highlight>
<p>Vous trouverez des exemples plus élaborés d'utilisation de la
directive <code>VirtualDocumentRoot</code> dans la documentation du
<code><VirtualHost></code> conventionnelles, comme indiqué
plus loin.</p>
-<example>
-UseCanonicalName Off<br />
-<br />
-LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
-<br />
-<Directory /www/commercial><br />
-<indent>
- Options FollowSymLinks<br />
- AllowOverride All<br />
-</indent>
-</Directory><br />
-<br />
-<Directory /www/homepages><br />
-<indent>
- Options FollowSymLinks<br />
- AllowOverride None<br />
-</indent>
-</Directory><br />
-<br />
-<VirtualHost 111.22.33.44><br />
-<indent>
- ServerName www.commercial.example.com<br />
- <br />
- CustomLog logs/access_log.commercial vcommon<br />
- <br />
- VirtualDocumentRoot /www/commercial/%0/docs<br />
- VirtualScriptAlias /www/commercial/%0/cgi-bin<br />
-</indent>
-</VirtualHost><br />
-<br />
-<VirtualHost 111.22.33.45><br />
-<indent>
- ServerName www.homepages.example.com<br />
- <br />
- CustomLog logs/access_log.homepages vcommon<br />
- <br />
- VirtualDocumentRoot /www/homepages/%0/docs<br />
- ScriptAlias /cgi-bin/ /www/std-cgi/<br />
-</indent>
+<highlight language="config">
+UseCanonicalName Off
+
+LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
+
+<Directory /www/commercial>
+ Options FollowSymLinks
+ AllowOverride All
+</Directory>
+
+<Directory /www/homepages>
+ Options FollowSymLinks
+ AllowOverride None
+</Directory>
+
+<VirtualHost 111.22.33.44>
+ ServerName www.commercial.example.com
+
+ CustomLog logs/access_log.commercial vcommon
+
+ VirtualDocumentRoot /www/commercial/%0/docs
+ VirtualScriptAlias /www/commercial/%0/cgi-bin
+</VirtualHost>
+
+<VirtualHost 111.22.33.45>
+ ServerName www.homepages.example.com
+
+ CustomLog logs/access_log.homepages vcommon
+
+ VirtualDocumentRoot /www/homepages/%0/docs
+ ScriptAlias /cgi-bin/ /www/std-cgi/
</VirtualHost>
-</example>
+</highlight>
<note>
<title>Note</title>
la-même la nécessité d'une recherche DNS. La journalisation doit
aussi être adaptée pour fonctionner sur un tel système.</p>
-<example>
+<highlight language="config">
# obtention du nom du serveur par recherche DNS inverse
-# sur l'adresse IP<br />
-UseCanonicalName DNS<br />
-<br />
+# sur l'adresse IP
+UseCanonicalName DNS
+
# insertion de l'adresse IP dans les journaux afin de pouvoir les
-# éclater<br />
-LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon<br />
-CustomLog logs/access_log vcommon<br />
-<br />
-# insertion de l'adresse IP dans les noms de fichiers<br />
-VirtualDocumentRootIP /www/hosts/%0/docs<br />
-VirtualScriptAliasIP /www/hosts/%0/cgi-bin<br />
-</example>
+# éclater
+LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon
+CustomLog logs/access_log vcommon
+
+# insertion de l'adresse IP dans les noms de fichiers
+VirtualDocumentRootIP /www/hosts/%0/docs
+VirtualScriptAliasIP /www/hosts/%0/cgi-bin
+</highlight>
</section>
<section id="rewrite"><title>Hébergement virtuel de masse avec
mod_rewrite</title>
-
+
<p>
L'hébergement virtuel de masse peut aussi être effectué en utilisant
<module>mod_rewrite</module>, soit à l'aide de simples directives <directive