]> granicus.if.org Git - apache/commitdiff
Zombie translations must die now.
authorVincent Deffontaines <gryzor@apache.org>
Tue, 27 Nov 2012 21:48:12 +0000 (21:48 +0000)
committerVincent Deffontaines <gryzor@apache.org>
Tue, 27 Nov 2012 21:48:12 +0000 (21:48 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1414411 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/rewrite/rewrite_guide.html.fr [deleted file]
docs/manual/rewrite/rewrite_guide_advanced.html.fr [deleted file]

diff --git a/docs/manual/rewrite/rewrite_guide.html.fr b/docs/manual/rewrite/rewrite_guide.html.fr
deleted file mode 100644 (file)
index 6a483bf..0000000
+++ /dev/null
@@ -1,870 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-              This file is generated from xml source: DO NOT EDIT
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-      -->
-<title>Guide de réécriture des URLs - Serveur Apache HTTP</title>
-<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
-<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
-<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
-<link href="/images/favicon.ico" rel="shortcut icon" /></head>
-<body id="manual-page"><div id="page-header">
-<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p>
-<p class="apache">Serveur Apache HTTP Version 2.3</p>
-<img alt="" src="/images/feather.gif" /></div>
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
-<div id="path">
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="/">Version 2.3</a> &gt; <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Guide de réécriture des URLs</h1>
-<div class="toplang">
-<p><span>Langues Disponibles: </span></p>
-</div>
-
-
-    <p>Ce document complète la <a href="../mod/mod_rewrite.html">documentation de référence</a> du
-    module <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>. Il décrit de quelle manière on
-    peut utiliser le module Apache <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> pour
-    résoudre les problèmes typiques relatifs aux URLs auxquels les
-    webmasters sont souvent confrontés. La résolution de chaque problème
-    par la configuration des jeux de règles de réécriture d'URLs fait
-    l'objet d'une description détaillée.</p>
-
-    <div class="warning">ATTENTION : l'adaptation des exemples à votre
-    situation en fonction de la configuration de votre serveur pourra
-    s'avérer nécessaire, par exemple l'ajout du drapeau
-    <code>[PT]</code> si vous utilisez les modules
-    <code class="module"><a href="/mod/mod_alias.html">mod_alias</a></code>, <code class="module"><a href="/mod/mod_userdir.html">mod_userdir</a></code>, etc... Un
-    jeu de règles défini dans le contexte du serveur devra aussi être
-    adapté pour être utilisé dans un contexte <code>.htaccess</code>.
-    Efforcez-vous toujours de bien comprendre l'effet produit par un jeu
-    de règles avant de l'utiliser, ce qui pourra vous éviter bien des
-    problèmes.</div>
-
-  </div>
-<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#canonicalurl">URLs canoniques</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#canonicalhost">Noms d'hôtes canoniques</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#moveddocroot"><code>DocumentRoot</code>déplacé</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#trailingslash">Problème du slash de fin</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#movehomedirs">Déplacement des répertoires home vers un autre serveur</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#multipledirs">Recherche de pages dans plus d'un répertoire</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#setenvvars">Définir des variables d'environnement en fonction de
-      certaines parties de l'URL</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#uservhosts">Hôtes virtuels basés sur l'utilisateur</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#redirecthome">Redirection des répertoires d'accueil pour les étrangers</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#redirectanchors">Redirection des ancrages</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#time-dependent">Réécriture dépendant de l'heure</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#backward-compatibility">Compatibilité ascendante pour une migration de YYYY vers
-      XXXX</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#old-to-new">De l'ancien au nouveau (en interne)</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#old-to-new-extern">De l'ancien au nouveau (en externe)</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#static-to-dynamic">De statique à dynamique</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#blocking-of-robots">Blocage des robots</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#blocked-inline-images">Blocage du référencement à chaud (Hotlinking) d'images</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#proxy-deny">Interdiction du mandataire</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#external-rewriting">Moteur de réécriture externe</a></li>
-</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module</a></li><li><a href="intro.html">Introduction à mod_rewrite</a></li><li><a href="rewrite_guide_advanced.html">Guide de réécriture
-avancé - exemples utiles avancés</a></li><li><a href="tech.html">Détails techniques</a></li></ul></div>
-<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="canonicalurl" id="canonicalurl">URLs canoniques</a></h2>
-
-
-
-<dl>
- <dt>Description :</dt>
-
-   <dd>
-     <p>Sur certains serveurs web, une ressource peut être accessible
-     depuis plusieurs URLs. On trouve en général des URLs canoniques
-     (qui sont réellement utilisables et distribuables), mais aussi des
-     URLs à usage interne, ou celles qui ne sont que des raccourcis,
-     etc... On souhaite que, quelle que soit l'URL que l'utilisateur
-     a fournie avec sa requête, il ne doit en voir en fin de compte
-     que la forme canonique.</p>
-   </dd>
-
-   <dt>Solution :</dt>
-
-     <dd>
-       <p>On effectue une redirection HTTP externe pour toutes les URLs
-       non canoniques afin de les rendre compréhensibles au navigateur
-       et ceci pour toutes les requêtes sous-jacentes. Dans l'exemple de
-       jeux de règles ci-dessous, <code>/~user</code> est remplacé par
-       l'expression canonique <code>/u/user</code>, et une éventuelle
-       absence du slash à la fin de <code>/u/user</code> est corrigée.</p>
-
-<div class="example"><pre>
-RewriteRule   ^/<strong>~</strong>([^/]+)/?(.*)    /<strong>u</strong>/$1/$2  [<strong>R</strong>]
-RewriteRule   ^/u/(<strong>[^/]+</strong>)$  /$1/$2<strong>/</strong>   [<strong>R</strong>]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="canonicalhost" id="canonicalhost">Noms d'hôtes canoniques</a></h2>
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>Le but de cette règle est de préférer l'utilisation d'un nom
-       d'hôte particulier par rapport à d'autres noms d'hôte utilisables
-       pour atteindre le même site. Par exemple, si vous voulez
-       utiliser <strong>www.example.com</strong> à la place de
-       <strong>example.com</strong>, vous devez utiliser une solution
-       de ce style.</dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-<p>Pour les sites écoutant sur un port autre que 80:</p>
-<div class="example"><pre>
-RewriteCond %{HTTP_HOST}   !^www\.exemple\.com [NC]
-RewriteCond %{HTTP_HOST}   !^$
-RewriteCond %{SERVER_PORT} !^80$
-RewriteRule ^/?(.*)         http://www.example.com:%{SERVER_PORT}/$1
-[L,R,NE]
-</pre></div>
-
-<p>Et pour un site écoutant sur le port 80</p>
-<div class="example"><pre>
-RewriteCond %{HTTP_HOST}   !^www\.exemple\.com [NC]
-RewriteCond %{HTTP_HOST}   !^$
-RewriteRule ^/?(.*)         http://www.example.com/$1 [L,R,NE]
-</pre></div>
-       <p>
-       Si vous souhaitez que cette règle s'applique à tous les noms de
-       domaine - en d'autres termes, si vous voulez rediriger
-       <strong>example.com</strong> vers
-       <strong>www.example.com</strong> pour toutes les valeurs
-       possibles de <strong>example.com</strong>, vous pouvez utiliser
-       le jeu de règles suivants :</p>
-
-<div class="example"><pre>
-RewriteCond %{HTTP_HOST} !^www\. [NC]
-RewriteCond %{HTTP_HOST} !^$
-RewriteRule ^/?(.*) http://www.%{HTTP_HOST}/$1 [L,R,NE]
-</pre></div>
-       <p>
-       Vous pouvez utiliser ce jeu de règles aussi bien dans le fichier
-       de configuration de votre serveur principal que dans un fichier
-       <code>.htaccess</code> placé dans le répertoire défini par la
-       directive <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code> du serveur.</p>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="moveddocroot" id="moveddocroot"><code>DocumentRoot</code>déplacé</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-<p>En général, la directive <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code> correspond directement à l'URL
-"<code>/</code>" du serveur web. Mais souvent, les données qui s'y
-trouvent ne sont pas de la première priorité. Par exemple, il peut être
-intéressant, pour les visiteurs qui entrent sur le site pour la première
-fois, d'être redirigés vers un sous-répertoire particulier
-<code>/a-propos-de/</code>. Pour ce faire, on peut utiliser le jeu de
-règles suivant :</p>
-</dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On redirige l'URL <code>/</code> vers
-          <code>/a-propos-de/</code>:
-          </p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteRule   <strong>^/$</strong>  /a-propos-de/  [<strong>R</strong>]
-</pre></div>
-
-    <p>Notez que le même effet peut être obtenu à l'aide de la directive
-    <code class="directive"><a href="/mod/mod_alias.html#redirectmatch">RedirectMatch</a></code> :</p>
-
-<div class="example"><p><code>
-RedirectMatch ^/$ http://example.com/apropos/
-</code></p></div>
-<p>Notez aussi que cet exemple ne réécrit que l'URL racine. En d'autres
-termes, il réécrit une requête pour <code>http://example.com/</code>,
-mais ne réécrira pas une requête pour
-<code>http://example.com/page.html</code>. En fait, si vous avez modifié
-la racine de vos documents - c'est à dire si tous vos contenus se
-trouvent dans ce sous-répertoire, il vaut mieux simplement modifier
-votre directive <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code> que de
-procéder à une réécriture d'URLs.</p>
-</dd>
-</dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="trailingslash" id="trailingslash">Problème du slash de fin</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-    <dd><p>La plupart des problèmes de "slash de fin" peuvent être
-    résolus grâce aux techniques décrites dans ce <a href="http://httpd.apache.org/docs/misc/FAQ-E.html#set-servername">sujet
-    de la FAQ</a>. Cependant, dans certaines situations où l'absence de slash de fin
-    peut rendre une URL inopérante, l'utilisation de
-    mod_rewrite s'avère nécessaire. Le cas peut se présenter, par exemple,
-    après une série complexe de règles de réécriture.</p>
-    </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>La solution à ce problème subtil consiste à laisser le
-         serveur ajouter le slash de fin automatiquement. Pour y
-         parvenir, il faut utiliser une redirection externe, afin que
-         le navigateur demande correctement les images sous-jacentes,
-         etc... Une réécriture en interne ne fonctionnerait que pour la
-         page du répertoire, mais échouerait pour toute image incluse
-         dans cette page via des liens relatifs, car le navigateur
-         demanderait un objet inséré. Par exemple, une requête pour
-         <code>image.gif</code> dans <code>/~quux/foo/index.html</code>
-         deviendrait <code>/~quux/image.gif</code> sans la redirection
-         externe !</p>
-
-          <p>Pour y parvenir, on peut utiliser des règles de ce style :</p>
-
-<div class="example"><pre>
-RewriteEngine  on
-RewriteBase    /~quux/
-RewriteRule    ^foo<strong>$</strong>  foo<strong>/</strong>  [<strong>R</strong>]
-</pre></div>
-
-   <p>Vous pouvez aussi ajouter ce qui suit dans un fichier
-   <code>.htaccess</code> situé dans le répertoire contenant la
-   ressource. Notez cependant que cela augmente la charge du processeur.</p>
-
-<div class="example"><pre>
-RewriteEngine  on
-RewriteBase    /~quux/
-RewriteCond    %{REQUEST_FILENAME}  <strong>-d</strong>
-RewriteRule    ^(.+<strong>[^/]</strong>)$           $1<strong>/</strong>  [R]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="movehomedirs" id="movehomedirs">Déplacement des répertoires home vers un autre serveur</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>De nombreux webmasters ont demandé comment résoudre le
-         problème suivant : ils voudraient tout simplement rediriger
-         les répertoires home d'un serveur web vers un autre serveur
-         web. Cette situation se présente en général lorsqu'on installe
-         un nouveau serveur web destiné à terme à en remplacer un autre
-         plus ancien.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Avec <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>, la solution est
-         évidente. Sur l'ancien serveur web, on redirige simplement
-         toutes les URLs du style <code>/~user/chemin</code> vers
-         <code>http://nouveau-serveur/~user/chemin</code>.</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteRule   ^/~(.+)  http://<strong>nouveau-serveur</strong>/~$1  [R,L]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="multipledirs" id="multipledirs">Recherche de pages dans plus d'un répertoire</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Le serveur web doit parfois rechercher des pages dans plus
-         d'un répertoire. Dans ce cas, les vues multiples ou autres
-         techniques similaires ne sont d'aucun secours.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On définit explicitement un jeu de règles qui recherche les
-         fichiers dans les répertoires.</p>
-
-<div class="example"><pre>
-RewriteEngine on
-
-#   on cherche tout d'abord dans dir1/...
-#   ... et si on trouve, on est content et on arrête :
-RewriteCond         %{DOCUMENT_ROOT}/<strong>dir1</strong>/%{REQUEST_URI}  -f
-RewriteRule  ^(.+)  %{DOCUMENT_ROOT}/<strong>dir1</strong>/$1  [L]
-
-#   on cherche ensuite dans dir2/...
-#   ... et si on trouve, on est content et on arrête :
-RewriteCond         %{DOCUMENT_ROOT}/<strong>dir2</strong>/%{REQUEST_URI}  -f
-RewriteRule  ^(.+)  %{DOCUMENT_ROOT}/<strong>dir2</strong>/$1  [L]
-
-#   sinon, on continue la recherche avec d'autres directives Alias
-#   ou ScriptAlias, etc...
-RewriteRule   ^(.+)  -  [PT]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="setenvvars" id="setenvvars">Définir des variables d'environnement en fonction de
-      certaines parties de l'URL</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment conserver des informations
-         d'état d'une requête à l'autre et utiliser l'URL pour les
-         encoder, sans utiliser d'encapsulateur CGI
-         pour toutes les pages pour seulement supprimer ces
-         informations.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On utilise une règle de réécriture pour supprimer
-         l'information d'état et l'enregistrer dans une variable
-         d'environnement dont on pourra plus tard extraire la valeur
-         dans XSSI ou CGI. De cette façon, une URL telle que
-         <code>/foo/S=java/bar/</code> sera traduite en
-         <code>/foo/bar/</code> et la variable d'environnement
-         <code>STATUS</code> aura pour valeur "java".</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteRule   ^(.*)/<strong>S=([^/]+)</strong>/(.*)    $1/$3 [E=<strong>STATUS:$2</strong>]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="uservhosts" id="uservhosts">Hôtes virtuels basés sur l'utilisateur</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Supposons que vous vouliez atteindre la page d'accueil des
-         utilisateurs sur une même machine au moyen de l'URL
-         <code>www.<strong>nom-utilisateur</strong>.hôte.domaine.com</code>,
-         en vous basant
-         seulement sur les enregistrements DNS de type A, et ceci sans qu'aucun
-         hôte virtuel ne soit installé sur cette machine.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Dans le cas des requêtes HTTP/1.0, il n'y a pas de solution
-         ; par contre, avec une requête HTTP/1.1 qui contient un
-         en-tête HTTP Host:, on peut utiliser le jeu de règles suivant
-         pour réécrire en interne
-         <code>http://www.nom-utilisateur.hôte.com/chemin</code> vers
-         <code>/home/nom-utilisateur/chemin</code> :</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteCond   %{<strong>HTTP_HOST</strong>}                 ^www\.<strong>([^.]+)</strong>\.host\.com$
-RewriteRule   ^(.*) /home/<strong>%1</strong>$1
-</pre></div>
-<p>Les parenthèses utilisées dans une directive <code class="directive"><a href="/mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> sont capturées dans les
-références arrières <code>%1</code>, <code>%2</code>, etc..., alors que
-les parenthèses utilisées dans une directive <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> sont capturées dans les
-références arrières <code>$1</code>, <code>$2</code>, etc...</p>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="redirecthome" id="redirecthome">Redirection des répertoires d'accueil pour les étrangers</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>On veut rediriger les URLs des répertoires d'accueil vers
-         un autre serveur <code>www.quelque-part.com</code> lorsque
-         l'utilisateur demandeur n'appartient pas au domaine local
-         <code>notre-domaine.com</code>. On rencontre parfois cette
-         situation dans un contexte d'hôtes virtuels.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Juste une condition de réécriture :</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteCond   %{REMOTE_HOST}  <strong>!^.+\.notre-domaine\.com$</strong>
-RewriteRule   ^(/~.+)         http://www.quelque-part.com/$1 [R,L]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="redirectanchors" id="redirectanchors">Redirection des ancrages</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-        <p>Par défaut, la redirection vers un ancrage HTML ne fonctionne
-       pas, car mod_rewrite échappe le caractère <code>#</code> en le
-       transformant en <code>%23</code>, ce qui rend la redirection
-       inopérante.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On utilise le drapeau <code>[NE]</code> dans la règle
-         <code>RewriteRule</code>. NE signifie "No Escape".
-          </p>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="time-dependent" id="time-dependent">Réécriture dépendant de l'heure</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Lorsqu'il s'agit de distribuer des contenus dont la nature
-         dépend de l'heure, de nombreux webmasters utilisent encore des
-         scripts CGI qui redirigent par exemple vers des pages
-         spécifiques. Comment peut-on y parvenir à tenir compte de
-         l'heure à l'aide de <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> ?</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Il existe de nombreuses variables nommées
-         <code>TIME_xxx</code> utilisables dans les conditions de
-         réécriture. Utilisées en conjonction avec les modèles de
-         comparaison lexicographique spéciaux <code>&lt;STRING</code>,
-         <code>&gt;STRING</code> et <code>=STRING</code>, elles
-         permettent d'effectuer des redirections dépendant de
-         l'heure :</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteCond   %{TIME_HOUR}%{TIME_MIN} &gt;0700
-RewriteCond   %{TIME_HOUR}%{TIME_MIN} &lt;1900
-RewriteRule   ^foo\.html$             foo.jour.html
-RewriteRule   ^foo\.html$             foo.nuit.html
-</pre></div>
-
-          <p>Avec cet exemple, l'URL <code>foo.html</code> renvoie
-         le contenu de <code>foo.jour.html</code> durant le
-         créneau horaire <code>07:00-19:00</code>, et le contenu de
-         <code>foo.nuit.html</code> le reste du temps. Agréable
-         fonctionnalité pour une page d'accueil...</p>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="backward-compatibility" id="backward-compatibility">Compatibilité ascendante pour une migration de YYYY vers
-      XXXX</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment conférer une compatibilité ascendante aux URLs
-         (existant encore virtuellement) après avoir migré
-         <code>document.YYYY</code> vers <code>document.XXXX</code>,
-         c'est à dire après avoir par exemple traduit un lot de
-         fichiers <code>.html</code> en fichiers <code>.phtml</code>
-         ?</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On réécrit simplement le nom du fichier en son nom
-         de base et vérifie s'il existe aussi avec la nouvelle
-         extension. Si c'est le cas, on utilise ce nom, sinon on
-         réécrit l'URL sous sa forme originale.</p>
-
-
-<div class="example"><pre>
-#   jeu de règles assurant une compatibilité ascendante en réécrivant
-#   document.html en document.phtml si et seulement si document.phtml
-#   existe et document.html n'existe plus
-RewriteEngine on
-RewriteBase   /~quux/
-#   réécriture du fichier en son nom de base,
-#   mais garde en mémoire le fait qu'il s'agit
-#   d'un fichier html
-RewriteRule   ^(.*)\.html$              $1      [C,E=WasHTML:yes]
-#   réécrit vers document.phtml s'il existe
-#   Note : il s'agit d'un exemple de niveau répertoire, si bien que
-#   %{REQUEST_FILENAME} contient le chemin complet du système de fichier
-#   tel qu'il a été construit par le serveur.
-RewriteCond   %{REQUEST_FILENAME}.phtml -f
-RewriteRule   ^(.*)$ $1.phtml                   [S=1]
-#   sinon, restauration du nom de fichier complet original
-RewriteCond   %{ENV:WasHTML}            ^yes$
-RewriteRule   ^(.*)$ $1.html
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="old-to-new" id="old-to-new">De l'ancien au nouveau (en interne)</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Supposons que nous ayons récemment renommé la page
-         <code>foo.html</code> en <code>bar.html</code>, et voulions
-         maintenant que l'ancienne URL soit toujours valide à des fins
-         de compatibilité ascendante. En fait, on voudrait que le
-         changement de nom soit transparent aux utilisateurs de
-         l'ancienne URL.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On réécrit l'ancienne URL en interne vers la nouvelle via
-         la règle suivante :</p>
-
-<div class="example"><pre>
-RewriteEngine  on
-RewriteBase    /~quux/
-RewriteRule    ^<strong>foo</strong>\.html$  <strong>bar</strong>.html
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="old-to-new-extern" id="old-to-new-extern">De l'ancien au nouveau (en externe)</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Supposons toujours que nous ayons récemment renommé la page
-         <code>foo.html</code> en <code>bar.html</code>, et voulions
-         maintenant que l'ancienne URL soit toujours valide à des fins
-         de compatibilité ascendante. Par contre, nous voulons cette
-         fois que les utilisateurs de l'ancienne URL soient redirigés
-         vers la nouvelle, c'est à dire que l'adresse tapée
-         dans leur navigateur doit aussi être modifiée.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On force une redirection HTTP vers la nouvelle URL, ce qui
-         entraîne une modification de celle du navigateur et aussi de ce
-         que voit l'utilisateur :</p>
-
-<div class="example"><pre>
-RewriteEngine  on
-RewriteBase    /~quux/
-RewriteRule    ^<strong>foo</strong>\.html$  <strong>bar</strong>.html  [<strong>R</strong>]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="static-to-dynamic" id="static-to-dynamic">De statique à dynamique</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment transformer une page statique <code>foo.html</code>
-         en sa variante dynamique <code>foo.cgi</code> de manière
-         transparente, c'est à dire sans en avertir le
-         navigateur/utilisateur.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On réécrit simplement l'URL en script CGI et force le
-         gestionnaire de contenu à <strong>cgi-script</strong> de façon
-         à ce que le script s'exécute en tant que programme CGI.
-         Ainsi, une requête vers <code>/~quux/foo.html</code> conduit
-         en interne à l'invocation de
-         <code>/~quux/foo.cgi</code>.</p>
-
-<div class="example"><pre>
-RewriteEngine  on
-RewriteBase    /~quux/
-RewriteRule    ^foo\.<strong>html</strong>$  foo.<strong>cgi</strong>  [H=<strong>cgi-script</strong>]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="blocking-of-robots" id="blocking-of-robots">Blocage des robots</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment empêcher un robot vraiment gênant de collecter les
-         pages d'une partie spécifique du site web ? Un fichier
-         <code>/robots.txt</code> comportant les entrées du "Protocole
-         d'Exclusion des Robots" ne suffit généralement pas à en venir
-         à bout.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On utilise un jeu de règles qui interdit les URLs de la
-         partie du site web concernée <code>/~quux/foo/arc/</code>
-         (peut-être une partie du serveur avec une arborescence très
-         développée à travers laquelle le parcours du
-         robot induirait une charge importante pour le serveur). Nous
-         devons nous assurer de n'interdire l'accès qu'à ce robot
-         particulier, c'est à dire qu'il ne suffit pas d'interdire
-         l'accès à l'hôte sur lequel le robot fonctionne, ce qui
-         bloquerait aussi les utilisateurs de cet hôte. Pour y
-         parvenir, on tient aussi compte des informations contenues
-         dans l'en-tête HTTP User-Agent.</p>
-
-<div class="example"><pre>
-RewriteCond %{HTTP_USER_AGENT}   ^<strong>NameOfBadRobot</strong>.*
-RewriteCond %{REMOTE_ADDR}       ^<strong>123\.45\.67\.[8-9]</strong>$
-RewriteRule ^<strong>/~quux/foo/arc/</strong>.+   -   [<strong>F</strong>]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="blocked-inline-images" id="blocked-inline-images">Blocage du référencement à chaud (Hotlinking) d'images</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Cette technique vous permet d'interdire à d'autres sites
-         d'inclure directement vos images dans leurs pages. On fait
-         souvent référence à cette pratique sous le nom de
-         référencement à chaud (Hotlinking) qui entraîne l'utilisation
-         de votre bande passante pour servir des contenus faisant
-         partie du site de quelqu'un d'autre.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-       <p>Cette technique repose sur la valeur de la variable
-       optionnelle <code>HTTP_REFERER</code>. Certaines personnes
-       pourront donc contourner cette limitation. Pour la plupart des
-       utilisateurs cependant, la requête échouera, en ce sens que
-       l'image ne sera pas affichée depuis le site tiers.</p>
-       <p>Il y a plusieurs manières de gérer cette situation.</p>
-
-       <p>Dans le premier exemple, nous rejetons tout simplement la
-       requête si elle ne provenait pas d'une page appartenant à notre
-       site. Pour les besoins de cet exemple, nous supposons que le nom
-       de votre site est <code>www.example.com</code>.</p>
-
-<div class="example"><pre>
-RewriteCond %{HTTP_REFERER} <strong>!^$</strong>
-RewriteCond %{HTTP_REFERER} !www.example.com [NC]
-RewriteRule <strong>\.(gif|jpg|png)$</strong>    -   [F,NC]
-</pre></div>
-
-       <p>Dans le second exemple, plutôt que de rejeter la requête,
-       nous affichons une autre image à la place.</p>
-
-<div class="example"><pre>
-RewriteCond %{HTTP_REFERER} <strong>!^$</strong>
-RewriteCond %{HTTP_REFERER} !www.example.com [NC]
-RewriteRule <strong>\.(gif|jpg|png)$</strong>    /images/go-away.png   [R,NC]
-</pre></div>
-
-       <p>Dans le troisième exemple, nous redirigeons la requête vers
-       une image appartenant à un site tiers.</p>
-
-
-<div class="example"><pre>
-RewriteCond %{HTTP_REFERER} <strong>!^$</strong>
-RewriteCond %{HTTP_REFERER} !www.example.com [NC]
-RewriteRule <strong>\.(gif|jpg|png)$</strong> http://other.site.com/image.gif   [R,NC]
-</pre></div>
-       <p>De tous ces exemples, les deux derniers semblent les plus
-       efficaces pour faire en sorte que les gens arrêtent de
-       référencer vos images à chaud, car il ne verront pas les images
-       qu'ils s'attendent à voir.</p>
-
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="proxy-deny" id="proxy-deny">Interdiction du mandataire</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment interdire l'utilisation du mandataire d'Apache à un
-         certain hôte, ou même à un utilisateur d'un certain hôte ?</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Nous devons tout d'abord nous assurer que
-         <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> se situe en dessous (!) de
-         <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code> dans le fichier de configuration
-         lors de la compilation du serveur web Apache. De cette façon,
-         il est appelé <em>avant</em> <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code>. Nous
-         pouvons alors utiliser la règle suivante pour une interdiction
-         concernant un hôte...</p>
-
-<div class="example"><pre>
-RewriteCond %{REMOTE_HOST} <strong>^mauvais-hôte\.mon-domaine\.com$</strong>
-RewriteRule !^http://[^/.]\.mon-domaine.com.*  - [F]
-</pre></div>
-
-          <p>...et celle-ci pour une interdiction concernant un
-         utilisateur d'un certain hôte :</p>
-
-<div class="example"><pre>
-RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST}
-<strong>^mauvais-sujet@mauvais-hôte\.mon-domaine\.com$</strong>
-RewriteRule !^http://[^/.]\.mon-domaine.com.*  - [F]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="external-rewriting" id="external-rewriting">Moteur de réécriture externe</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Une question de la Faq : comment résoudre le problème
-         FOO/BAR/QUUX/etc. ? <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> ne semble pas
-         devoir y apporter de solution...</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Utiliser une <code class="directive"><a href="/mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> ou table de réécriture externe, c'est
-         à dire un programme qui agit de la même façon qu'une
-         <code class="directive"><a href="/mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>. Il
-         doit être lancé une fois au démarrage d'Apache, recevoir les
-         URLs des requêtes sur <code>STDIN</code>, et restituer l'URL
-         résultante (en général réécrite) sur <code>STDOUT</code> (dans
-         cet ordre !).</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteMap    quux-table       <strong>prg:</strong>/chemin/vers/table.quux.pl
-RewriteRule   ^/~quux/(.*)$  /~quux/<strong>${quux-table:$1}</strong>
-</pre></div>
-
-<div class="example"><pre>
-#!/chemin/vers/perl
-
-#   désactive la mise en tampon des entrées/sorties, qui risque
-#   de provoquer des bouclages infinis pour le serveur Apache
-$| = 1;
-
-#   lit les URLs (une par ligne) depuis stdin et
-#   génère l'URL transformée sur stdout
-
-#   read URLs one per line from stdin and
-#   generate substitution URL on stdout
-while (&lt;&gt;) {
-    s|^foo/|bar/|;
-    print $_;
-}
-</pre></div>
-
-          <p>Ceci n'est qu'un exemple de démonstration qui ne fait que
-         réécrire les URLs du style <code>/~quux/foo/...</code> vers
-         <code>/~quux/bar/...</code>. En fait, vous pouvez programmer
-         la substitution que vous voulez. Notez cependant que si de
-         tels programmes peuvent aussi être <strong>utilisés</strong>
-         par un utilisateur standard, seul l'administrateur du système
-         peut les <strong>écrire</strong>.</p>
-        </dd>
-      </dl>
-
-    </div></div>
-<div class="bottomlang">
-<p><span>Langues Disponibles: </span></p>
-</div><div id="footer">
-<p class="apache">Copyright 2010 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
-<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p></div>
-</body></html>
\ No newline at end of file
diff --git a/docs/manual/rewrite/rewrite_guide_advanced.html.fr b/docs/manual/rewrite/rewrite_guide_advanced.html.fr
deleted file mode 100644 (file)
index eaff3aa..0000000
+++ /dev/null
@@ -1,1377 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-              This file is generated from xml source: DO NOT EDIT
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-      -->
-<title>Guide de réécriture des URLs - Sujets avancés - Serveur Apache HTTP</title>
-<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
-<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
-<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
-<link href="/images/favicon.ico" rel="shortcut icon" /></head>
-<body id="manual-page"><div id="page-header">
-<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p>
-<p class="apache">Serveur Apache HTTP Version 2.3</p>
-<img alt="" src="/images/feather.gif" /></div>
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
-<div id="path">
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="/">Version 2.3</a> &gt; <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Guide de réécriture des URLs - Sujets avancés</h1>
-<div class="toplang">
-<p><span>Langues Disponibles: </span></p>
-</div>
-
-
-    <p>Ce document complémente la
-    <a href="../mod/mod_rewrite.html">documentation de référence</a> du
-    module <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>. Il décrit les différentes
-    manières d'utiliser le module d'Apache <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>
-    pour résoudre les problèmes d'URLs typiques auxquels sont souvent
-    confrontés les webmasters. Nous fournissons une description
-    détaillée de la résolution de chaque problème par la configuration
-    d'un jeu de règles de réécriture.</p>
-
-    <div class="warning">ATTENTION: il pourra s'avérer nécessaire de
-    modifier les exemples en fonction de la
-    configuration de votre serveur, par exemple en ajoutant le drapeau
-    <code>[PT]</code> si les modules <code class="module"><a href="/mod/mod_alias.html">mod_alias</a></code> et
-    <code class="module"><a href="/mod/mod_userdir.html">mod_userdir</a></code> sont utilisés, etc... Les jeux de
-    règles devront également être adaptés pour passer d'un contexte de
-    serveur à un contexte de répertoire (fichiers
-    <code>.htaccess</code>). Essayez de toujours bien comprendre ce que
-    fait un jeu de règles avant de l'utiliser, ce qui pourra vous éviter
-    bien des problèmes.</div>
-
-  </div>
-<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#cluster">Accès à une grappe de serveurs via un espace d'adressage
-      compatible</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#structuredhomedirs">Répertoires utilisateurs structurés</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#filereorg">Réorganisation du système de fichiers</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#redirect404">Rediriger les URLs erronées vers un autre serveur Web</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#archive-access-multiplexer">Multiplexeur d'accès aux archives</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#browser-dependent-content">Contenu dépendant du navigateur</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#dynamic-mirror">Miroir dynamique</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#reverse-dynamic-mirror">Miroir dynamique inverse</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#retrieve-missing-data">Récupérer des données manquantes depuis l'Intranet</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#load-balancing">Répartition de charge</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#new-mime-type">Nouveau type MIME, nouveau service</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#on-the-fly-content">Régéneration de contenu à la volée</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#autorefresh">Actualisation automatique d'un document</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#mass-virtual-hosting">Hébergement virtuel de masse</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#host-deny">Interdiction d'hôtes</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#proxy-deny">Interdiction du mandataire</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#special-authentication">Variante particulière d'authentification</a></li>
-<li><img alt="" src="/images/down.gif" /> <a href="#referer-deflector">Redirection basée sur le référent</a></li>
-</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du
-module</a></li><li><a href="intro.html">Introduction à
-mod_rewrite</a></li><li><a href="rewrite_guide.html">Guide de réécriture - exemples
-utiles</a></li><li><a href="tech.html">Détails techniques</a></li></ul></div>
-<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="cluster" id="cluster">Accès à une grappe de serveurs via un espace d'adressage
-      compatible</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment créer un espace d'adressage homogène et compatible
-         avec
-         tous les serveurs WWW d'une grappe de serveurs d'un intranet ?
-         C'est à dire que toutes les URLs (par définition
-         locales à un
-         serveur et dépendant donc de celui-ci) deviennent
-         véritablement <em>indépendantes</em> du serveur ! Nous voulons
-         disposer, pour accéder à l'espace de nommage WWW, d'un seul
-         espace d'adressage compatible : aucune URL ne
-         doit inclure d'information quelconque à propos du serveur
-         cible physique. La grappe de serveurs doit elle-même nous
-         diriger automatiquement vers le bon serveur cible physique,
-         selon les besoins, et ceci de manière transparente.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Tout d'abord, la connaissance des serveurs cibles est issue
-         de tables de correspondances externes (distribuées) qui
-         contiennent des informations sur la localisation de nos
-         utilisateurs, groupes et entités. Elles se présentent sous la
-         forme :</p>
-
-<div class="example"><pre>
-utilisateur1  serveur_utilisateur1
-utilisateur2  serveur_utilisateur2
-:      :
-</pre></div>
-
-          <p>On les enregistre sous forme de fichiers
-         <code>map.xxx-vers-serveur</code>. On doit ensuite faire
-         rediriger à tous les serveurs les URLs de la forme :</p>
-
-<div class="example"><pre>
-/u/utilisateur/chemin
-/g/groupe/chemin
-/e/entité/chemin
-</pre></div>
-
-          <p>vers</p>
-
-<div class="example"><pre>
-http://serveur-physique/u/utilisateur/chemin
-http://serveur-physique/g/groupe/chemin
-http://serveur-physique/e/entité/chemin
-</pre></div>
-
-          <p>si il n'est pas nécessaire que chaque chemin d'URL être valide sur chaque
-         serveur. Le jeu
-         de règles suivant le fait pour nous à l'aide des fichiers de
-         correspondance (en supposant que serveur0 soit un serveur par
-         défaut qui sera choisi si l'utilisateur ne possède aucune
-         entrée dans la table) :</p>
-
-<div class="example"><pre>
-RewriteEngine on
-
-RewriteMap      utilisateur-vers-serveur   txt:/chemin/vers/map.utilisateur-vers-serveur
-RewriteMap     groupe-vers-serveur   txt:/chemin/vers/map.groupe-vers-serveur
-RewriteMap    entité-vers-serveur   txt:/chemin/vers/map.entité-vers-serveur
-
-RewriteRule   ^/u/<strong>([^/]+)</strong>/?(.*)
-http://<strong>${utilisateur-vers-serveur:$1|serveur0}</strong>/u/$1/$2
-RewriteRule   ^/g/<strong>([^/]+)</strong>/?(.*)
-http://<strong>${groupe-vers-serveur:$1|serveur0}</strong>/g/$1/$2
-RewriteRule   ^/e/<strong>([^/]+)</strong>/?(.*)
-http://<strong>${entité-vers-serveur:$1|serveur0}</strong>/e/$1/$2
-
-RewriteRule   ^/([uge])/([^/]+)/?$          /$1/$2/.www/
-RewriteRule   ^/([uge])/([^/]+)/([^.]+.+)   /$1/$2/.www/$3\
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="structuredhomedirs" id="structuredhomedirs">Répertoires utilisateurs structurés</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Certains sites possédant des milliers d'utilisateurs
-         organisent les répertoires home de manière
-         structurée, <em>c'est à dire</em> que chaque répertoire home
-         se situe dans un sous-répertoire dont le nom commence (par
-         exemple) par le premier caractère du nom de l'utilisateur.
-         Ainsi, <code>/~foo/chemin</code> est dans
-         <code>/home/<strong>f</strong>/foo/.www/chemin</code>, tandis
-         que <code>/~bar/chemin</code> est dans
-         <code>/home/<strong>b</strong>/bar/.www/chemin</code>.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Le jeu de règles suivant permet de développer les URLs avec
-         tilde selon la représentation ci-dessus.</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteRule   ^/~(<strong>([a-z])</strong>[a-z0-9]+)(.*)  /home/<strong>$2</strong>/$1/.www$3
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="filereorg" id="filereorg">Réorganisation du système de fichiers</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Voici un cas d'espèce : une application très efficace qui
-         fait un usage intensif de règles <code>RewriteRule</code>
-         dans le contexte du répertoire pour présenter un aspect
-         compréhensible sur le Web sans modifier la structure des
-         données.
-         Les coulisses de l'affaire : <strong><em>net.sw</em></strong>
-         rassemble mes archives de paquetages de logiciels Unix
-         librement accessibles, que j'ai commencé à collectionner en
-         1992. Pour moi, c'est un passe-temps, mais aussi un travail,
-         car alors que j'étudie la science informatique, j'ai aussi
-         travaillé depuis de nombreuses années comme administrateur
-         système et réseau à mes heures perdues. Chaque semaine j'ai
-         besoin de tel ou tel logiciel, et j'ai donc créé une
-         arborescence très ramifiée de répertoires où je stocke les
-         paquetages :</p>
-
-<div class="example"><pre>
-drwxrwxr-x   2 netsw  users    512 Aug  3 18:39 Audio/
-drwxrwxr-x   2 netsw  users    512 Jul  9 14:37 Benchmark/
-drwxrwxr-x  12 netsw  users    512 Jul  9 00:34 Crypto/
-drwxrwxr-x   5 netsw  users    512 Jul  9 00:41 Database/
-drwxrwxr-x   4 netsw  users    512 Jul 30 19:25 Dicts/
-drwxrwxr-x  10 netsw  users    512 Jul  9 01:54 Graphic/
-drwxrwxr-x   5 netsw  users    512 Jul  9 01:58 Hackers/
-drwxrwxr-x   8 netsw  users    512 Jul  9 03:19 InfoSys/
-drwxrwxr-x   3 netsw  users    512 Jul  9 03:21 Math/
-drwxrwxr-x   3 netsw  users    512 Jul  9 03:24 Misc/
-drwxrwxr-x   9 netsw  users    512 Aug  1 16:33 Network/
-drwxrwxr-x   2 netsw  users    512 Jul  9 05:53 Office/
-drwxrwxr-x   7 netsw  users    512 Jul  9 09:24 SoftEng/
-drwxrwxr-x   7 netsw  users    512 Jul  9 12:17 System/
-drwxrwxr-x  12 netsw  users    512 Aug  3 20:15 Typesetting/
-drwxrwxr-x  10 netsw  users    512 Jul  9 14:08 X11/
-</pre></div>
-
-          <p>J'ai décidé en 1996 de rendre cette archive disponible pour
-         le monde via une interface web agréable. "Agréable" signifie
-         que je voulais vous offrir une interface où vous pourriez
-         naviguer directement à travers la hiérarchie des archives.
-         Mais "agréable" signifie aussi que je ne voulais rien changer
-         dans cette hiérarchie - même pas en ajoutant queques scripts
-         CGI à son sommet. Pourquoi ? Parceque j'avais prévu de rendre
-         ultérieurement la structure ci-dessus accessible aussi via
-         FTP, et je ne voulais pas voir de fichiers CGI ou Web à ce
-         niveau.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>La solution comporte deux parties : la première consiste en
-         un ensemble de scripts CGI qui créent toutes les pages à tous
-         les niveaux de répertoires à la volée. Je les ai placés dans
-         <code>/e/netsw/.www/</code> comme suit :</p>
-
-<div class="example"><pre>
--rw-r--r--   1 netsw  users    1318 Aug  1 18:10 .wwwacl
-drwxr-xr-x  18 netsw  users     512 Aug  5 15:51 DATA/
--rw-rw-rw-   1 netsw  users  372982 Aug  5 16:35 LOGFILE
--rw-r--r--   1 netsw  users     659 Aug  4 09:27 TODO
--rw-r--r--   1 netsw  users    5697 Aug  1 18:01 netsw-about.html
--rwxr-xr-x   1 netsw  users     579 Aug  2 10:33 netsw-access.pl
--rwxr-xr-x   1 netsw  users    1532 Aug  1 17:35 netsw-changes.cgi
--rwxr-xr-x   1 netsw  users    2866 Aug  5 14:49 netsw-home.cgi
-drwxr-xr-x   2 netsw  users     512 Jul  8 23:47 netsw-img/
--rwxr-xr-x   1 netsw  users   24050 Aug  5 15:49 netsw-lsdir.cgi
--rwxr-xr-x   1 netsw  users    1589 Aug  3 18:43 netsw-search.cgi
--rwxr-xr-x   1 netsw  users    1885 Aug  1 17:41 netsw-tree.cgi
--rw-r--r--   1 netsw  users     234 Jul 30 16:35 netsw-unlimit.lst
-</pre></div>
-
-          <p>Le sous-répertoire <code>DATA/</code> contient la structure
-         de répertoires proprement dite mentionnée plus haut, <em>c'est
-         à dire</em> les véritables ressources
-         <strong><em>net.sw</em></strong> et est mis à jour
-         automatiquement via <code>rdist</code> à intervalles de temps
-         réguliers. Reste la seconde partie du problème : comment
-         relier ces deux structures selon une arborescence d'URL
-         facile d'accès ? Il nous faut cacher le répertoire
-         <code>DATA/</code> à l'utilisateur durant l'exécution des
-         scripts CGI appropriés aux différentes URLs. Voici comment :
-         tout d'abord, j'ajoute ces deux règles dans le fichier de
-         configuration du répertoire racine <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code> du serveur afin de
-         réécrire le chemin d'URL public <code>/net.sw/</code> vers le
-         chemin interne <code>/e/netsw</code> :</p>
-
-<div class="example"><pre>
-RewriteRule  ^net.sw$       net.sw/        [R]
-RewriteRule  ^net.sw/(.*)$  e/netsw/$1
-</pre></div>
-
-          <p>La première règle concerne les requêtes qui ne comportent
-         pas de slash de fin ! C'est la seconde règle qui fait le
-         véritable travail. Et maintenant vient la super configuration
-         qui se trouve dans le fichier de configuration de répertoire
-         <code>/e/netsw/.www/.wwwacl</code> :</p>
-
-<div class="example"><pre>
-Options       ExecCGI FollowSymLinks Includes MultiViews
-
-RewriteEngine on
-
-#  l'accès s'effectue via le préfixe /net.sw/
-RewriteBase   /net.sw/
-
-#  tout d'abord, on réécrit le répertoire racine vers
-#  le script CGI qui lui est associé
-RewriteRule   ^$                       netsw-home.cgi     [L]
-RewriteRule   ^index\.html$            netsw-home.cgi     [L]
-
-#  on supprime les sous-répertoires lorsque
-#  le navigateur nous atteint depuis des pages de répertoire
-RewriteRule   ^.+/(netsw-[^/]+/.+)$    $1                 [L]
-
-#  on stoppe maintenant la réécriture pour les fichiers locaux
-RewriteRule   ^netsw-home\.cgi.*       -                  [L]
-RewriteRule   ^netsw-changes\.cgi.*    -                  [L]
-RewriteRule   ^netsw-search\.cgi.*     -                  [L]
-RewriteRule   ^netsw-tree\.cgi$        -                  [L]
-RewriteRule   ^netsw-about\.html$      -                  [L]
-RewriteRule   ^netsw-img/.*$           -                  [L]
-
-#  ce qui reste est un sous-répertoire qui peut être traité
-#  par un autre script CGI
-RewriteRule   !^netsw-lsdir\.cgi.*     -                  [C]
-RewriteRule   (.*)                     netsw-lsdir.cgi/$1
-</pre></div>
-
-          <p>Quelques indices pour l'interprétation :</p>
-
-          <ol>
-            <li>Remarquez le drapeau <code>L</code> (last) et l'absence
-           de chaîne de substitution ('<code>-</code>') dans la
-           quatrième partie.</li>
-
-            <li>Remarquez le caractère <code>!</code> (not)  et le
-           drapeau <code>C</code> (chain) dans la première règle de la
-           dernière partie.</li>
-
-            <li>Remarquez le modèle qui correspond à tout dans la
-           dernière règle.</li>
-          </ol>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="redirect404" id="redirect404">Rediriger les URLs erronées vers un autre serveur Web</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Une question typique de la FAQ à propos de la réécriture
-         revient souvent : comment rediriger vers un serveur B les
-         requêtes qui échouent sur un serveur A ? On s'acquitte en
-         général de cette tâche via des scripts CGI <code class="directive"><a href="/mod/core.html#errordocument">ErrorDocument</a></code> en Perl, mais il
-         existe aussi une solution avec <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>.
-         Notez cependant que les performances sont moindres qu'avec
-         l'utilisation d'un script CGI <code class="directive"><a href="/mod/core.html#errordocument">ErrorDocument</a></code> !</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>La première solution possède des performances supérieures
-         mais moins de souplesse, et est moins sure :</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteCond  %{DOCUMENT_ROOT/%{REQUEST_URI}  <strong>!-f</strong>
-RewriteRule   ^(.+)                             http://<strong>serveurB</strong>.dom/$1
-</pre></div>
-
-          <p>Le problème réside dans le fait que seules les pages
-         situées dans la racine <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code> seront redirigées. Mais
-         même si vous pouvez ajouter des conditions supplémentaires (par
-         exemple pour traiter aussi les répertoires home, etc...), il
-         existe une meilleure solution :</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteCond   %{REQUEST_URI} <strong>!-U</strong>
-RewriteRule   ^(.+)          http://<strong>serveurB</strong>.dom/$1
-</pre></div>
-reprendre ici
-          <p>On utilise ici la fonctionnalité de prévision des URLs
-         futures de <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>. Et cette solution
-         fonctionne pour tous les types d'URLs et de manière sûre. Par
-         contre, cette méthode a un impact sur les performances du
-         serveur web, car chaque requête entraîne le traitement d'une
-         sous-requête interne supplémentaire. Par conséquent, vous
-         pouvez l'utiliser si votre serveur web s'exécute sur un CPU
-         puissant. Dans le cas d'une machine plus lente, utilisez la
-         première approche, ou mieux, un script CGI <code class="directive"><a href="/mod/core.html#errordocument">ErrorDocument</a></code>.</p>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="archive-access-multiplexer" id="archive-access-multiplexer">Multiplexeur d'accès aux archives</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Connaissez-vous la grande archive CPAN (Comprehensive Perl Archive
-          Network) située à <a href="http://www.perl.com/CPAN">http://www.perl.com/CPAN</a> ?
-         CPAN redirige automatiquement les navigateurs vers un des
-         nombreux serveurs FTP répartis à travers le monde
-         (généralement un serveur assez proche du client) ; chaque
-         serveur héberge l'intégralité d'un miroir CPAN. Il s'agit ni
-         plus ni moins qu'un service d'accès FTP multiplexé. Alors que
-         le fonctionnement de l'archive CPAN repose sur des scripts
-         CGI, comment implémenter une approche similaire avec
-         <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> ?</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Premièrement, remarquons que depuis la version 3.0.0,
-         <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> accepte aussi le préfixe
-         "<code>ftp:</code>" dans les redirections. Et deuxièmement,
-         l'approximation de la localisation peut être effectuée par une
-         table de correspondances <code class="directive"><a href="/mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>, en se basant sur
-         la racine du domaine du client. Un jeu de règles chaînées
-         astucieux nous permet d'utiliser cette racine du domaine comme
-         clé de recherche dans notre table de correspondances de
-         multiplexage.</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteMap    multiplex                txt:/chemin/vers/map.cxan
-RewriteRule   ^/CxAN/(.*)              %{REMOTE_HOST}::$1                 [C]
-RewriteRule   ^.+\.<strong>([a-zA-Z]+)</strong>::(.*)$
-${multiplex:<strong>$1</strong>|ftp.défaut.dom}$2  [R,L]
-</pre></div>
-
-<div class="example"><pre>
-##
-##  map.cxan -- Multiplexing Map for CxAN%{DOCUMENT_ROOT/%{REQUEST_URI}
-##
-
-de        ftp://ftp.cxan.de/CxAN/
-uk        ftp://ftp.cxan.uk/CxAN/
-com       ftp://ftp.cxan.com/CxAN/
- :
-##EOF##
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="browser-dependent-content" id="browser-dependent-content">Contenu dépendant du navigateur</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Il est parfois nécessaire, au moins pour les pages
-         principales, de fournir un contenu optimum adapté à chaque
-         type de navigateur, c'est à dire que l'on doit
-         fournir une version pour les navigateurs courants, une version
-         différente pour les navigateurs en mode texte du style de
-         Lynx, et une autre pour les autres navigateurs.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On ne peut pas utiliser la négociation de contenu car les
-         navigateurs ne fournissent pas leur type dans cette forme.
-         Nous devons nous baser sur l'en-tête HTTP "User-Agent". La
-         configuration ci-dessous effectue les actions suivantes : si
-         l'en-tête HTTP "User-Agent" commence par "Mozilla/3", la page
-         <code>foo.html</code> est réécrite en <code>foo.NS.html</code>
-         et la réécriture s'arrête. Si le navigateur est "Lynx" ou
-         "Mozilla" version 1 ou 2, la page
-         <code>foo.html</code> est réécrite en
-         <code>foo.20.html</code>. Tous les autres navigateurs
-         reçoivent la page <code>foo.32.html</code>. Voici le jeu de
-         règles :</p>
-
-<div class="example"><pre>
-RewriteCond %{HTTP_USER_AGENT}  ^<strong>Mozilla/3</strong>.*
-RewriteRule ^foo\.html$         foo.<strong>NS</strong>.html          [<strong>L</strong>]
-
-RewriteCond %{HTTP_USER_AGENT}  ^<strong>Lynx/</strong>.*         [OR]
-RewriteCond %{HTTP_USER_AGENT}  ^<strong>Mozilla/[12]</strong>.*
-RewriteRule ^foo\.html$         foo.<strong>20</strong>.html          [<strong>L</strong>]
-
-RewriteRule ^foo\.html$         foo.<strong>32</strong>.html          [<strong>L</strong>]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="dynamic-mirror" id="dynamic-mirror">Miroir dynamique</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Supposons que nous voulions intégrer dans notre espace de
-         nommage de belles pages web situées sur un serveur distant.
-         Dans le cas d'un serveur FTP, nous aurions utilisé le
-         programme <code>mirror</code> qui maintient vraiment une copie
-         des données distantes mise à jour explicitement sur le serveur
-         local. Pour un serveur web, nous pourrions utiliser le
-         programme <code>webcopy</code> qui utilise le protocole HTTP.
-         Ces deux techniques présentent cependant un
-         inconvénient majeur : la copie locale n'est véritablement à
-         jour qu'au moment où nous avons lancé le programme. Plutôt qu'
-         un miroir statique devant être défini explicitement, il serait
-         préférable d'avoir un miroir dynamique dont le contenu serait
-         mis à jour automatiquement, à la demande, sur le(s) serveur(s)
-         distant(s).</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Pour y parvenir, on fait
-         correspondre la page web ou même l'ensemble du
-         répertoire web distants à notre espace de nommage en utilisant
-         la fonctionnalité <dfn>Mandataire</dfn> (drapeau
-         <code>[P]</code> ou <code>[proxy]</code>) :</p>
-
-<div class="example"><pre>
-RewriteEngine  on
-RewriteBase    /~quux/
-RewriteRule    ^<strong>page-convoitée/</strong>(.*)$  <strong>http://www.tstimpreso.com/page-convoitée/</strong>$1  [<strong>P</strong>]
-</pre></div>
-
-<div class="example"><pre>
-RewriteEngine  on
-RewriteBase    /~quux/
-RewriteRule    ^<strong>usa-news\.html</strong>$   <strong>http://www.quux-corp.com/news/index.html</strong>  [<strong>P</strong>]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="reverse-dynamic-mirror" id="reverse-dynamic-mirror">Miroir dynamique inverse</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>...</dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-<div class="example"><pre>
-RewriteEngine on
-RewriteCond   /miroir/du/site-distant/$1           -U
-RewriteRule   ^http://www\.site-distant\.com/(.*)$ /miroir/du/site-distant/$1
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="retrieve-missing-data" id="retrieve-missing-data">Récupérer des données manquantes depuis l'Intranet</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>C'est une méthode astucieuse permettant de faire
-         fonctionner virtuellement un serveur web d'entreprise
-         (<code>www.quux-corp.dom</code>) sur
-         l'Internet (extérieur à l'entreprise), tout en maintenant et
-         conservant dans la réalité ses données sur un serveur web
-         (<code>www2.quux-corp.dom</code>) de l'Intranet (interne à
-         l'entreprise) protégé par un pare-feu. L'astuce consiste, sur
-         le serveur web externe, à récupérer à la volée sur le serveur interne
-         les données demandées.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Tout d'abord, nous devons nous assurer que notre pare-feu
-         protège bien le serveur web interne, et que seul le serveur
-         web externe est autorisé à y récupérer des données. Dans le
-         cas d'un filtrage par paquets, nous pourrions par exemple
-         définir un jeu de règles du pare-feu du style :</p>
-
-<div class="example"><pre>
-<strong>ALLOW</strong> serveur www.quux-corp.dom Port &gt;1024 --&gt;
-serveur www2.quux-corp.dom Port <strong>80</strong>
-<strong>DENY</strong>  serveur *                 Port *     --&gt;
-serveur www2.quux-corp.dom Port <strong>80</strong>
-</pre></div>
-
-          <p>Il vous suffit d'adapter ces règles à la syntaxe de votre
-         pare-feu. Nous pouvons maintenant définir les règles de
-         <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> qui serviront à récupérer les
-         données manquantes en arrière-plan via la fonctionnalité de
-         mandataire :</p>
-
-<div class="example"><pre>
-RewriteRule ^/~([^/]+)/?(.*)          /home/$1/.www/$2 [C]
-# L'utilisation de REQUEST_FILENAME ci dessous est correcte dans cet
-# exemple de contexte au niveau serveur car la règle qui fait référence
-# à REQUEST_FILENAME est chaînée à une règle qui définit
-# REQUEST_FILENAME.
-RewriteCond %{REQUEST_FILENAME}       <strong>!-f</strong>
-RewriteCond %{REQUEST_FILENAME}       <strong>!-d</strong>
-RewriteRule ^/home/([^/]+)/.www/?(.*) http://<strong>www2</strong>.quux-corp.dom/~$1/pub/$2 [<strong>P</strong>]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="load-balancing" id="load-balancing">Répartition de charge</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Supposons que nous voulions répartir la charge du trafic
-         vers <code>www.example.com</code> entre les serveurs
-         <code>www[0-5].example.com</code> (un total de 6 serveurs).
-         Comment y parvenir ?</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Il existe de nombreuses solutions à ce problème. Nous
-         décrirons tout d'abord une variante assez connue basée sur
-         DNS, puis une autre basée sur <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>
-         :</p>
-
-          <ol>
-            <li>
-              <strong>Round-Robin (tourniquet) DNS</strong>
-
-              <p>La méthode de répartition de charge la plus simple
-             consiste à utiliser le "DNS round-robin"
-             (rotation d'adresses) de
-             <code>BIND</code>. Vous devez seulement enregistrer les
-             serveurs <code>www[0-9].example.com</code> de manière
-             habituelle dans votre DNS à l'aide d'enregistrements de
-             type A (adresse), comme suit :</p>
-
-<div class="example"><pre>
-www0   IN  A       1.2.3.1
-www1   IN  A       1.2.3.2
-www2   IN  A       1.2.3.3
-www3   IN  A       1.2.3.4
-www4   IN  A       1.2.3.5
-www5   IN  A       1.2.3.6
-</pre></div>
-
-              <p>Puis vous ajoutez les entrées suivantes :</p>
-
-<div class="example"><pre>
-www   IN  A       1.2.3.1
-www   IN  A       1.2.3.2
-www   IN  A       1.2.3.3
-www   IN  A       1.2.3.4
-www   IN  A       1.2.3.5
-</pre></div>
-
-              <p>Maintenant, lors de la résolution de
-             <code>www.example.com</code>, <code>BIND</code> renvoie
-             <code>www0-www5</code> - mais selon une permutation
-             différente à chaque fois. De cette façon, les clients sont
-             répartis entre les différents serveurs. Notez cependant
-             que cette méthode de répartition de charge n'est pas
-             parfaite, car les résolutions DNS sont mises en cache par
-             les clients et les autres serveurs DNS du réseau, si
-             bien que lorsqu'un client s'est vu résoudre
-             <code>www.example.com</code> en un des
-             <code>wwwN.example.com</code>, toutes ses requêtes ultérieures
-             continueront d'aller vers la même adresse IP (et donc le
-             même serveur), au lieu d'être réparties entre les autres
-             serveurs. Le résultat est cependant globalement
-             satisfaisant car les requêtes sont réparties
-             collectivement entre chacun des serveurs web.</p>
-            </li>
-
-            <li>
-              <strong>Répartition de charge basée sur DNS</strong>
-
-              <p>Une méthode de répartition de charge sophistiquée basée
-             sur DNS consiste à utiliser le programme
-             <code>lbnamed</code> que l'on peut trouver à <a href="http://www.stanford.edu/~riepel/lbnamed/">
-              http://www.stanford.edu/~riepel/lbnamed/</a>.
-             Associé à des outils auxiliaires, il s'agit d'un programme
-             en Perl 5 qui permet d'effectuer une véritable répartition
-             de charge basée sur DNS.</p>
-            </li>
-
-            <li>
-              <strong>Round-Robin basé sur la fonctionnalité de
-             mandataire</strong>
-
-              <p>Dans cette variante, nous utilisons
-             <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> et sa fonctionnalité de
-             mandataire. Tout d'abord, nous définissons
-             <code>www0.example.com</code> comme un autre nom de
-             <code>www.example.com</code> en ajoutant l'entrée</p>
-
-<div class="example"><pre>
-www    IN  CNAME   www0.example.com.
-</pre></div>
-
-              <p>dans le DNS. Puis nous définissons
-             <code>www0.example.com</code> comme serveur mandataire
-             seulement, c'est à dire que nous configurons cette machine
-             de telle sorte que toutes les URLs qui lui arrivent soient
-             simplement transmises, via le mandataire interne, vers un
-             des 5 autres serveurs (<code>www1-www5</code>). Pour y
-             parvenir, nous définissons tout d'abord un jeu de règles
-             qui contacte un script de répartition de charge
-             <code>lb.pl</code> pour toutes les URLs.</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteMap    lb      prg:/chemin/vers/lb.pl
-RewriteRule   ^/(.+)$ ${lb:$1}           [P,L]
-</pre></div>
-
-              <p>Puis nous écrivons <code>lb.pl</code> :</p>
-
-<div class="example"><pre>
-#!/chemin/vers/perl
-##
-##  lb.pl -- script de répartition de charge
-##
-
-$| = 1;
-
-$name   = "www";     # la base du nom du serveur
-$first  = 1;         # le premier serveur (pas 0 ici, car 0 correspond à
-                    # moi-même)
-$last   = 5;         # le dernier serveur du tourniquet
-$domain = "foo.dom"; # le nom de domaine
-
-$cnt = 0;
-while (&lt;STDIN&gt;) {
-    $cnt = (($cnt+1) % ($last+1-$first));
-    $server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);
-    print "http://$server/$_";
-}
-
-##EOF##
-</pre></div>
-
-              <div class="note">Une dernière remarque : à quoi cela sert-il ?
-             <code>www0.example.com</code>, quant à lui, n'est-il pas
-             toujours surchargé ? La réponse est oui, il est surchargé,
-             mais seulement avec des requêtes de mandataire ! Tous les
-             traitements SSI, CGI, ePerl, etc... sont entièrement
-             effectués sur les autres machines. Ceci peut fonctionner
-             correctement pour un site complexe. Le plus grand risque
-             réside ici dans le fait que www0 est un passage obligé et
-             que s'il est hors service, les autres serveurs deviennent
-             inaccessibles.</div>
-            </li>
-
-            <li>
-              <strong>Répartiteur de charge dédié</strong>
-
-              <p>Il existe aussi des solutions plus sophistiquées.
-             Cisco, F5, et de nombreuses autres sociétés proposent
-             des répartiteurs de charge matériels (utilisés en général
-             en mode doublé à des fins de redondance), qui offrent une
-             répartition de charge sophistiquée et des fonctionnalités
-             de passage automatique en mode de fonctionnement par défaut
-             en cas de problème. Cependant, des solutions logicielles
-             offrent aussi des fonctionnalités similaires avec du
-             matériel standard. Si vos besoins correspondent et si vous
-             êtes assez riche, vous pouvez envisager ces solutions. La
-             <a href="http://vegan.net/lb/">liste de diffusion lb-l</a>
-             est un bon point de départ pour vos recherches.</p>
-            </li>
-          </ol>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="new-mime-type" id="new-mime-type">Nouveau type MIME, nouveau service</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>On trouve de nombreux programmes CGI attractifs sur le
-         réseau. Mais leur emploi est souvent rébarbatif, si bien que
-         de nombreux webmasters ne les utilisent pas. Même la
-         fonctionnalité de gestionnaire Action d'Apache pour les types
-         MIME ne convient que lorsque les programmes CGI ne nécessitent
-         pas d'URLs spéciales (réellement <code>PATH_INFO</code> et
-         <code>QUERY_STRINGS</code>) en entrée. Tout d'abord,
-         définissons un nouveau type de fichier ayant pour extension
-         <code>.scgi</code> (pour CGI sécurisé) qui sera associé pour
-         traitement au programme populaire <code>cgiwrap</code>. Le
-         problème est le suivant : par exemple, si on utilise un style
-         d'URL bien défini (voir ci-dessus), un fichier situé dans le
-         répertoire home de l'utilisateur pourra correspondre à l'URL
-         <code>/u/user/foo/bar.scgi</code>. Mais <code>cgiwrap</code>
-         nécessite des URLs de la forme
-         <code>/~user/foo/bar.scgi/</code>. La règle suivante apporte
-         la solution :</p>
-
-<div class="example"><pre>
-RewriteRule ^/[uge]/<strong>([^/]+)</strong>/\.www/(.+)\.scgi(.*) ...
-... /interne/cgi/utilisateur/cgiwrap/~<strong>$1</strong>/$2.scgi$3  [NS,<strong>T=application/x-http-cgi</strong>]
-</pre></div>
-
-          <p>Ou considérons ces autres programmes attractifs :
-         <code>wwwlog</code> (qui affiche le journal des accès
-         <code>access.log</code> pour un sous répertoire correspondant
-         à une URL) et <code>wwwidx</code> (qui exécute Glimpse sur un
-         sous répertoire correspondant à une URL). Nous devons fournir
-         l'URL correspondante à ces programmes afin qu'ils sachent sur
-         quel répertoire ils doivent agir. Mais c'est en général
-         compliqué, car ils peuvent être appelés à nouveau
-         par la forme d'URL alternative, c'est à dire que typiquement,
-         nous exécuterions le programme <code>swwidx</code> depuis
-         <code>/u/user/foo/</code> via un hyperlien vers</p>
-
-<div class="example"><pre>
-/internal/cgi/user/swwidx?i=/u/user/foo/
-</pre></div>
-
-          <p>ce qui n'est pas satisfaisant, car nous devons expliciter
-         <strong>à la fois</strong> la localisation du répertoire
-         <strong>et</strong> la localisation du programme CGI dans
-         l'hyperlien. Si nous devons nous réorganiser, il nous faudra
-         beaucoup de temps pour modifier tous les hyperliens.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>La solution consiste ici à fournir un nouveau format d'URL
-         qui redirige automatiquement vers la requête CGI appropriée.
-         Pour cela, on définit les règles suivantes :</p>
-
-<div class="example"><pre>
-RewriteRule   ^/([uge])/([^/]+)(/?.*)/\*  /interne/cgi/utilisateur/wwwidx?i=/$1/$2$3/
-RewriteRule   ^/([uge])/([^/]+)(/?.*):log /interne/cgi/utilisateur/wwwlog?f=/$1/$2$3
-</pre></div>
-
-          <p>Et maintenant l'hyperlien qui renvoie vers
-         <code>/u/user/foo/</code> se réduit à</p>
-
-<div class="example"><pre>
-HREF="*"
-</pre></div>
-
-          <p>qui est automatiquement transformé en interne en</p>
-
-<div class="example"><pre>
-/internal/cgi/user/wwwidx?i=/u/user/foo/
-</pre></div>
-
-          <p>Une approche similaire permet d'invoquer le programme CGI
-         du journal des accès lorsque l'hyperlien <code>:log</code> est
-         utilisé.</p>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="on-the-fly-content" id="on-the-fly-content">Régéneration de contenu à la volée</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Voici une fonctionnalité vraiment ésotérique : des pages
-         générées dynamiquement mais servies statiquement, c'est à
-         dire que les pages doivent être servies comme des pages
-         purement statiques (lues depuis le système de fichiers et
-         servies en l'état), mais doivent être générées dynamiquement
-         par le serveur web si elles sont absentes. Ainsi, vous pouvez
-         avoir des pages générées par CGI qui sont servies statiquement
-         à moins qu'un administrateur (ou une tâche de
-         <code>cron</code>) ne supprime les
-         contenus statiques. Les contenus sont ensuite actualisés.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          A cet effet, on utilise le jeu de règles suivant :
-
-<div class="example"><pre>
-# Cet exemple n'est valable que dans un contexte de répertoire
-RewriteCond %{REQUEST_FILENAME}   <strong>!-s</strong>
-RewriteRule ^page\.<strong>html</strong>$          page.<strong>cgi</strong>   [T=application/x-httpd-cgi,L]
-</pre></div>
-
-          <p>Ainsi, une requête pour <code>page.html</code> entraîne
-         l'exécution interne de la page <code>page.cgi</code>
-         correspondante si <code>page.html</code> n'existe pas
-         ou possède une taille de fichier nulle. L'astuce réside ici
-         dans le fait que <code>page.cgi</code> est un script CGI
-         qui (en plus de <code>STDOUT</code>) écrit sa sortie dans le
-         fichier <code>page.html</code>. Une fois le script exécuté, le
-         serveur sert la page <code>page.html</code> fraîchement
-         générée. Si le webmaster
-         veut actualiser les contenus, il lui suffit de supprimer le
-         fichier <code>page.html</code> (le plus souvent via une tâche
-         de <code>cron</code>).</p>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="autorefresh" id="autorefresh">Actualisation automatique d'un document</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Lorsque nous créons une page web complexe, ne serait-il pas
-         souhaitable que le navigateur web actualise automatiquement la
-         page chaque fois que nous en sauvegardons une nouvelle version
-         à partir de notre éditeur ? Impossible ?</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Non ! Nous allons pour cela combiner la fonctionnalité MIME
-         multipart, la fonctionnalité NPH du serveur web et la
-         puissance de <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> pour la manipulation
-         d'URLs. Tout d'abord, nous définissons une nouvelle
-         fonctionnalité pour les URLs : l'ajout de
-         <code>:refresh</code> à toute URL fait que la 'page' est
-         actualisée chaque fois que la ressource est mise à jour dans
-         le système de fichiers.</p>
-
-<div class="example"><pre>
-RewriteRule   ^(/[uge]/[^/]+/?.*):refresh  /interne/cgi/apache/nph-refresh?f=$1
-</pre></div>
-
-          <p>Nous appelons maintenant cette URL</p>
-
-<div class="example"><pre>
-/u/foo/bar/page.html:refresh
-</pre></div>
-
-          <p>ce qui entraîne en interne l'invocation de l'URL</p>
-
-<div class="example"><pre>
-/interne/cgi/apache/nph-refresh?f=/u/foo/bar/page.html
-</pre></div>
-
-          <p>Il ne reste plus qu'à écrire le script CGI. Bien que l'on
-         écrive habituellement dans ces cas "laissé à la charge du
-         lecteur à titre d'exercice", ;-) je vous l'offre, aussi.</p>
-
-<div class="example"><pre>
-#!/sw/bin/perl
-##
-##  nph-refresh -- script NPH/CGI pour l'actualisation automatique de
-##  pages
-##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
-##
-$| = 1;
-
-#   éclate la variable QUERY_STRING
-@pairs = split(/&amp;/, $ENV{'QUERY_STRING'});
-foreach $pair (@pairs) {
-    ($name, $value) = split(/=/, $pair);
-    $name =~ tr/A-Z/a-z/;
-    $name = 'QS_' . $name;
-    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-    eval "\$$name = \"$value\"";
-}
-$QS_s = 1 if ($QS_s eq '');
-$QS_n = 3600 if ($QS_n eq '');
-if ($QS_f eq '') {
-    print "HTTP/1.0 200 OK\n";
-    print "Content-type: text/html\n\n";
-    print "&amp;lt;b&amp;gt;ERREUR&amp;lt;/b&amp;gt;: Aucun fichier fourni\n";
-    exit(0);
-}
-if (! -f $QS_f) {
-    print "HTTP/1.0 200 OK\n";
-    print "Content-type: text/html\n\n";
-    print "&amp;lt;b&amp;gt;ERREUR&amp;lt;/b&amp;gt;: Fichier $QS_f non trouvé\n";
-    exit(0);
-}
-
-sub print_http_headers_multipart_begin {
-    print "HTTP/1.0 200 OK\n";
-    $bound = "ThisRandomString12345";
-    print "Content-type: multipart/x-mixed-replace;boundary=$bound\n";
-    &amp;print_http_headers_multipart_next;
-}
-
-sub print_http_headers_multipart_next {
-    print "\n--$bound\n";
-}
-
-sub print_http_headers_multipart_end {
-    print "\n--$bound--\n";
-}
-
-sub displayhtml {
-    local($buffer) = @_;
-    $len = length($buffer);
-    print "Content-type: text/html\n";
-    print "Content-length: $len\n\n";
-    print $buffer;
-}
-
-sub readfile {
-    local($file) = @_;
-    local(*FP, $size, $buffer, $bytes);
-    ($x, $x, $x, $x, $x, $x, $x, $size) = stat($file);
-    $size = sprintf("%d", $size);
-    open(FP, "&amp;lt;$file");
-    $bytes = sysread(FP, $buffer, $size);
-    close(FP);
-    return $buffer;
-}
-
-$buffer = &amp;readfile($QS_f);
-&amp;print_http_headers_multipart_begin;
-&amp;displayhtml($buffer);
-
-sub mystat {
-    local($file) = $_[0];
-    local($time);
-
-    ($x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime) = stat($file);
-    return $mtime;
-}
-
-$mtimeL = &amp;mystat($QS_f);
-$mtime = $mtime;
-for ($n = 0; $n &amp;lt; $QS_n; $n++) {
-    while (1) {
-        $mtime = &amp;mystat($QS_f);
-        if ($mtime ne $mtimeL) {
-            $mtimeL = $mtime;
-            sleep(2);
-            $buffer = &amp;readfile($QS_f);
-            &amp;print_http_headers_multipart_next;
-            &amp;displayhtml($buffer);
-            sleep(5);
-            $mtimeL = &amp;mystat($QS_f);
-            last;
-        }
-        sleep($QS_s);
-    }
-}
-
-&amp;print_http_headers_multipart_end;
-
-exit(0);
-
-##EOF##
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="mass-virtual-hosting" id="mass-virtual-hosting">Hébergement virtuel de masse</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>La fonctionnalité <code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> d'Apache est intéressante et
-         fonctionne de manière satisfaisante jusqu'à quelques
-         douzaines de serveurs virtuels. Par contre, si vous êtes un
-         FAI et devez héberger des centaines de serveurs virtuels,
-         cette méthode n'est pas optimale.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Pour fournir cette fonctionnalité avec
-         <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>, on fait correspondre à notre espace de
-         nommage la page web ou même le répertoire complet distants en
-         utilisant la fonctionnalité <dfn>Mandataire</dfn>
-         (drapeau <code>[P]</code>) :</p>
-
-<div class="example"><pre>
-##
-##  vhost.map
-##
-www.vhost1.dom:80  /chemin/vers/racine-doc/vhost1
-www.vhost2.dom:80  /chemin/vers/racine-doc/vhost2
-     :
-www.vhostN.dom:80  /chemin/vers/racine-doc/vhostN
-</pre></div>
-
-<div class="example"><pre>
-##
-##  httpd.conf
-##
-    :
-#   utilisation du nom d'hôte canonique pour les redirections, etc...
-UseCanonicalName on
-
-    :
-#   ajout du serveur virtuel en tête du format CLF
-CustomLog  /chemin/vers/access_log  "%{VHOST}e %h %l %u %t \"%r\" %&gt;s %b"
-    :
-
-#   activation du moteur de réécriture pour le serveur principal
-RewriteEngine on
-
-#   définition de deux tables de correspondances : une première pour
-#   corriger les URLs et une seconde qui associe les serveurs virtuels
-#   disponibles avec leurs racines des documents correspondantes.
-RewriteMap    lowercase    int:tolower
-RewriteMap    vhost        txt:/chemin/vers/vhost.map
-
-#   et enfin sélection proprement dite du serveur virtuel approprié via
-#   une seule règle longue et complexe :
-#
-#   1. on s'assure de ne pas sélectionner un hôte virtuel pour les
-#   adresses communes
-
-RewriteCond   %{REQUEST_URI}  !^/adresse-commune1/.*
-RewriteCond   %{REQUEST_URI}  !^/adresse-commune2/.*
-    :
-RewriteCond   %{REQUEST_URI}  !^/adresse-communeN/.*
-#
-#   2. on vérifie que l'on dispose bien d'un en-tête Host, car
-#   actuellement, cette méthode ne peut faire de l'hébergement virtuel
-#   qu'avec cet en-tête
-RewriteCond   %{HTTP_HOST}  !^$
-#
-#   3. mise en minuscules du nom d'hôte
-RewriteCond   ${lowercase:%{HTTP_HOST}|NONE}  ^(.+)$
-#
-#   4. recherche ce ce nom d'hôte dans vhost.map et
-#      enregistrement de celui-ci seulement s'il s'agit d'un chemin
-#      (et non "NONE" en provenance de la condition précédente)
-RewriteCond   ${vhost:%1}  ^(/.*)$
-#
-#   5. nous pouvons enfin faire correspondre l'URL avec la racine des
-#   documents correspondant au serveur virtuel approprié et enregistrer
-#   ce dernier à des fins de journalisation
-RewriteRule   ^/(.*)$   %1/$1  [E=VHOST:${lowercase:%{HTTP_HOST}}]
-    :
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="host-deny" id="host-deny">Interdiction d'hôtes</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment interdire l'accès à notre serveur à une liste
-         d'hôtes ?</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Pour Apache &gt;= 1.3b6 :</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteMap    hôtes-interdits  txt:/chemin/vers/hôtes-interdits
-RewriteCond   ${hôtes-interdits:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
-RewriteCond   ${hôtes-interdits:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
-RewriteRule   ^/.*  -  [F]
-</pre></div>
-
-          <p>Pour Apache &lt;= 1.3b6 :</p>
-
-<div class="example"><pre>
-RewriteEngine on
-RewriteMap    hôtes-interdits  txt:/chemin/vers/hôtes-interdits
-RewriteRule   ^/(.*)$ ${hôtes-interdits:%{REMOTE_HOST}|NOT-FOUND}/$1
-RewriteRule   !^NOT-FOUND/.* - [F]
-RewriteRule   ^NOT-FOUND/(.*)$ ${hôtes-interdits:%{REMOTE_ADDR}|NOT-FOUND}/$1
-RewriteRule   !^NOT-FOUND/.* - [F]
-RewriteRule   ^NOT-FOUND/(.*)$ /$1
-</pre></div>
-
-<div class="example"><pre>
-##
-##  hosts.deny
-##
-##  ATTENTION! Ceci est une table de correspondances, pas une liste,
-##  même si on l'utilise en tant que telle. mod_rewrite l'interprète
-##  comme un ensemble de paires clé/valeur ; chaque entrée doit donc
-##  au moins posséder une valeur fictive "-".
-##
-
-193.102.180.41 -
-bsdti1.sdm.de  -
-192.76.162.40  -
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="proxy-deny" id="proxy-deny">Interdiction du mandataire</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment interdire l'utilisation du mandataire d'Apache pour
-         un certain hôte, ou même seulement pour un utilisateur
-         de cet hôte ?</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Nous devons tout d'abord nous assurer que
-         <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> arrive après(!)
-         <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code> dans le fichier de configuration
-         lors de la compilation du serveur web Apache. De cette façon,
-         il est appelé <em>avant</em> <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code>. Nous
-         pouvons ensuite définir cette règle pour une interdiction
-         dépendant de l'hôte :</p>
-
-<div class="example"><pre>
-RewriteCond %{REMOTE_HOST} <strong>^hôte-à-rejeter\.mon-domaine\.com$</strong>
-RewriteRule !^http://[^/.]\.mon-domaine.com.*  - [F]
-</pre></div>
-
-          <p>...et celle-ci pour une interdiction dépendant de
-         utilisateur@hôte :</p>
-
-<div class="example"><pre>
-RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST}  <strong>^utilisateur-à-
-rejeter@hôte-à-rejeter\.mon-domaine\.com$</strong>
-RewriteRule !^http://[^/.]\.mon-domaine.com.*  - [F]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="special-authentication" id="special-authentication">Variante particulière d'authentification</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>On a parfois besoin d'une authentification très
-         particulière, par exemple une authentification qui vérifie la
-         présence d'un utilisateur dans une liste explicitement
-         définie. Seuls ceux qui sont présents dans la liste se voient
-         accorder un accès, et ceci sans avoir à
-         s'identifier/authentifier (comme c'est le cas avec une
-         authentification de base via <code class="module"><a href="/mod/mod_auth.html">mod_auth</a></code>).</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On définit une liste de conditions de réécriture pour
-         interdire l'accès à tout le monde, sauf aux utilisateurs
-         autorisés :</p>
-
-<div class="example"><pre>
-RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^ami1@client1.quux-corp\.com$</strong>
-RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^ami2</strong>@client2.quux-corp\.com$
-RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^ami3</strong>@client3.quux-corp\.com$
-RewriteRule ^/~quux/seulement-pour-les-amis/      -                                 [F]
-</pre></div>
-        </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
-<div class="section">
-<h2><a name="referer-deflector" id="referer-deflector">Redirection basée sur le référent</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment écrire un programme souple qui redirige certaines
-         URLs en se basant sur l'en-tête HTTP "Referer", et peut être
-         configuré avec autant de pages de référence
-         que l'on veut ?</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>On utilise le jeu de règles vraiment astucieux suivant :</p>
-
-<div class="example"><pre>
-RewriteMap  deflector txt:/chemin/vers/deflector.map
-
-RewriteCond %{HTTP_REFERER} !=""
-RewriteCond ${deflector:%{HTTP_REFERER}} ^-$
-RewriteRule ^.* %{HTTP_REFERER} [R,L]
-
-RewriteCond %{HTTP_REFERER} !=""
-RewriteCond ${deflector:%{HTTP_REFERER}|NOT-FOUND} !=NOT-FOUND
-RewriteRule ^.* ${deflector:%{HTTP_REFERER}} [R,L]
-</pre></div>
-
-          <p>... en association avec la table de réécriture
-         correspondante :</p>
-
-<div class="example"><pre>
-##
-##  deflector.map
-##
-
-http://www.mauvais-sujets.com/mauvais/index.html    -
-http://www.mauvais-sujets.com/mauvais/index2.html   -
-http://www.mauvais-sujets.com/mauvais/index3.html   http://quelque-part.com/
-</pre></div>
-
-          <p>Les requêtes sont redirigées vers la page de référence
-         (lorsque la valeur correspondant à la clé extraite de la table
-         de correspondances est égale à "<code>-</code>"), ou vers une
-         URL spécifique (lorsqu'une URL est définie dans la table de
-         correspondances comme second argument).</p>
-        </dd>
-      </dl>
-
-    </div></div>
-<div class="bottomlang">
-<p><span>Langues Disponibles: </span></p>
-</div><div id="footer">
-<p class="apache">Copyright 2010 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
-<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p></div>
-</body></html>
\ No newline at end of file