<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1073591 -->
+<!-- English Revision: 1668875:1673917 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<summary>
<p>Le module <module>mod_rewrite</module> utilise un moteur de
réécriture à base de règles, basé sur un interpréteur
- d'expressions rationnelles, pour réécrire les URLs à la volée. Par
+ d'expressions rationnelles PCRE, pour réécrire les URLs à la volée. Par
défaut, <module>mod_rewrite</module> met en correspondance une URL
avec le système de fichiers. Cependant, on peut aussi l'utiliser
pour rediriger une URL vers une autre URL, ou pour invoquer une
</note>
<example><title>Exemple</title>
+ <highlight language="config">
LogLevel alert rewrite:trace3
+ </highlight>
</example>
<note><title>RewriteLog</title>
mettra pas à jour les variables d'environnement
<code>SCRIPT_URx</code>.</p>
- <p>Pour désactiver le module, il vaut mieux utiliser cette
- directive que commenter toutes les directives <directive
- module="mod_rewrite">RewriteRule</directive> !</p>
+ <p>Plutôt que de commenter toutes les directives <directive
+ module="mod_rewrite">RewriteRule</directive>, il est préférable
+ d'utiliser cette directive si l'on souhaite désactiver les
+ règles de réécriture dans un contexte particulier.</p>
<p>Notez que les hôtes virtuels n'héritent pas des
configurations de réécriture. Ceci implique que vous devez
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
-<compatibility><code>MaxRedirects</code> n'est plus disponible depuis
-la version version 2.1</compatibility>
<usage>
<p>La directive <directive>RewriteOptions</directive> définit
<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, <module>mod_rewrite</module> ignore les URLs qui
+ correspondent à un répertoire sur disque, mais ne comportent pas
+ de slash final, afin que le module <module>mod_dir</module>
+ redirige le client vers l'URL canonique avec un slash final.</p>
+
+ <p>Lorsque la directive <directive
+ module="mod_dir">DirectorySlash</directive> est définie à off, il
+ est possible de spécifier l'option <code>AllowNoSlash</code> pour
+ 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.<br />
+ Elle est disponible à
+ partir de la version 2.4.0 du serveur HTTP Apache.</p>
+ </dd>
+
+ <dt><code>AllowAnyURI</code></dt>
+ <dd>
+
+ <p>A partir de la version 2.2.22 de httpd, lorsqu'une directive <directive
+ module="mod_rewrite">RewriteRule</directive> se situe dans un
+ contexte de <code>serveur virtuel</code> ou de serveur principal,
+ <module>mod_rewrite</module> 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
+ 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>
+ et <a
+ href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-4317">CVE-2011-4317</a>).
+ Pour s'affranchir de la restriction relative à la syntaxe des chemins URL, on peut
+ utiliser l'option <code>AllowAnyURI</code>, afin de permettre à
+ <module>mod_rewrite</module> 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.<br />
+ Disponible depuis la version 2.4.3 du serveur HTTP Apache.</p>
+
+ <note type="warning">
+ <title>Avertissement à propos de la sécurité</title>
+
+ <p>L'utilisation de cette option rendra le serveur vulnérable à
+ certains problèmes de sécurité si les règles de réécritures
+ concernées n'ont pas été rédigées avec soin. Il est par conséquent
+ <strong>fortement recommandé</strong> de ne pas utiliser cette
+ option. En particulier, prêtez attention aux chaînes en entrée contenant le
+ caractère '<code>@</code>', qui peuvent modifier l'interprétation
+ de l'URI réécrite, comme indiqué dans les liens ci-dessus.</p>
+ </note>
+ </dd>
+
+ <dt><code>MergeBase</code></dt>
+ <dd>
+
+ <p>Avec cette option, la valeur de la directive <directive
+ module="mod_rewrite">RewriteBase</directive> est recopiée depuis
+ une valeur explicitement définie dans tout sous-répertoire qui ne
+ définit pas sa propre directive <directive
+ module="mod_rewrite">RewriteBase</directive>. 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 <directive
+ module="mod_rewrite">RewriteBase</directive> 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
+ <module>mod_userdir</module> et <module>mod_alias</module>
+ utilisent ces informations de contexte étendu.</p>
</dd>
</dl>
<name>RewriteMap</name>
<description>Définit une fonction de mise en correspondance pour la
recherche de mots-clés</description>
-<syntax>RewriteMap <em>nom de la correspondance</em> <em>type de
-correspondance</em>:<em>source de la correspondance</em>
+<syntax>RewriteMap <em>MapName</em> <em>MapType</em>:<em>MapSource</em> <em>MapTypeOptions</em>
</syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
-<compatibility>Il est possible de choisir entre plusieurs types de
-bases de données depuis la version 2.0.41 du serveur HTTP Apache</compatibility>
<usage>
<p>La directive <directive>RewriteMap</directive> définit une
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
<directive>RewriteMap</directive> comme suit </p>
- <example>
+ <highlight language="config">
RewriteMap map-exemple txt:/chemin/vers/fichier/map.txt
- </example>
+ </highlight>
<p>Vous pourrez ensuite utiliser cette table dans une
directive <directive>RewriteRule</directive> comme suit :</p>
- <example>
+ <highlight language="config">
RewriteRule ^/ex/(.*) ${map-exemple:$1}
- </example>
+ </highlight>
+
+ <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>
+ </dl>
<p>Vous trouverez plus de détails et de nombreux exemples dans le <a
href="../rewrite/rewritemap.html">RewriteMap HowTo</a>.</p>
<name>RewriteBase</name>
<description>Définit l'URL de base pour les réécritures au niveau
répertoire</description>
-<syntax>RewriteBase <em>chemin URL</em></syntax>
+<syntax>RewriteBase <em>chemin_URL</em></syntax>
<default>Pas de valeur par défaut</default>
<contextlist><context>directory</context><context>.htaccess</context>
</contextlist>
<override>FileInfo</override>
<usage>
- <p>La directive <directive>RewriteBase</directive> définit
- explicitement le chemin URL de base (et non le chemin du
- répertoire dans le système de fichiers !) pour les réécritures dans un contexte
- de répertoire dont le résultat est la substitution d'un
- chemin relatif. Lorsque vous utilisez une directive <directive
- module="mod_rewrite">RewriteRule</directive> dans un fichier
- <code>.htaccess</code>, <module>mod_rewrite</module> enlève le
- préfixe de répertoire local avant d'effectuer le traitement, puis
- réécrit ce qui reste de l'URL. Lorsque la réécriture est terminée,
- <module>mod_rewrite</module> ajoute automatiquement le préfixe de
- répertoire local (ou la valeur de la directive
- <directive>RewriteBase</directive> si cette dernière est définie)
- à la chaîne de substitution avant de la remettre à disposition du
- serveur, comme s'il s'agissait de l'URL d'origine.</p>
-
- <p>Cette directive est <em>requise</em> pour les réécritures
- dans un contexte de répertoire défini via la directive
- <directive module="mod_alias">Alias</directive> lorsque la
- substitution utilise un chemin relatif.</p>
-
- <p>Si votre chemin URL n'existe pas réellement dans le système de
- fichiers, ou ne trouve pas directement sous le répertoire défini
- par la directive <directive
- module="core">DocumentRoot</directive>, vous devez utiliser la
- directive <directive>RewriteBase</directive> dans chaque fichier
- <code>.htaccess</code> où vous voulez utiliser des directives <directive
- module="mod_rewrite">RewriteRule</directive>.</p>
-
- <p>L'exemple ci-dessous montre comment faire correspondre
- http://example.com/mon-appli/index.html à
- /home/www/exemple/nouveau_site.html dans un fichier
- <code>.htaccess</code>. On suppose que le contenu disponible à
- http://example.com/ se situe sur le disque à
- /home/www/exemple/.</p>
-
-<example>
-<pre>
-RewriteEngine On
-# Le chemin URL utilisé pour arriver dans ce contexte, et non le chemin
-# du système de fichiers
-RewriteBase /mon-appli/
-RewriteRule ^index\.html$ nouveau_site.html
-</pre>
-</example>
+ <p>La directive <directive>RewriteBase</directive> permet de
+ spécifier le préfixe d'URL à utiliser dans un contexte de
+ répertoire (htaccess) pour les directives
+ <directive>RewriteRule</directive> 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, se
+ situent par raport à la valeur de la directive
+ <directive module="core">DocumentRoot</directive> (c'est à
+ dire que pour y accéder, il n'est pas nécessaire d'utiliser
+ une directive telle qu'<directive
+ module="mod_alias">Alias</directive>).</li>
+ <li>Le chemin du système de fichiers vers le répertoire
+ contenant la <directive>RewriteRule</directive>, 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.11 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
+ <directive module="mod_alias">Alias</directive> ou le module
+ <module>mod_userdir</module>.</li>
+ </ul>
+
+<p>Dans l'exemple ci-dessous, la directive
+<directive>RewriteBase</directive> est nécessaire afin d'éviter une
+réécriture en http://example.com/opt/myapp-1.2.3/welcome.html car la
+ressource n'était pas relative à la racine des documents. Cette erreur
+de configuration aurait conduit le serveur à rechercher un répertoire
+"opt" à la racine des documents.</p>
+
+<highlight language="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>
+</highlight>
</usage>
la réécriture soit effectuée
</description>
<syntax> RewriteCond
- <em>chaîne de test</em> <em>expression de comparaison</em></syntax>
+ <em>chaîne_de_test</em> <em>expression_de_comparaison</em></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<p><em>TestString</em> est une chaîne qui peut contenir les
extensions suivantes en plus du texte simple :</p>
-
+
<ul>
<li>
<strong>références arrières de règle de réécriture</strong> :
</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></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 <directive
module="core">UseCanonicalName</directive> et <directive
module="core">UseCanonicalPhysicalPort</directive>.</p>
-
+
<p>Parmi les variables
spécifiques à mod_rewrite, ou trouve les suivantes :</p>
<note>
<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
+ <module>mod_remoteip</module>).</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
+ <module>mod_ssl</module> soit chargé ou non).</dd>
- <dt><code>REQUEST_URI</code></dt>
+ <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>
- <dd>La ressource demandée dans la ligne de requête
- HTTP ("/index.html" dans l'exemple ci-dessus).</dd>
+ <dt><code>REMOTE_ADDR</code></dt>
+ <dd>L'adresse IP de l'hôte distant (se référer au
+ module <module>mod_remoteip</module>).</dd>
<dt><code>REQUEST_FILENAME</code></dt>
au moment où on y fait référence. Dans le cas
contraire, et en particulier dans le cas d'un serveur
virtuel, <code>REQUEST_FILENAME</code> contient la
- valeur de <code>REQUEST_URI</code>.</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
- <module>mod_ssl</module> soit chargé ou non.</dd>
+ valeur de <code>REQUEST_URI</code>. En fonction de la
+ valeur de la directive <directive
+ module="core">AcceptPathInfo</directive>, le serveur
+ peut n'utiliser que certains éléments de tête du
+ <code>REQUEST_URI</code> pour déterminer à quel
+ fichier correspond la requête.</dd>
<dt><code>REQUEST_SCHEME</code></dt>
la directive <directive
module="core">ServerName</directive>.</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>
</note>
</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>.</p>
+ 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 à
+ l'en-tête Vary.</p>
<p>Autres points à connaître ::</p>
<ol>
chargé, cette variable contiendra toujours une chaîne vide.
Exemple : <code>%{SSL:SSL_CIPHER_USEKEYSIZE}</code> pourra
contenir la valeur <code>128</code>.</li>
-
+
<li>
On peut utiliser <code>%{HTTP:en-tête}</code>, où
<em>en-tête</em> peut correspondre à tout nom d'en-tête MIME
</li>
<li>A des fins de référence avant, on peut utiliser,
- <code>%{LA-U:variable}</code>, qui
+ <a id="LA-U" name="LA-U"><code>%{LA-U:variable}</code></a>, qui
permet d'effectuer une sous-requête interne à base d'URL, afin
de déterminer la valeur finale de <em>variable</em>. Ceci permet
d'accéder à la valeur d'une variable pour la réécriture inconnue
déterminer la valeur finale de <em>variable</em>. La plupart du
temps, elle est identique à LA-U (voir ci-dessus).</li>
</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 :
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
+ <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>
<li>'<strong>>expression</strong>' (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
+ <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>
<li>'<strong>=expression</strong>' (é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.</li>
<li>'<strong><=expression de comparaison</strong>' (inférieur ou égal à
au sens lexicographique)<br />
- Considère l'<em>expression de comparaison</em> comme une
+ 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
+ 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
+ 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
+ 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>
<ul>
<li>'<strong>-eq</strong>' (est numériquement égal à)<br />
- La <em>chaîne de test</em> est considérée comme un entier,
+ 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>
<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,
+ 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 ou égale à <em>expression de comparaison</em>.</li>
-
+ supérieure ou égale à <em>expression_de_comparaison</em>.</li>
+
<li>'<strong>-gt</strong>' (est numériquement supérieur à)<br />
- La <em>chaîne de test</em> est considérée comme un entier,
+ 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>.</li>
<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,
+ 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>
-
+
<li>'<strong>-lt</strong>' (est numériquement inférieur à)<br />
- La <em>chaîne de test</em> est considérée comme un entier,
+ 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>
<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
+ 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>
<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
+ 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>
<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,
+ 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 - à
Voir <strong>-l</strong>.</li>
<li>'<strong>-l</strong>' (est un lien symbolique)<br />
- Considère la <em>chaîne de test</em> comme un chemin et
+ 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
<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
+ 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>
- <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,
+ <li><p>'<strong>-U</strong>' (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>
+ 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></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
+ 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>
</ul>
-<note><title>Note :</title>
- Tous ces tests peuvent aussi être préfixés par un point
- d'exclamation ('!') pour inverser leur signification.
-</note>
</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>
- <example>
+ <highlight language="config">
RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<br />
RewriteRule ^/images - [F]
- </example>
+ </highlight>
</li>
<li>Vous pouvez aussi définir certains drapeaux pour
- l'<em>expression de comparaison</em> en ajoutant ces
+ 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
(<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 :
-<example>
-<pre>
+<highlight language="config">
RewriteCond %{REMOTE_HOST} ^host1 [OR]
RewriteCond %{REMOTE_HOST} ^host2 [OR]
RewriteCond %{REMOTE_HOST} ^host3
RewriteRule ...règles concernant tous ces hôtes...
-</pre>
-</example>
+</highlight>
Sans ce drapeau, les paires
condition/règle devraient être écrites trois fois.
l'en-tête ``<code>User-Agent:</code>'' de la requête, vous
pouvez utiliser ce qui suit : </p>
-<example>
-<pre>
-RewriteCond %{HTTP_USER_AGENT} ^Mozilla
-RewriteRule ^/$ /homepage.max.html [L]
-
-RewriteCond %{HTTP_USER_AGENT} ^Lynx
-RewriteRule ^/$ /homepage.min.html [L]
+<highlight language="config">
+RewriteCond %{HTTP_USER_AGENT} (iPhone|Blackberry|Android)
+RewriteRule ^/$ /homepage.mobile.html [L]
RewriteRule ^/$ /homepage.std.html [L]
-</pre>
-</example>
+</highlight>
<p>Explications : si vous utilisez un navigateur
- (Netscape Navigator, Mozilla etc) qui s'identifie comme
- 'Mozilla', vous accèderez à la page d'accueil max (qui
- peut contenir des frames, ou d'autres ressources
- particulières).
- Si vous utilisez le navigateur Lynx (qui est un navigateur
- en mode texte), vous accèderez à une page d'accueil min
- (qui peut être une version conçue pour une navigation simple
- basée sur le texte).
- Si aucune de ces conditions n'est satisfaite (vous utilisez tout
- autre navigateur, ou votre navigateur s'identifie de manière non
- standard), vous accèderez à la page d'accueil std
- (standard).</p>
+ qui s'identifie comme un
+ navigateur de plateforme mobile (notez que l'exemple est
+ incomplet car il existe de nombreuses autres plateformes
+ mobiles), c'est la version pour mobile de la page d'accueil qui
+ sera renvoyée. Dans le cas contraire, ce sera la page d'accueil
+ standard.</p>
</usage>
<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> de la
- requête ; les expressions suivantes sont comparées à la sortie de
- la dernière règle de réécriture qui a été appliquée.</p>
+ <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>
+
+<note><title><a id="what_is_matched" name="what_is_matched">Qu'est-ce qui est comparé ?</a></title>
-<note><title>Qu'est-ce qui est comparé ?</title>
-
<p>Dans un contexte de serveur virtuel <directive
module="core">VirtualHost</directive>, le <em>modèle</em> est tout
d'abord comparé à la portion de l'URL située entre le nom d'hôte
module="core">Directory</directive> 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 à la règle <directive>RewriteRule</directive> (par
+ ayant conduit le serveur vers la règle <directive>RewriteRule</directive> (par
exemple "app1/index.html" ou
"index.html" selon l'endroit où les directives sont définies).</p>
-
+
<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 <directive module="mod_rewrite">RewriteCond</directive>
<li>Bien que les règles de réécriture soient permises du point de vue de
la syntaxe dans les sections <directive type="section"
module="core">Location</directive> et <directive type="section"
-module="core">Files</directive>, elles n'y sont pas prises en compte, et
-n'y sont à priori d'aucune utilité.</li>
+module="core">Files</directive> (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>
</note>
<dt>un chemin du système de fichiers</dt>
<dd>Il indique alors la localisation dans le système de
- fichiers de la ressource qui doit être envoyée au client.</dd>
+ fichiers de la ressource qui doit être envoyée au
+ client. Les substitutions ne sont traitées en tant que chemins du
+ système de fichiers que si la règle est configurée dans un
+ contexte de serveur (serveur virtuel), et si le premier
+ composant du chemin dans la substitution existe dans le système
+ de fichiers.</dd>
<dt>chemin d'URL</dt>
<em>Substitution</em> <code>/www/file.html</code>, cette
dernière sera traitée comme un chemin d'URL <em>à moins</em>
qu'un répertoire nommé <code>www</code> n'existe à la racine
- de votre système de fichiers, auquel cas la chaîne de
+ de votre système de fichiers (ou dans le cas d'une
+ réécriture au sein d'un fichier <code>.htaccess</code>,
+ relativement à la racine des documents), auquel cas la chaîne de
substitution sera traitée comme un chemin du système de
fichiers. Si vous désirez que d'autres directives de
correspondance d'URL (comme la directive <directive
<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
+ 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
section de laquelle elles sont décrites. Ces trois types de
variables sont évaluées dans l'ordre ci-dessus.</p>
- <p>Comme mentionné précédemment, toutes les règles de
- réécriture sont appliquées à la chaîne de <em>Substitution</em>
- (selon l'ordre dans lequel elles sont définies dans le fichier
- de configuration). L'URL est <strong>intégralement
+ <p>Chaque règle de réécriture s'applique au résultat de la règle
+ précédente, selon l'ordre dans lequel elles ont été définies dans
+ le fichier de configuration. Le chemin de l'URL ou du système de fichier (voir
+ ci-dessus <a href="#what_is_matched">Qu'est-ce qui est
+ comparé ?</a>) est <strong>intégralement
remplacée</strong> par la chaîne de <em>Substitution</em> et le
processus de réécriture se poursuit jusqu'à ce que toutes les
règles aient été appliquées, ou qu'il soit explicitement stoppé
- par un drapeau <code><strong>L</strong></code>.</p>
+ par un drapeau <a
+ href="../rewrite/flags.html#flag_l"><code><strong>L</strong></code></a>,
+ ou par un autre drapeau qui implique un arrêt immédiat, comme
+ <code><strong>END</strong></code> ou
+ <code><strong>F</strong></code>.</p>
<note><title>Modifier la chaîne de requête</title>
<p>Par défaut, la chaîne de requête est transmise sans
href="../rewrite/flags.html">document à propos des drapeaux de
réécriture.</a></p>
- <table border="1">
+ <table border="1" style="zebra">
<tr><th>Drapeaux et syntaxe</th>
<th>Fonction</th>
</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>
+ <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
<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 :
- CO=<em>NAME</em>:<em>VAL</em>[:<em>domain</em>[:<em>lifetime</em>[:<em>path</em>[:<em>secure</em>[:<em>httponly</em>]]]]]
+ CO=<em>NAME</em>:<em>VAL</em>:<em>domain</em>[:<em>lifetime</em>[:<em>path</em>[:<em>secure</em>[:<em>httponly</em>]]]] <em><a href="../rewrite/flags.html#flag_co">details ...</a></em>
<em><a href="../rewrite/flags.html#flag_co">détails ...</a></em>
</td>
</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
+ href="../rewrite/flags.html#flag_dpi">détails
...</a></em></td>
</tr>
<tr>
+ <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>
</tr>
<tr>
<td>qsappend|QSA</td>
- <td>Ajoute toute chaîne de paramètres créée dans la cible de
- réécriture à toute chaîne de paramètres présente dans l'URL de la
- requête originale. <em><a
+ <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>
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>
<td>skip|S=<em>nombre</em></td>
<td>Si la règle courante s'applique, le moteur de réécriture
href="../rewrite/flags.html#flag_s">détails ...</a></em></td>
</tr>
<tr>
- <td>tyle|T=<em>Type-MIME</em></td>
+ <td>type|T=<em>MIME-type</em></td>
<td>Force l'attribution du <glossary>Type-MIME</glossary>
spécifié au fichier cible. <em><a
href="../rewrite/flags.html#flag_t">détails ...</a></em></td>
</tr>
</table>
-
+
<note><title>Développement du répertoire home</title>
<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
/chemin/infochemin</code>'':</strong><br />
</p>
-<table border="1">
+<table border="1" style="zebra">
<tr>
<th>Règle</th>
<th>Résultat de la substitution</th>
<td>^/somepath(.*) http://otherhost/otherpath$1 [P]</td>
<td>http://otherhost/otherpath/pathinfo via internal proxy</td>
</tr>
-</table>
+</table>
<p><strong>Dans une configuration de niveau répertoire pour
<code>/chemin</code><br />
/chemin/chemin-local/infochemin</code>'':</strong><br />
</p>
-<table border="1">
+<table border="1" style="zebra">
<tr>
<th>Règle</th>