<?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><!--
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
+<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
-<title>mod_rewrite - Serveur Apache HTTP</title>
+<title>mod_rewrite - Serveur Apache HTTP Version 2.5</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 rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
-<script src="../style/scripts/prettify.js" type="text/javascript">
+<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/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.5</p>
-<img alt="" src="../images/feather.gif" /></div>
+<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div>
<a href="../rewrite/">documentation détaillée
sur mod_rewrite</a>.</p>
</div>
-<div id="quickview"><h3 class="directives">Directives</h3>
+<div id="quickview"><h3>Sujets</h3>
+<ul id="topics">
+<li><img alt="" src="../images/down.gif" /> <a href="#logging">Journalisation</a></li>
+</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#rewritebase">RewriteBase</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewritecond">RewriteCond</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewriteoptions">RewriteOptions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewriterule">RewriteRule</a></li>
</ul>
-<h3>Sujets</h3>
-<ul id="topics">
-<li><img alt="" src="../images/down.gif" /> <a href="#logging">Journalisation</a></li>
-</ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
+<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_rewrite">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_rewrite">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
+<ul class="seealso">
+<li><a href="#comments_section">Commentaires</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="logging" id="logging">Journalisation</a></h2>
+<h2><a name="logging" id="logging">Journalisation</a><a title="Lien permanent" href="#logging" class="permalink">¶</a></h2>
<p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> offre une journalisation détaillée
de ses actions aux niveaux de journalisation <code>trace1</code> à
supérieur à <code>trace2</code> qu'à des fins de débogage !
</div>
- <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">
- LogLevel alert rewrite:trace3
- </pre>
+ <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">LogLevel alert rewrite:trace3</pre>
</div>
<div class="note"><h3>RewriteLog</h3>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="RewriteBase" id="RewriteBase">RewriteBase</a> <a name="rewritebase" id="rewritebase">Directive</a></h2>
+<div class="directive-section"><h2><a name="rewritebase" id="rewritebase">Directive</a> <a name="RewriteBase" id="RewriteBase">RewriteBase</a><a title="Lien permanent" href="#rewritebase" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit l'URL de base pour les réécritures au niveau
répertoire</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteBase <em>chemin URL</em></code></td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteBase <em>chemin_URL</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>Pas de valeur par défaut</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
<p>La directive <code class="directive">RewriteBase</code> permet de
spécifier le préfixe d'URL à utiliser dans un contexte de
répertoire (htaccess) pour les directives
- <code class="directive">RewriteRule</code> qui réécrivent vers un chemin
+ <code class="directive"><a href="#rewriterule">RewriteRule</a></code> qui réécrivent vers un chemin
relatif.</p>
<p>Cette directive est <em>obligatoire</em> si vous utilisez un
chemin relatif dans une substitution, et dans un contexte de
répertoire (htaccess), sauf si au moins une de ces conditions est
vérifiée :</p>
<ul>
- <li>La requête initiale, ainsi que la substitution, sont dans
- la <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> (c'est à
+ <li>La requête initiale, ainsi que la substitution, se
+ situent par raport à la valeur de la directive
+ <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> (c'est à
dire que pour y accéder, il n'est pas nécessaire d'utiliser
une directive telle qu'<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>).</li>
<li>Le chemin du système de fichiers vers le répertoire
- contenant la <code class="directive">RewriteRule</code>, suffixé par
+ contenant la <code class="directive"><a href="#rewriterule">RewriteRule</a></code>, suffixé par
la substitution relative est aussi valide en tant qu'URL sur
le serveur (ce qui est rare).</li>
+ <li>A partir de la version 2.4.16 du serveur HTTP Apache,
+ cette directive peut être omise lorsque la requête est mise en
+ correspondance avec le système de fichiers via la directive
+ <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> ou le module
+ <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>.</li>
</ul>
<p>Dans l'exemple ci-dessous, la directive
de configuration aurait conduit le serveur à rechercher un répertoire
"opt" à la racine des documents.</p>
-<pre class="prettyprint lang-config">
-DocumentRoot /var/www/example.com
-Alias /myapp /opt/myapp-1.2.3
-<Directory /opt/myapp-1.2.3>
+<pre class="prettyprint lang-config">DocumentRoot "/var/www/example.com"
+AliasMatch "^/myapp" "/opt/myapp-1.2.3"
+<Directory "/opt/myapp-1.2.3">
RewriteEngine On
- RewriteBase /myapp/
- RewriteRule ^index\.html$ welcome.html
-</Directory>
-</pre>
+ RewriteBase "/myapp/"
+ RewriteRule "^index\.html$" "welcome.html"
+</Directory></pre>
+
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="RewriteCond" id="RewriteCond">RewriteCond</a> <a name="rewritecond" id="rewritecond">Directive</a></h2>
+<div class="directive-section"><h2><a name="rewritecond" id="rewritecond">Directive</a> <a name="RewriteCond" id="RewriteCond">RewriteCond</a><a title="Lien permanent" href="#rewritecond" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit une condition qui devra être satisfaite pour que
la réécriture soit effectuée
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code> RewriteCond
- <em>chaîne de test</em> <em>expression de comparaison</em></code></td></tr>
+ <em>chaîne_de_test</em> <em>expression_de_comparaison</em> [<em>drapeaux</em>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
</strong> : ce sont des références arrières de la forme
<strong><code>%N</code></strong> (0 <= N <= 9). %1 à %9
permettent d'accéder aux parties regroupées (entre
- parenthèses) du modèle, issues de la <code>RewriteRule</code>
- concernée par le jeu de conditions <code>RewriteCond</code>
+ parenthèses) du modèle, issues de la dernière
+ condition <code>RewriteCond</code> satisfaite du jeu de conditions <code>RewriteCond</code>
courant. %0 donne accès à l'ensemble de la chaîne
correspondant au modèle.</li>
<li>
<tr>
<td>
- HTTP_USER_AGENT<br />
- HTTP_REFERER<br />
+ HTTP_ACCEPT<br />
HTTP_COOKIE<br />
HTTP_FORWARDED<br />
HTTP_HOST<br />
HTTP_PROXY_CONNECTION<br />
- HTTP_ACCEPT<br />
+ HTTP_REFERER<br />
+ HTTP_USER_AGENT<br />
</td>
<td>
+ AUTH_TYPE<br />
+ CONN_REMOTE_ADDR<br />
+ CONTEXT_PREFIX<br />
+ CONTEXT_DOCUMENT_ROOT<br />
+ IPV6<br />
+ PATH_INFO<br />
+ QUERY_STRING<br />
REMOTE_ADDR<br />
REMOTE_HOST<br />
+ REMOTE_IDENT<br />
REMOTE_PORT<br />
REMOTE_USER<br />
- REMOTE_IDENT<br />
REQUEST_METHOD<br />
SCRIPT_FILENAME<br />
- PATH_INFO<br />
- QUERY_STRING<br />
- AUTH_TYPE<br />
</td>
<td />
<tr>
<td>
DOCUMENT_ROOT<br />
+ SCRIPT_GROUP<br />
+ SCRIPT_USER<br />
+ SERVER_ADDR<br />
SERVER_ADMIN<br />
SERVER_NAME<br />
- SERVER_ADDR<br />
SERVER_PORT<br />
SERVER_PROTOCOL<br />
SERVER_SOFTWARE<br />
<td>
API_VERSION<br />
- THE_REQUEST<br />
- REQUEST_URI<br />
- REQUEST_FILENAME<br />
- IS_SUBREQ<br />
+ CONN_REMOTE_ADDR<br />
HTTPS<br />
- REQUEST_SCHEME<br />
+ IS_SUBREQ<br />
+ REMOTE_ADDR<br />
+ REQUEST_FILENAME<br />
+ REQUEST_SCHEME<br />
+ REQUEST_URI<br />
+ THE_REQUEST<br />
</td>
</tr>
</table>
<p>Ces variables correspondent toutes aux en-têtes MIME
HTTP de mêmes noms, au variables C du serveur HTTP Apache, ou
aux champs <code>struct tm</code> du système Unix. La
- plupart d'entre elles sont documentées ailleurs dans le
- manuel ou dans la spécification CGI.</p>
+ plupart d'entre elles sont documentées <a href="../expr.html#vars">ici</a>, dans la
+ spécification CGI ou ailleurs dans le
+ manuel.</p>
<p>SERVER_NAME et SERVER_PORT dépendent respectivement
des valeurs des directives <code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code> et <code class="directive"><a href="../mod/core.html#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></code>.</p>
<p>Parmi les variables
- spécifiques à mod_rewrite, ou trouve les suivantes :</p>
- <div class="note">
+ spécifiques à <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, ou trouve les suivantes :</p>
+
<dl>
- <dt><code>IS_SUBREQ</code></dt>
-
- <dd>Contient le texte "true" si la requête en cours
- de traitement est une sous-requête, "false" dans le
- cas contraire. Une sous-requête est générée quand un
- module a besoin de se référer à des fichiers ou URIs
- addidionnels pour pouvoir mener à bien sa tâche.</dd>
-
<dt><code>API_VERSION</code></dt>
<dd>C'est la version de l'API des modules Apache httpd
il s'agit de la version 19990320:10), mais intéresse
principalement les auteurs de modules.</dd>
- <dt><code>THE_REQUEST</code></dt>
+ <dt><code>CONN_REMOTE_ADDR</code></dt>
- <dd>La ligne de requête HTTP complète envoyée par le
- navigateur au serveur (par exemple, "<code>GET
- /index.html HTTP/1.1</code>"), à l'exclusion de tout
- en-tête ajouté par le navigateur. Cette
- valeur n'a pas été déséchappée (décodée), à la
- différence de la plupart des variables suivantes.</dd>
+ <dd>A partir de la version 2.4.8 : l'adresse IP distante de
+ la connexion (voir le module
+ <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code>).</dd>
+
+ <dt><code>HTTPS</code></dt>
- <dt><code>REQUEST_URI</code></dt>
+ <dd>Contient le texte "on" si la connexion
+ utilise SSL/TLS, "off" dans le cas contraire
+ (Cette variable peut être utilisée sans problème, que
+ <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit chargé ou non).</dd>
- <dd>La partie chemin de l'URI de la requête, comme
- "/index.html". En particulier, ceci exclut la chaîne
- de paramètres qui est quant à elle disponible via sa
- propre variable <code>QUERY_STRING</code>.</dd>
+ <dt><code>IS_SUBREQ</code></dt>
+
+ <dd>Contient le texte "true" si la requête en cours
+ de traitement est une sous-requête, "false" dans le
+ cas contraire. Une sous-requête est générée quand un
+ module a besoin de se référer à des fichiers ou URIs
+ addidionnels pour pouvoir mener à bien sa tâche.</dd>
+
+ <dt><code>REMOTE_ADDR</code></dt>
+ <dd>L'adresse IP de l'hôte distant (se référer au
+ module <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code>).</dd>
<dt><code>REQUEST_FILENAME</code></dt>
<code>REQUEST_URI</code> pour déterminer à quel
fichier correspond la requête.</dd>
- <dt><code>HTTPS</code></dt>
-
- <dd>Contient le texte "on" si la connexion
- utilise SSL/TLS, "off" dans le cas contraire
- (Cette variable peut être utilisée sans problème, que
- <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit chargé ou non.</dd>
-
<dt><code>REQUEST_SCHEME</code></dt>
<dd>Contient le protocole de la requête (en général
"http" ou "https"). La valeur peut être modifiée par
la directive <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>.</dd>
+ <dt><code>REQUEST_URI</code></dt>
+
+ <dd>La partie chemin de l'URI de la requête, comme
+ "/index.html". Ceci exclut en particulier la chaîne de
+ paramètres de la requête qui est contenue dans la
+ variable <code>QUERY_STRING</code>.</dd>
+
+ <dt><code>THE_REQUEST</code></dt>
+
+ <dd>La ligne de requête HTTP complète envoyée par le
+ navigateur au serveur (par exemple, "<code>GET
+ /index.html HTTP/1.1</code>"), à l'exclusion de tout
+ en-tête ajouté par le navigateur. Cette
+ valeur n'a pas été déséchappée (décodée), à la
+ différence de la plupart des variables suivantes.</dd>
</dl>
-</div>
+
</li>
</ul>
- <p>Si la <em>chaîne de test</em> contient la valeur spéciale
- <code>expr</code>, <em>expression de comparaison</em> sera traité
+ <p>Si la <em>chaîne_de_test</em> contient la valeur spéciale
+ <code>expr</code>, <em>expression_de_comparaison</em> sera traité
en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>. Si des en-têtes HTTP sont
référencés dans l'expression rationnelle, et si le drapeau
<code>novary</code> n'est pas activé, ils seront ajoutés à
d'environnement SSL</a> . Si <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> n'est pas
chargé, cette variable contiendra toujours une chaîne vide.
Exemple : <code>%{SSL:SSL_CIPHER_USEKEYSIZE}</code> pourra
- contenir la valeur <code>128</code>.</li>
+ contenir la valeur <code>128</code>. Ces variables sont
+ disponibles même si l'option <code>StdEnvVars</code> de la
+ directive <code class="directive"><a href="../mod/mod_ssl.html#ssloptions">SSLOptions</a></code> n'a
+ pas été définie.</li>
<li>
On peut utiliser <code>%{HTTP:en-tête}</code>, où
principal (fichier <code>httpd.conf</code>), vous devez utiliser
<code>%{LA-U:REMOTE_USER}</code> - cette variable est définie
par la phase d'autorisation qui intervient <em>après</em> la
- phase de traduction d'URL (pendant laquelle mod_rewrite opère).</p>
- <p>Par contre, comme mod_rewrite implémente son contexte de
+ phase de traduction d'URL (pendant laquelle <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
+ opère).</p>
+ <p>Par contre, comme <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> implémente son contexte de
répertoire (fichier <code>.htaccess</code>) via la phase Fixup
de l'API, et comme la phase d'autorisation intervient
<em>avant</em> cette dernière, vous pouvez vous contenter
</ol>
- <p><em>expression de comparaison</em> est une expression
+ <p><em>expression_de_comparaison</em> est une expression
rationnelle qui est appliquée à l'instance actuelle de
- <em>chaîne de test</em>. <em>chaîne de test</em> est d'abord
+ <em>chaîne_de_test</em>. <em>chaîne_de_test</em> est d'abord
évaluée, puis comparée à
- l'<em>expression de comparaison</em>.</p>
+ l'<em>expression_de_comparaison</em>.</p>
- <p><em>expression de comparaison</em> est en général une
+ <p><em>expression_de_comparaison</em> est en général une
<em>expression rationnelle compatible perl</em>, mais vous
disposez des syntaxes supplémentaires suivantes pour effectuer
- d'autres tests utiles sur <em>chaîne de test</em> :
+ d'autres tests utiles sur <em>chaîne_de_test</em> :
</p>
<ol>
<li>Vous pouvez préfixer l'expression avec un caractère
- '<code>!</code>' (point d'exclamation) pour indiquer une
- expression de <strong>non</strong>-correspondance.</li>
+ '<code>!</code>' (point d'exclamation) pour inverser le résultat
+ de la condition, quelle que soit l'<em>expression de
+ comparaison</em> utilisée.</li>
<li>Vous pouvez effectuer des comparaisons lexicographiques de
chaînes :
- <ul>
- <li>'<strong><expression</strong>' (inférieur au sens
- lexicographique)<br />
+ <dl>
+ <dt><strong><expression</strong></dt>
+ <dd>inférieur au sens lexicographique<br />
Traite l'<em>expression</em> comme une chaîne de
caractères et la compare lexicographiquement à
- <em>chaîne de test</em>. La condition est satisfaite si
- <em>chaîne de test</em> est inférieure au sens
- lexicographique à l'<em>expression</em>.</li>
+ <em>chaîne_de_test</em>. La condition est satisfaite si
+ <em>chaîne_de_test</em> est inférieure au sens
+ lexicographique à l'<em>expression</em>.</dd>
- <li>'<strong>>expression</strong>' (supérieur au sens
- lexicographique)<br />
+ <dt><strong>>expression</strong></dt>
+ <dd>supérieur au sens lexicographique<br />
Traite l'<em>expression</em> comme une chaîne de
caractères et la compare lexicographiquement à
- <em>chaîne de test</em>. La condition est satisfaite si
- <em>chaîne de test</em> est supérieure au sens
- lexicographique à l'<em>expression</em>.</li>
+ <em>chaîne_de_test</em>. La condition est satisfaite si
+ <em>chaîne_de_test</em> est supérieure au sens
+ lexicographique à l'<em>expression</em>.</dd>
- <li>'<strong>=expression</strong>' (égal au sens
- lexicographique)<br />
+ <dt><strong>=expression</strong></dt>
+ <dd>égal au sens lexicographique<br />
Traite l'<em>expression</em> comme une chaîne de
caractères et la compare lexicographiquement à
- <em>chaîne de test</em>. La condition est satisfaite si
- <em>chaîne de test</em> est égale au sens
+ <em>chaîne_de_test</em>. La condition est satisfaite si
+ <em>chaîne_de_test</em> est égale au sens
lexicographique à l'<em>expression</em> (les deux chaînes
sont exactement identiques, caractère pour caractère). Si
<em>expression</em> est <code>""</code> (deux guillemets),
- <em>chaîne de test</em> est comparée à la chaîne vide.</li>
+ <em>chaîne_de_test</em> est comparée à la
+ chaîne vide.</dd>
- <li>'<strong><=expression de comparaison</strong>' (inférieur ou égal à
- au sens lexicographique)<br />
- Considère l'<em>expression de comparaison</em> comme une
+ <dt><strong><=expression de comparaison</strong></dt>
+ <dd>inférieur ou égal à au sens lexicographique<br />
+ Considère l'<em>expression_de_comparaison</em> comme une
chaîne de caractères et la compare au sens lexicographique à
- la <em>chaîne de test</em>. Vrai si <em>chaîne de test</em>
- précède lexicographiquement <em>expression de comparaison</em>, ou est
- égale à <em>expression de comparaison</em> (les deux chaînes
- sont identiques, caractère pour caractère).</li>
-
- <li>'<strong>>=expression de comparaison</strong>'
- (supérieur ou égal à au sens lexicographique)<br />
- Considère l'<em>expression de comparaison</em> comme une
+ la <em>chaîne_de_test</em>. Vrai si <em>chaîne_de_test</em>
+ précède lexicographiquement <em>expression_de_comparaison</em>, ou est
+ égale à <em>expression_de_comparaison</em> (les deux chaînes
+ sont identiques, caractère pour caractère).</dd>
+
+ <dt><strong>>=expression de comparaison</strong></dt>
+ <dd>supérieur ou égal à au sens lexicographique<br />
+ Considère l'<em>expression_de_comparaison</em> comme une
chaîne de caractères et la compare au sens lexicographique à
- la <em>chaîne de test</em>. Vrai si <em>chaîne de test</em>
- suit lexicographiquement <em>expression de comparaison</em>, ou est
- égale à <em>expression de comparaison</em> (les deux chaînes
- sont identiques, caractère pour caractère).</li>
- </ul></li>
+ la <em>chaîne_de_test</em>. Vrai si <em>chaîne_de_test</em>
+ suit lexicographiquement <em>expression_de_comparaison</em>, ou est
+ égale à <em>expression_de_comparaison</em> (les deux chaînes
+ sont identiques, caractère pour caractère).</dd>
+ </dl>
+ </li>
<li>
Vous pouvez effectuer des comparaisons d'entiers :
- <ul>
+ <dl>
- <li>'<strong>-eq</strong>' (est numériquement égal à)<br />
- La <em>chaîne de test</em> est considérée comme un entier,
+ <dt><strong>-eq</strong></dt>
+ <dd>est numériquement égal à<br />
+ La <em>chaîne_de_test</em> est considérée comme un entier,
et est comparée numériquement à l'<em>expression de
comparaison</em>. Vrai si les deux expressions sont
- numériquement égales.</li>
+ numériquement égales.</dd>
- <li>'<strong>-ge</strong>' (est numériquement supérieur ou
- égal à)<br />
- La <em>chaîne de test</em> est considérée comme un entier,
+ <dt><strong>-ge</strong></dt>
+ <dd>est numériquement supérieur ou égal à<br />
+ La <em>chaîne_de_test</em> est considérée comme un entier,
et est comparée numériquement à l'<em>expression de
- comparaison</em>. Vrai si <em>chaîne de test</em> est
- numériquement
- supérieure ou égale à <em>expression de comparaison</em>.</li>
+ comparaison</em>. Vrai si <em>chaîne_de_test</em> est
+ numériquement supérieure ou égale à
+ <em>expression_de_comparaison</em>.</dd>
- <li>'<strong>-gt</strong>' (est numériquement supérieur à)<br />
- La <em>chaîne de test</em> est considérée comme un entier,
+ <dt><strong>-gt</strong></dt>
+ <dd>est numériquement supérieur à<br />
+ La <em>chaîne_de_test</em> est considérée comme un entier,
et est comparée numériquement à l'<em>expression de
- comparaison</em>. Vrai si <em>chaîne de test</em> est
+ comparaison</em>. Vrai si <em>chaîne_de_test</em> est
numériquement
- supérieure à <em>expression de comparaison</em>.</li>
+ supérieure à <em>expression_de_comparaison</em>.</dd>
- <li>'<strong>-le</strong>' (est numériquement inférieur ou
- égal à)<br />
- La <em>chaîne de test</em> est considérée comme un entier,
+ <dt><strong>-le</strong></dt>
+ <dd>est numériquement inférieur ou égal à<br />
+ La <em>chaîne_de_test</em> est considérée comme un entier,
et est comparée numériquement à l'<em>expression de
- comparaison</em>. Vrai si <em>chaîne de test</em> est
+ comparaison</em>. Vrai si <em>chaîne_de_test</em> est
numériquement
- inférieure ou égale à <em>expression de comparaison</em>.
+ inférieure ou égale à <em>expression_de_comparaison</em>.
Attention à la confusion avec le drapeau <strong>-l</strong>
en utilisant la variante the <strong>-L</strong> ou
- <strong>-h</strong>.</li>
+ <strong>-h</strong>.</dd>
- <li>'<strong>-lt</strong>' (est numériquement inférieur à)<br />
- La <em>chaîne de test</em> est considérée comme un entier,
+ <dt><strong>-lt</strong></dt>
+ <dd>est numériquement inférieur à<br />
+ La <em>chaîne_de_test</em> est considérée comme un entier,
et est comparée numériquement à l'<em>expression de
- comparaison</em>. Vrai si <em>chaîne de test</em> est
+ comparaison</em>. Vrai si <em>chaîne_de_test</em> est
numériquement
- inférieure à <em>expression de comparaison</em>.
+ inférieure à <em>expression_de_comparaison</em>.
Attention à la confusion avec le drapeau <strong>-l</strong>
en utilisant la variante the <strong>-L</strong> ou
- <strong>-h</strong>.</li>
+ <strong>-h</strong>.</dd>
+
+ <dt><strong>-ne</strong></dt>
+ <dd>Est numériquement <strong>n</strong>on <strong>é</strong>gal à<br />
+ La <em>Chaîne de test</em> est considérée comme un entier et est
+ numériquement comparée à l'<em>expression de comparaison</em>. Vrai
+ si les deux éléments comparés sont numériquement différents.
+ Equivalent à <code>!-eq</code>.</dd>
- </ul>
+ </dl>
</li>
<li>Vous pouvez effectuer différents tests sur les attributs de
fichier :
- <ul>
+ <dl>
- <li>'<strong>-d</strong>' (est un répertoire -
- <strong>d</strong>irectory)<br />
- Traite <em>chaîne de test</em> comme un chemin et vérifie
- s'il existe ou pas, et s'il s'agit d'un répertoire.</li>
+ <dt><strong>-d</strong></dt>
+ <dd>est un <strong>r</strong>épertoire<br />
+ Traite <em>chaîne_de_test</em> comme un chemin et vérifie
+ s'il existe ou pas, et s'il s'agit d'un répertoire.</dd>
- <li>'<strong>-f</strong>' (est un
- <strong>f</strong>ichier régulier)<br />
- Traite <em>chaîne de test</em> comme un chemin et vérifie
- s'il existe ou pas, et s'il s'agit d'un fichier régulier.</li>
+ <dt><strong>-f</strong></dt>
+ <dd>est un <strong>f</strong>ichier régulier<br />
+ Traite <em>chaîne_de_test</em> comme un chemin et vérifie
+ s'il existe ou pas, et s'il s'agit d'un fichier régulier.</dd>
- <li>'<strong>-F</strong>' (test de l'existence d'un fichier
- via une sous-requête)<br />
- Vérifie si <em>chaîne de test</em> est un fichier valide,
+ <dt><strong>-F</strong></dt>
+ <dd>test de l'existence d'un fichier via une sous-requête<br />
+ Vérifie si <em>chaîne_de_test</em> est un fichier valide,
accessible à travers tous les contrôles d'accès du serveur
actuellement configurés pour ce chemin. C'est une
sous-requête interne qui effectue cette vérification - à
utiliser avec précautions car les performances du serveur
- peuvent s'en trouver affectées !</li>
+ peuvent s'en trouver affectées !</dd>
- <li>'<strong>-H</strong>' (est un lien symbolique, selon la
- convention bash)<br />
- Voir <strong>-l</strong>.</li>
+ <dt><strong>-h</strong></dt>
+ <dd>est un lien symbolique, selon la convention bash<br />
+ Voir <strong>-l</strong>.</dd>
- <li>'<strong>-l</strong>' (est un lien symbolique)<br />
- Considère la <em>chaîne de test</em> comme un chemin et
+ <dt><strong>-l</strong></dt>
+ <dd>est un <strong>l</strong>ien symbolique<br />
+ Considère la <em>chaîne_de_test</em> comme un chemin et
vérifie son existence et si elle est un lien symbolique. On
peut aussi utiliser la convention bash <strong>-L</strong>
ou <strong>-h</strong> lorsqu'il y a risque de confusion
- avec les tests <strong>-lt</strong> ou <strong>-le</strong>.</li>
+ avec les tests <strong>-lt</strong> ou <strong>-le</strong>.</dd>
- <li>'<strong>-L</strong>' (est un lien symbolique, selon la
- convention bash)<br />
- Voir <strong>-l</strong>.</li>
+ <dt><strong>-L</strong></dt>
+ <dd>est un lien symbolique, selon la convention bash<br />
+ Voir <strong>-l</strong>.</dd>
- <li>'<strong>-s</strong>' (est un fichier régulier d'une
- certaine taille)<br />
- Considère la <em>chaîne de test</em> comme un chemin et
+ <dt><strong>-s</strong></dt>
+ <dd>est un fichier régulier d'une certaine taille<br />
+ Considère la <em>chaîne_de_test</em> comme un chemin et
vérifie son existence et si elle est un fichier régulier
- d'une taille supérieure à zéro.</li>
+ d'une taille supérieure à zéro.</dd>
- <li>'<strong>-U</strong>' (test de l'existence d'une
- <strong>U</strong>RL via une sous-requête)<br />
- Vérifie si <em>chaîne de test</em> est une URL valide,
+ <dt><strong>-U</strong></dt>
+ <dd><p>test de l'existence d'une
+ URL via une sous-requête<br />
+ Vérifie si <em>chaîne_de_test</em> est une URL valide,
accessible à travers tous les contrôles d'accès du serveur
actuellement configurés pour ce chemin. C'est une
sous-requête interne qui effectue cette vérification - à
utiliser avec précautions car les performances du serveur
- peuvent s'en trouver affectées !</li>
-
- <li>'<strong>-x</strong>' (a l'attribut d'exécution positionné)<br />
- Considère la <em>chaîne de test</em> comme un chemin et
+ peuvent s'en trouver affectées !</p>
+ <p>Ce drapeau ne renvoie <em>que</em> des informations
+ concernant le contrôle d'accès, l'authentification et
+ l'autorisation. Il ne renvoie <em>pas</em> d'informations
+ concernant le code d'état que le gestionnaire configuré
+ (static file, CGI, proxy, etc...) aurait, quant à lui,
+ retourné.</p></dd>
+
+ <dt><strong>-x</strong></dt>
+ <dd>a l'attribut d'exécution positionné<br />
+ Considère la <em>chaîne_de_test</em> comme un chemin et
vérifie son existence et si elle a son attribut d'exécution
positionné. Ce positionnement est déterminé en fonction de
- l'OS sous-jacent.</li>
+ l'OS sous-jacent.</dd>
+
+ </dl>
+
+ Par exemple:
+
+ <pre class="prettyprint lang-config">RewriteCond /var/www/%{REQUEST_URI} !-f
+RewriteRule ^(.+) /other/archive/$1 [R]</pre>
- </ul>
-<div class="note"><h3>Note :</h3>
- Tous ces tests peuvent aussi être préfixés par un point
- d'exclamation ('!') pour inverser leur signification.
-</div>
</li>
<li>
- <p>Si la <em>chaîne de test</em> contient la valeur spéciale
+ <p>Si la <em>chaîne_de_test</em> contient la valeur spéciale
<code>expr</code>, la <em>chaîne de comparaison</em> sera
traitée en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>.</p>
non désiré.
</p>
- <pre class="prettyprint lang-config">
- RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<br />
- RewriteRule ^/images - [F]
- </pre>
+ <pre class="prettyprint lang-config"> RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"
+ RewriteRule "^/images" "-" [F]</pre>
</li>
+ </ol>
- <li>Vous pouvez aussi définir certains drapeaux pour
- l'<em>expression de comparaison</em> en ajoutant ces
+ <p>Vous pouvez aussi définir certains drapeaux pour
+ l'<em>expression_de_comparaison</em> en ajoutant ces
<strong><code>[</code><em>drapeaux</em><code>]</code></strong>
comme troisième argument de la directive
- <code>RewriteCond</code>, où <em>drapeaux</em> est un
- sous-ensemble séparé par des virgules des drapeaux suivants :
+ <code class="directive">RewriteCond</code>, où <em>drapeaux</em> est un
+ sous-ensemble séparé par des virgules des drapeaux suivants :</p>
<ul>
<li>'<strong><code>nocase|NC</code></strong>'
(<strong>n</strong>o <strong>c</strong>ase)<br />
Rend le test insensible à la casse - il n'est pas fait de
distinction entre majuscules et minuscules, à la fois dans le
- développement de <em>chaîne de test</em> et dans
- <em>expression de comparaison</em>. Ce drapeau n'est pris en
- compte que lors d'une comparaison entre <em>chaîne de test</em>
- et <em>expression de comparaison</em>. Il ne l'est pas pour les
+ développement de <em>chaîne_de_test</em> et dans
+ <em>expression_de_comparaison</em>. Ce drapeau n'est pris en
+ compte que lors d'une comparaison entre <em>chaîne_de_test</em>
+ et <em>expression_de_comparaison</em>. Il ne l'est pas pour les
vérification par sous-requêtes ou sur le système de
fichiers.</li>
Permet de chaîner les conditions de règles avec un OU au
lieu du AND implicite. Exemple typique :
-<pre class="prettyprint lang-config">
-RewriteCond %{REMOTE_HOST} ^host1 [OR]
-RewriteCond %{REMOTE_HOST} ^host2 [OR]
-RewriteCond %{REMOTE_HOST} ^host3
-RewriteRule ...règles concernant tous ces hôtes...
-</pre>
+<pre class="prettyprint lang-config">RewriteCond "%{REMOTE_HOST}" "^host1" [OR]
+RewriteCond "%{REMOTE_HOST}" "^host2" [OR]
+RewriteCond "%{REMOTE_HOST}" "^host3"
+RewriteRule ...règles concernant tous ces hôtes...</pre>
Sans ce drapeau, les paires
fonctionnement de l'en-tête Vary.
</li>
</ul>
- </li>
- </ol>
+
<p><strong>Exemple :</strong></p>
l'en-tête ``<code>User-Agent:</code>'' de la requête, vous
pouvez utiliser ce qui suit : </p>
-<pre class="prettyprint lang-config">
-RewriteCond %{HTTP_USER_AGENT} (iPhone|Blackberry|Android)
-RewriteRule ^/$ /homepage.mobile.html [L]
+<pre class="prettyprint lang-config">RewriteCond "%{HTTP_USER_AGENT}" "(iPhone|Blackberry|Android)"
+RewriteRule "^/$" "/homepage.mobile.html" [L]
-RewriteRule ^/$ /homepage.std.html [L]
-</pre>
+RewriteRule "^/$" "/homepage.std.html" [L]</pre>
<p>Explications : si vous utilisez un navigateur
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="RewriteEngine" id="RewriteEngine">RewriteEngine</a> <a name="rewriteengine" id="rewriteengine">Directive</a></h2>
+<div class="directive-section"><h2><a name="rewriteengine" id="rewriteengine">Directive</a> <a name="RewriteEngine" id="RewriteEngine">RewriteEngine</a><a title="Lien permanent" href="#rewriteengine" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active ou désactive l'exécution du
moteur de réécriture</td></tr>
hôte virtuel pour lequel vous souhaitez utiliser des règles
de réécriture.</p>
- <p>Les directives <code class="directive">RewriteMap</code> du type
+ <p>Les directives <code class="directive"><a href="#rewritemap">RewriteMap</a></code> du type
<code>prg</code> ne sont pas prises en compte au cours de
l'initialisation du serveur si elle ont été définies dans un
contexte où la directive <code class="directive">RewriteEngine</code> n'a
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="RewriteMap" id="RewriteMap">RewriteMap</a> <a name="rewritemap" id="rewritemap">Directive</a></h2>
+<div class="directive-section"><h2><a name="rewritemap" id="rewritemap">Directive</a> <a name="RewriteMap" id="RewriteMap">RewriteMap</a><a title="Lien permanent" href="#rewritemap" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit une fonction de mise en correspondance pour la
recherche de mots-clés</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteMap <em>nom de la correspondance</em> <em>type de
-correspondance</em>:<em>source de la correspondance</em>
+<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteMap <em>MapName</em> <em>MapType</em>:<em>MapSource</em> [<em>MapTypeOptions</em>]
</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
+<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Le troisième paramètre, MapTypeOptions, est disponible à partir
+de la version 2.4.29 du serveur HTTP Apache</td></tr>
</table>
<p>La directive <code class="directive">RewriteMap</code> définit une
<em>Table de correspondance pour la réécriture</em> que les
La source utilisée pour cette recherche peut être de plusieurs
types.</p>
- <p><a id="mapfunc" name="mapfunc"><em>nom de la
- correspondance</em></a> est le nom de la table de correspondance
+ <p><a id="mapfunc" name="mapfunc"><em>MapName</em></a> est le nom de la table de correspondance
et servira à spécifier une fonction de mise en correspondance
pour les chaînes de substitution d'une règle de réécriture selon
une des constructions suivantes :</p>
<p class="indent">
- <strong><code>${</code> <em>nom de la
- correspondance</em> <code>:</code>
+ <strong><code>${</code> <em>MapName</em> <code>:</code>
<em>mot-clé</em> <code>}</code><br />
- <code>${</code> <em>nom de la
- correspondance</em> <code>:</code>
+ <code>${</code> <em>MapName</em> <code>:</code>
<em>mot-clé</em> <code>|</code> <em>valeur par défaut</em>
<code>}</code></strong>
</p>
<p>Lorsqu'une telle construction est rencontrée, la table de
- correspondance <em>Nom de la correspondance</em> est consultée
+ correspondance <em>MapName</em> est consultée
et la clé <em>mot-clé</em> recherchée. Si la clé est trouvée, la
construction est remplacée par
la <em>valeur de remplacement</em>. Si la clé n'est pas trouvée,
<p>Par exemple, vous pouvez définir une directive
<code class="directive">RewriteMap</code> comme suit </p>
- <pre class="prettyprint lang-config">
- RewriteMap map-exemple txt:/chemin/vers/fichier/map.txt
- </pre>
+ <pre class="prettyprint lang-config">RewriteMap map-exemple "txt:/chemin/vers/fichier/map.txt"</pre>
<p>Vous pourrez ensuite utiliser cette table dans une
- directive <code class="directive">RewriteRule</code> comme suit :</p>
+ directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code> comme suit :</p>
+
+ <pre class="prettyprint lang-config">RewriteRule "^/ex/(.*)" "${map-exemple:$1}"</pre>
- <pre class="prettyprint lang-config">
- RewriteRule ^/ex/(.*) ${map-exemple:$1}
- </pre>
+ <p>La signification de l'argument <em>MapTypeOptions</em> dépend du <em>MapType</em>
+ spécifié. Veuillez vous référer au document <a href="../rewrite/rewritemap.html">Utiliser RewriteMap</a> pour
+ plus de détails.</p>
<p>Les combinaisons suivantes pour <em>type de correspondance</em>
- et <em>source de la correspondance</em>
+ et <em>MapSource</em>
peuvent être utilisées :</p>
<dl>
<dt>prg</dt>
<dd>Appelle un programme externe ou un script pour effectuer la
- réécriture (<a href="../rewrite/rewritemap.html#int">Détails
+ réécriture (<a href="../rewrite/rewritemap.html#prg">Détails
...</a>).</dd>
<dt>dbd or fastdbd</dt>
<dd>Une commande SQL SELECT à exécuter pour rechercher la cible
- de réécriture (<a href="../rewrite/rewritemap.html#int">Détails
+ de réécriture (<a href="../rewrite/rewritemap.html#dbd">Détails
...</a>).</dd>
</dl>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="RewriteOptions" id="RewriteOptions">RewriteOptions</a> <a name="rewriteoptions" id="rewriteoptions">Directive</a></h2>
+<div class="directive-section"><h2><a name="rewriteoptions" id="rewriteoptions">Directive</a> <a name="RewriteOptions" id="RewriteOptions">RewriteOptions</a><a title="Lien permanent" href="#rewriteoptions" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure certaines options spéciales
pour le moteur de réécriture</td></tr>
<p>Même effet que l'option <code>Inherit</code> ci-dessus, mais
les règles spécifiées dans le niveau parent s'appliquent
<strong>avant</strong> les règles spécifiées dans le niveau
- enfant. Disponible depuis la version 2.3.10 du serveur HTTP
- Apache.</p>
+ enfant.<br />
+ Disponible depuis la version 2.3.10 du serveur HTTP Apache.</p>
+ </dd>
+
+ <dt><code>InheritDown</code></dt>
+ <dd>
+
+ <p>Si cette option est activée, toutes les configurations enfants
+ hériteront de la configuration courante. Il en est de même si l'on
+ spécifie <code>RewriteOptions Inherit</code> dans toutes les
+ configurations enfants. Voir l'option <code>Inherit</code> pour
+ plus de détails à propos de la manière dont les relations
+ parent-enfants sont traitées.<br />
+ Cette option est disponible à partir
+ de la version 2.4.8 du serveur HTTP Apache.</p>
+ </dd>
+
+ <dt><code>InheritDownBefore</code></dt>
+ <dd>
+
+ <p>L'effet de cette option est équivalent à celui de l'option
+ <code>InheritDown</code> ci-dessus, mais les règles de la
+ configuration parente s'appliquent <strong>avant</strong> toute
+ règle de la configuration enfant.<br />
+ Cette option est disponible à partir
+ de la version 2.4.8 du serveur HTTP Apache.</p>
</dd>
+ <dt><code>IgnoreInherit</code></dt>
+ <dd>
+
+ <p>Si cette option est activée, les configurations courante et
+ enfants ignoreront toute règle héritée d'une configuration parente
+ via les options <code>InheritDown</code> ou
+ <code>InheritDownBefore</code>.<br />
+ Cette option est disponible à partir
+ de la version 2.4.8 du serveur HTTP Apache.</p>
+ </dd>
+
<dt><code>AllowNoSlash</code></dt>
<dd>
<p>Par défaut, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> ignore les URLs qui
s'assurer que les règles de réécriture ne soient plus ignorées.
Si on le souhaite, cette option permet de faire s'appliquer des
règles de réécriture qui correspondent à un répertoire sans slash
- final au sein de fichiers .htaccess. Elle est disponible à
+ final au sein de fichiers .htaccess.<br />
+ Elle est disponible à
partir de la version 2.4.0 du serveur HTTP Apache.</p>
</dd>
<p>A partir de la version 2.2.22 de httpd, lorsqu'une directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code> se situe dans un
contexte de <code>serveur virtuel</code> ou de serveur principal,
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> ne traitera les règles de réécriture
- que si l'URI de la requête respecte la syntaxe d'un <a href="./directive-dict.html#Syntax">chemin URL</a>. Ceci permet
+ que si l'URI de la requête respecte la syntaxe d'un <a href="directive-dict.html#Syntax">chemin URL</a>. Ceci permet
d'éviter certains problèmes de sécurité où des règles
particulières pourraient permettre des développements de modèles
inattendus (voir <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3368">CVE-2011-3368</a>
utiliser l'option <code>AllowAnyURI</code>, afin de permettre à
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> d'appliquer le jeu de règles à toute
chaîne de requête URI, sans vérifier si cette dernière respecte la
- grammaire des chemins URL définie dans la spécification HTTP.</p>
+ grammaire des chemins URL définie dans la spécification HTTP.<br />
+ Disponible depuis la version 2.4.3 du serveur HTTP Apache.</p>
<div class="warning">
<h3>Avertissement à propos de la sécurité</h3>
<p>Avec cette option, la valeur de la directive <code class="directive"><a href="#rewritebase">RewriteBase</a></code> est recopiée depuis
une valeur explicitement définie dans tout sous-répertoire qui ne
- définit pas sa propre directive <code class="directive"><a href="#rewritebase">RewriteBase</a></code>. Disponible à partir
- de la version 2.5 du serveur HTTP Apache.</p>
+ définit pas sa propre directive <code class="directive"><a href="#rewritebase">RewriteBase</a></code>. Il s'agissait du
+ comportement par défaut avec les versions 2.4.0 à 2.4.3, et ce
+ drapeau qui permet de retrouver ce comportement est disponible
+ depuis la version 2.4.4 du serveur HTTP Apache.</p>
+ </dd>
+
+ <dt><code>IgnoreContextInfo</code></dt>
+ <dd>
+
+ <p>Lors d'une
+ substitution relative dans un contexte de répertoire (htaccess),
+ et si la directive <code class="directive"><a href="#rewritebase">RewriteBase</a></code> n'a pas été définie,
+ ce module utilise des informations en provenance d'une extension
+ d'URL et du contexte du système de fichiers pour transformer la
+ sustitution relative en URL. Par exemple, les modules
+ <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code> et <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code>
+ utilisent ces informations de contexte étendu. Disponible à partir de la
+ version 2.4.16 du serveur HTTP Apache.</p>
+ </dd>
+
+ <dt><code>LegacyPrefixDocRoot</code></dt>
+ <dd>
+
+ <p>Avant la version 2.4.26, si une substitution était une URL absolue qui
+ correspondait au serveur virtuel courant, l'URL pouvait être tout d'abord
+ réduite à sa partie chemin, puis enfin en chemin local. Comme l'URL peut
+ être réduite en chemin local, le chemin doit être préfixé par la
+ valeur de la directive DocumentRoot, ce qui permet d'interdire l'accès à
+ un fichier tel que /tmp/myfile suite à une requête pour
+ http://host/file/myfile avec la <code class="directive"><a href="#rewriterule">RewriteRule</a></code> suivante :</p>
+ <pre class="prettyprint lang-config">RewriteRule /file/(.*) http://localhost/tmp/$1</pre>
+
+ <p>Cette option permet de restaurer l'ancien comportement lorsqu'un chemin
+ local obtenu à partir de la réduction d'une URL n'est pas préfixé par la
+ valeur de la directive DocumentRoot. Disponible à partir de la version
+ 2.4.26 du serveur HTTP Apache.</p>
+ </dd>
+
+ <dt><code>LongURLOptimization</code></dt>
+ <dd>
+ <p>Cette option permet de réduire la consommation de mémoire des jeux de
+ règles longs et non optimisés qui enregistrent de manière répétitive de
+ longues valeurs dans des variables au sein des directives RewriteCond et
+ RewriteRule. Disponible à partir de la version 2.5 du serveur HTTP Apache.</p>
</dd>
</dl>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="RewriteRule" id="RewriteRule">RewriteRule</a> <a name="rewriterule" id="rewriterule">Directive</a></h2>
+<div class="directive-section"><h2><a name="rewriterule" id="rewriterule">Directive</a> <a name="RewriteRule" id="RewriteRule">RewriteRule</a><a title="Lien permanent" href="#rewriterule" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit les règles pour le moteur de réécriture</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteRule
<p><a id="patterns" name="patterns"><em>Modèle</em></a> est une
<a id="regexp" name="regexp">expression rationnelle</a>
- compatible perl. Dans la première règle de réécriture,
- l'expression est comparée au (%-decoded)
- <a href="./directive-dict.html#Syntax">chemin de l'URL</a> (ou au
- <a href="./directive-dict.html#Syntax">chemin fichier</a>, en
- fonction du contexte) de la
- requête. Les expressions suivantes sont comparées à la sortie de
- la dernière règle de réécriture qui
- correspondait.</p>
+ compatible perl. Ce avec quoi ce modèle est comparé dépend de l'endroit où
+ la directive <code class="directive">RewriteRule</code> est définie.</p>
<div class="note"><h3><a id="what_is_matched" name="what_is_matched">Qu'est-ce qui est comparé ?</a></h3>
- <p>Dans un contexte de serveur virtuel <code class="directive"><a href="../mod/core.html#virtualhost">VirtualHost</a></code>, le <em>modèle</em> est tout
+<ul>
+ <li><p>Dans un contexte de serveur virtuel <code class="directive"><a href="../mod/core.html#virtualhost">VirtualHost</a></code>, le <em>modèle</em> est tout
d'abord comparé à la portion de l'URL située entre le nom d'hôte
éventuellement accompagné du port, et la chaîne de paramètres (par
- exemple "/app1/index.html").</p>
-
- <p>Dans les contextes de répertoire <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> et htaccess, le
- <em>modèle</em> est tout d'abord comparé au chemin du <em>système
- de fichiers</em>, après suppression du préfixe ou chemin de base
- ayant conduit le serveur vers la règle <code class="directive">RewriteRule</code> (par
- exemple "app1/index.html" ou
- "index.html" selon l'endroit où les directives sont définies).</p>
+ exemple "/app1/index.html"). Il s'agit du <a href="directive-dict.html#Syntax">URL-path</a> décodé de sa valeur "%xx".</p></li>
+
+ <li><p>Dans un contexte de répertoire (sections <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> et fichiers .htaccess), le
+ <em>Modèle</em> est comparé avec une partie de chemin ; par exemple une
+ requête pour "/app1/index.html" entraînera une comparaison avec
+ "app1/index.html" ou "index.html" selon l'endroit où la directive
+ <code class="directive">RewriteRule</code> est définie.</p>
+
+ <p>Le chemin où la règle est défini est supprimé du chemin correspondant
+ du système de fichiers avant comparaison (jusqu'au slash final compris).
+ En conséquence de cette suppression, les règles définies dans
+ ce contexte n'effectuent des comparaisons qu'avec la portion du chemin
+ du système de fichiers "en dessous" de l'endroit où la règle est définie.</p>
+
+ <p>Le chemin correspondant actuel du système de fichiers est déterminé par
+ des directives telles que <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> et
+ <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, ou même le résultat de
+ substitutions dans des règles <code class="directive">RewriteRule</code> précédentes.
+ </p>
+ </li>
- <p>Si vous souhaitez faire une comparaison sur le nom
+ <li><p>Si vous souhaitez faire une comparaison sur le nom
d'hôte, le port, ou la chaîne de requête, utilisez une
directive <code class="directive"><a href="#rewritecond">RewriteCond</a></code>
comportant respectivement les variables
<code>%{HTTP_HOST}</code>, <code>%{SERVER_PORT}</code>, ou
- <code>%{QUERY_STRING}</code>.</p>
+ <code>%{QUERY_STRING}</code>.</p></li>
+</ul>
+
</div>
<div class="note"><h3>Réécritures dans un contexte de répertoire</h3>
moteur de réécriture. Cette restriction a été instaurée à des fins de
sécurité.</li>
-<li>Lorsqu'on utilise le moteur de réécriture dans un fichier
-<code>.htaccess</code>, le chemin de base du répertoire courant (qui est
-toujours le même pour ce même répertoire) est automatiquement
-<em>supprimé</em> au cours de la comparaison avec le modèle de la règle
-de réécriture, et automatiquement <em>ajouté</em> lorsqu'une
-substitution relative (ne débutant pas par un slash ou un nom de
-protocole) arrive à la fin d'un jeu de règles. Voir la directive
-<code class="directive"><a href="#rewritebase">RewriteBase</a></code> pour plus de
-détails à propos de l'ajout du préfixe après les substitutions
-relatives.</li>
+<li>Voir la directive
+<code class="directive"><a href="#rewritebase">RewriteBase</a></code> pour plus de détails à
+propos de l'ajout du préfixe après les substitutions relatives.</li>
<li>Si vous souhaitez effectuer une comparaison en prenant en compte
l'intégralité du
chemin de l'URL dans un contexte de répertoire (htaccess), vous devez
utiliser la variable <code>%{REQUEST_URI}</code> dans la directive
-<code class="directive">RewriteCond</code>.</li>
+<code class="directive"><a href="#rewritecond">RewriteCond</a></code>.</li>
<li>Le prefixe supprimé se termine toujours par un slash, ce qui
signifie que la comparaison s'effectue avec une chaîne qui ne comporte
<code>^/</code> ne correspondra jamais dans un contexte de répertoire.</li>
<li>Bien que les règles de réécriture soient permises du point de vue de
-la syntaxe dans les sections <code class="directive"><a href="../mod/core.html#location"><Location></a></code> et <code class="directive"><a href="../mod/core.html#files"><Files></a></code>, elles n'y sont pas prises en compte, et
-n'y sont à priori d'aucune utilité.</li>
+la syntaxe dans les sections <code class="directive"><a href="../mod/core.html#location"><Location></a></code> et <code class="directive"><a href="../mod/core.html#files"><Files></a></code> (y compris leurs versions sous forme
+d'expression rationnelle), elles n'y sont pas prises en compte, et
+n'y sont à priori d'aucune utilité. Les substitutions
+relatives sont une fonctionnalité qui n'est, elle non-plus pas supportée
+dans ce genre de contexte.</li>
</ul>
</div>
document <a href="../rewrite/intro.html#regex">Introduction à
mod_rewrite</a>.</p>
- <p>Dans mod_rewrite, on peut aussi utiliser le caractère NON
- ('<code>!</code>') comme préfixe de modèle. Ceci vous permet
+ <p>Dans <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, on peut aussi utiliser le caractère
+ NOT ('<code>!</code>') comme préfixe de modèle. Ceci vous permet
d'inverser la signification d'un modèle, soit pour dire
``<em>si l'URL considérée ne correspond <strong>PAS</strong> à
ce modèle</em>''. Le caractère NON peut donc être utilisé à
</dl>
- <p>En plus du texte, la chaîne <em>Substition</em> peut
+ <p>En plus du texte, la chaîne <em>Substitution</em> peut
comporter :</p>
<ol>
<code>$</code><strong>N</strong> (<strong>N</strong>=0..9), qui
seront remplacés par le contenu du <strong>N</strong>ème groupe
du <em>Modèle</em> qui correspondait. Les variables du serveur
- sont les mêmes que dans la <em>Chaîne de test</em> d'une
- directive <code>RewriteCond</code>. Les fonctions de comparaison
- sont issues de la directive <code>RewriteMap</code> dans la
+ sont les mêmes que dans la <em>Chaîne_de_test</em> d'une
+ directive <code class="directive"><a href="#rewritecond">RewriteCond</a></code>. Les
+ fonctions de comparaison sont issues de la directive <code class="directive"><a href="#rewritemap">RewriteMap</a></code> dans la
section de laquelle elles sont décrites. Ces trois types de
variables sont évaluées dans l'ordre ci-dessus.</p>
des
<strong><code>[</code><em>drapeaux</em><code>]</code></strong>
comme troisième argument de la directive
- <code>RewriteRule</code>. Séparés par des virgules au sein d'une
+ <code class="directive">RewriteRule</code>. Séparés par des virgules au sein d'une
liste encadrée par des crochets, les <em>drapeaux</em> peuvent
être choisis dans la table suivante. Vous trouverez plus de
détails, et des exemples pour chaque drapeau dans le <a href="../rewrite/flags.html">document à propos des drapeaux de
réécriture.</a></p>
- <table class="bordered">
- <tr><th>Drapeaux et syntaxe</th>
+ <table class="bordered"><tr class="header"><th>Drapeaux et syntaxe</th>
<th>Fonction</th>
</tr>
- <tr>
+<tr>
<td>B</td>
- <td>Echappe les caractères non-alphanumériques <em>avant</em>
+ <td>Echappe les caractères non-alphanumériques
+ dans les références arrières <em>avant</em>
d'appliquer la transformation. <em><a href="../rewrite/flags.html#flag_b">détails ...</a></em></td>
</tr>
- <tr>
- <td>chain|C</td>
+<tr class="odd">
+ <td>backrefnoplus|BNP</td>
+ <td>Avec ce drapeau, si les références arrières sont échappées,
+ les espaces seront échappés en %20 au lieu de +. Ceci s'avère
+ utile lorsqu'une référence arrière est utilisée dans la partie
+ chemin, et non dans la chaîne de paramètres de la requête ;
+ pour plus de détails, voir <em><a href="../rewrite/flags.html#flag_bnp">ici.</a></em></td>
+ </tr>
+<tr>
+ <td>chain|C</td>
<td>La règle est chaînée avec la règle suivante. Si la règle
échoue, la ou les règles avec lesquelles elle est est chaînée
seront sautées. <em><a href="../rewrite/flags.html#flag_c">détails ...</a></em></td>
</tr>
- <tr>
+<tr class="odd">
<td>cookie|CO=<em>NAME</em>:<em>VAL</em></td>
<td>Définit un cookie au niveau du navigateur client. La syntaxe
complète est :
<em><a href="../rewrite/flags.html#flag_co">détails ...</a></em>
</td>
</tr>
- <tr>
+<tr>
<td>discardpath|DPI</td>
<td>Supprime la partie PATH_INFO de l'URI réécrit. <em><a href="../rewrite/flags.html#flag_dpi">détails
...</a></em></td>
</tr>
- <tr>
+<tr class="odd">
+ <td>END</td>
+ <td>Stoppe le processus de réécriture immédiatement et
+ n'applique plus aucune règle. Empêche aussi l'application
+ ultérieure de règles de réécriture dans les contextes de
+ répertoire et de fichier .htaccess (disponible à partir de la
+ version 2.3.9 du serveur HTTP Apache). <em><a href="../rewrite/flags.html#flag_end">détails ...</a></em></td>
+ </tr>
+<tr>
<td>env|E=[!]<em>VAR</em>[:<em>VAL</em>]</td>
<td>Définit la variable d'environnement <em>VAR</em> (à la valeur
<em>VAL</em> si elle est fournie). La variante !<em>VAR</em>
annule la définition de la variable <em>VAR</em>.<em><a href="../rewrite/flags.html#flag_e">détails ...</a></em></td>
</tr>
- <tr>
+<tr class="odd">
<td>forbidden|F</td>
<td>Renvoie une réponse 403 FORBIDDEN au navigateur client.
<em><a href="../rewrite/flags.html#flag_f">détails ...</a></em></td>
</tr>
- <tr>
+<tr>
<td>gone|G</td>
<td>Renvoie un message d'erreur 410 GONE au navigateur client. <em><a href="../rewrite/flags.html#flag_g">détails ...</a></em></td>
</tr>
- <tr>
+<tr class="odd">
<td>Handler|H=<em>Gestionnaire de contenu</em></td>
<td>L'URI résultant est envoyé au <em>Gestionnaire de
contenu</em> pour traitement. <em><a href="../rewrite/flags.html#flag_h">détails ...</a></em></td>
</tr>
- <tr>
+<tr>
<td>last|L</td>
<td>Arrête le processus de réécriture immédiatement et n'applique
plus aucune règle. Prêtez une attention particulière aux mises
en garde concernant les contextes de niveau répertoire et
- .htaccess (voir aussi le drapeau END). <em><a href="../rewrite/flags.html#flag_end">détails ...</a></em></td>
+ .htaccess (voir aussi le drapeau END). <em><a href="../rewrite/flags.html#flag_l">détails ...</a></em></td>
</tr>
- <tr>
+<tr class="odd">
<td>next|N</td>
<td>Réexécute le processus de réécriture à partir de la première
règle, en utilisant le résultat du jeu de règles, sous réserve
qu'il y ait un point de départ. <em><a href="../rewrite/flags.html#flag_n">détails
...</a></em></td>
</tr>
- <tr>
+<tr>
<td>nocase|NC</td>
<td>Rend la comparaison entre modèles insensible à la casse.
<em><a href="../rewrite/flags.html#flag_nc">détails ...</a></em></td>
</tr>
- <tr>
+<tr class="odd">
<td>noescape|NE</td>
<td>Empêche mod_rewrite d'effectuer un échappement hexadécimal
des caractères spéciaux dans le résultat de la réécriture. <em><a href="../rewrite/flags.html#flag_ne">détails ...</a></em></td>
</tr>
- <tr>
+<tr>
<td>nosubreq|NS</td>
<td>La règle est sautée si la requête courante est une
sous-requête interne. <em><a href="../rewrite/flags.html#flag_ns">détails ...</a></em></td>
</tr>
- <tr>
+<tr class="odd">
<td>proxy|P</td>
<td>Force l'envoi en interne de l'URL de substitution en tant
que requête mandataire. <em><a href="../rewrite/flags.html#flag_p">détails
...</a></em></td>
</tr>
- <tr>
+<tr>
<td>passthrough|PT</td>
<td>L'URI résultant est repassé au moteur de mise en
correspondance des URLs pour y être traité par d'autres
traducteurs URI-vers-nom de fichier, comme <code>Alias</code> ou
<code>Redirect</code>. <em><a href="../rewrite/flags.html#flag_pt">détails ...</a></em></td>
</tr>
- <tr>
+<tr class="odd">
<td>qsappend|QSA</td>
<td>Ajoute toute chaîne de paramètres présente dans l'URL de la
requête originale à toute chaîne de paramètres créée dans la
cible de réécriture. <em><a href="../rewrite/flags.html#flag_qsa">détails ...</a></em></td>
</tr>
- <tr>
+<tr>
<td>qsdiscard|QSD</td>
<td>Supprime toute chaîne de paramètres de l'URI entrant. <em><a href="../rewrite/flags.html#flag_qsd">détails
...</a></em></td>
</tr>
- <tr>
- <td>redirect|R[=<em>code</em>]</td>
+<tr class="odd">
+ <td>qslast|QSL</td>
+ <td>Interprète le dernier (le plus à droite) point d'interrogation comme
+ le délimiteur de la chaîne de paramètres de la requête, au lieu du
+ premier (le plus à gauche) comme c'est le cas habituellement. Disponble
+ à partir de la version 2.4.19 du serveur HTTP Apache. <em><a href="../rewrite/flags.html#flag_qsl">détails ...</a></em></td>
+ </tr>
+<tr>
+ <td>redirect|R[=<em>code</em>]</td>
<td>Force une redirection externe, avec un code de statut HTTP
optionnel. <em><a href="../rewrite/flags.html#flag_r">détails ...</a></em>
</td>
</tr>
- <tr>
- <td>END</td>
- <td>Arrête le processus de réécriture immédiatement et
- n'applique plus aucune règle. Empêche aussi l'exécution
- ultérieure de règles de réécriture dans des contextes de
- répertoire et des fichiers .htaccess (disponible depuis la
- version 2.3.9) <em><a href="../rewrite/flags.html#flag_l">détails ...</a></em></td>
- </tr>
- <tr>
+<tr class="odd">
<td>skip|S=<em>nombre</em></td>
<td>Si la règle courante s'applique, le moteur de réécriture
doit sauter les <em>nombre</em> règles suivantes. <em><a href="../rewrite/flags.html#flag_s">détails ...</a></em></td>
</tr>
- <tr>
+<tr>
<td>type|T=<em>MIME-type</em></td>
<td>Force l'attribution du <a class="glossarylink" href="../glossary.html#type-mime" title="voir glossaire">Type-MIME</a>
spécifié au fichier cible. <em><a href="../rewrite/flags.html#flag_t">détails ...</a></em></td>
</tr>
- </table>
+</table>
<div class="note"><h3>Développement du répertoire home</h3>
<p> Quand la chaîne de substitution commence par quelque chose comme
-"/~user" (de manière explicite ou par références arrières), mod_rewrite
+"/~user" (de manière explicite ou par références arrières), <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
développe le répertoire home sans tenir compte de la présence ou de la
configuration du module <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>.</p>
/chemin/infochemin</code>'':</strong><br />
</p>
-<table class="bordered">
-<tr>
+<table class="bordered"><tr class="header">
<th>Règle</th>
<th>Résultat de la substitution</th>
</tr>
-
<tr>
<td>^/un_chemin(.*) autre_chemin$1</td>
<td>invalide, non supporté</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^/un_chemin(.*) autre_chemin$1 [R]</td>
<td>invalide, non supporté</td>
</tr>
-
<tr>
<td>^/un_chemin(.*) autre_chemin$1 [P]</td>
<td>invalide, non supporté</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^/un_chemin(.*) /autre_chemin$1</td>
<td>/autre_chemin/info_chemin</td>
</tr>
-
<tr>
<td>^/un_chemin(.*) /autre_chemin$1 [R]</td>
<td>http://cet_hote/autre_chemin/info_chemin via une redirection externe</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^/un_chemin(.*) /autre_chemin$1 [P]</td>
<td>sans objet, non supporté</td>
</tr>
-
<tr>
<td>^/un_chemin(.*) http://cet_hote/autre_chemin$1</td>
<td>/autre_chemin/info_chemin</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^/un_chemin(.*) http://cet_hote/autre_chemin$1 [R]</td>
<td>http://cet_hote/autre_chemin/info_chemin via une redirection externe</td>
</tr>
-
<tr>
<td>^/un_chemin(.*) http://cet_hote/autre_chemin$1 [P]</td>
<td>sans objet, non supporté</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^/un_chemin(.*) http://autre_hote/autre_chemin$1</td>
<td>http://autre_hote/autre_chemin/info_chemin via une redirection externe</td>
</tr>
-
<tr>
<td>^/un_chemin(.*) http://autre_hote/autre_chemin$1 [R]</td>
<td>http://autre_hote/autre_chemin/info_chemin (le drapeau [R] est
redondant)</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^/somepath(.*) http://otherhost/otherpath$1 [P]</td>
<td>http://otherhost/otherpath/pathinfo via internal proxy</td>
</tr>
<p><strong>Dans une configuration de niveau répertoire pour
<code>/chemin</code><br />
(<code>/chemin/physique/vers/chemin/.htacccess</code>, avec
- <code>RewriteBase /chemin</code>)<br />
+ <code>RewriteBase "/chemin"</code>)<br />
pour la requête ``<code>GET
/chemin/chemin-local/infochemin</code>'':</strong><br />
</p>
-<table class="bordered">
-
-<tr>
+<table class="bordered"><tr class="header">
<th>Règle</th>
<th>Résultat de la substitution</th>
</tr>
-
<tr>
<td>^chemin-local(.*) autre-chemin$1</td>
<td>/chemin/autre-chemin/infochemin</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^chemin-local(.*) autre-chemin$1 [R]</td>
<td>http://cet-hôte/chemin/autre-chemin/infochemin via redirection
externe</td>
</tr>
-
<tr>
<td>^chemin-local(.*) autre-chemin$1 [P]</td>
<td>n'a pas lieu d'être, non supporté</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^chemin-local(.*) /autre-chemin$1</td>
<td>/autre-chemin/infochemin</td>
</tr>
-
<tr>
<td>^chemin-local(.*) /autre-chemin$1 [R]</td>
<td>http://cet-hôte/autre-chemin/infochemin via redirection externe</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^chemin-local(.*) /autre-chemin$1 [P]</td>
<td>n'a pas lieu d'être, non supporté</td>
</tr>
-
<tr>
<td>^chemin-local(.*) http://cet-hôte/autre-chemin$1</td>
<td>/autre-chemin/infochemin</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^chemin-local(.*) http://cet-hôte/autre-chemin$1 [R]</td>
<td>http://cet-hôte/autre-chemin/infochemin via redirection externe</td>
</tr>
-
<tr>
<td>^chemin-local(.*) http://cet-hôte/autre-chemin$1 [P]</td>
<td>n'a pas lieu d'être, non supporté</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^chemin-local(.*) http://autre hôte/autre-chemin$1</td>
<td>http://autre hôte/autre-chemin/infochemin via redirection externe</td>
</tr>
-
<tr>
<td>^chemin-local(.*) http://autre hôte/autre-chemin$1 [R]</td>
<td>http://autre hôte/autre-chemin/infochemin via redirection externe
(le drapeau [R] est redondant)</td>
</tr>
-
-<tr>
+<tr class="odd">
<td>^chemin-local(.*) http://autre hôte/autre-chemin$1 [P]</td>
<td>http://autre hôte/autre-chemin/infochemin via un mandataire interne</td>
</tr>
-
</table>
}
})(window, document);
//--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2013 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="apache">Copyright 2018 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/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();