<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>
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_rewrite.html" title="Français"> fr </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Ce module fournit un moteur de réécriture à base de
règles permettant de réécrire les URLs des requêtes
à la volée</td></tr>
<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>
-<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> à
</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">Directive</a> <a name="RewriteBase" id="RewriteBase">RewriteBase</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>
<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
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.11 du serveur HTTP Apache,
+ <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
</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">Directive</a> <a name="RewriteCond" id="RewriteCond">RewriteCond</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>
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>API_VERSION</code></dt>
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>
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
<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>
+ 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>
+ 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
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 />
+ <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>
+ sont identiques, caractère pour caractère).</dd>
- <li>'<strong>>=expression de comparaison</strong>'
- (supérieur ou égal à au sens lexicographique)<br />
+ <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>
+ 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 />
+ <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 />
+ <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>
+ numériquement supérieure ou égale à
+ <em>expression_de_comparaison</em>.</dd>
- <li>'<strong>-gt</strong>' (est numériquement supérieur à)<br />
+ <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
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 />
+ <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
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 />
+ <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
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>
- </ul>
+ <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>
+
+ </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 />
+ <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.</li>
+ 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 />
+ <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.</li>
+ 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 />
+ <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 />
+ <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 />
+ <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><p>'<strong>-U</strong>' (test de l'existence d'une
- URL via une sous-requête)<br />
+ <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
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>
+ retourné.</p></dd>
- <li>'<strong>-x</strong>' (a l'attribut d'exécution positionné)<br />
+ <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>
</li>
non désiré.
</p>
- <pre class="prettyprint lang-config"> RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<br />
+ <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
+ <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>'
fonctionnement de l'en-tête Vary.
</li>
</ul>
- </li>
- </ol>
+
<p><strong>Exemple :</strong></p>
</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">Directive</a> <a name="RewriteEngine" id="RewriteEngine">RewriteEngine</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">Directive</a> <a name="RewriteMap" id="RewriteMap">RewriteMap</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>MapName</em> <em>MapType</em>:<em>MapSource</em> <em>MapTypeOptions</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
<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>
</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">Directive</a> <a name="RewriteOptions" id="RewriteOptions">RewriteOptions</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>
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.</p>
+ 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">Directive</a> <a name="RewriteRule" id="RewriteRule">RewriteRule</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> de la
- requête, ou, dans un contexte de répertoire (voir
- ci-dessous), au chemin de l'URL relativement à ce contexte de
- répertoire. 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
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>
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
+ 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
...</a></em></td>
</tr>
<tr class="odd">
- <td>redirect|R[=<em>code</em>]</td>
+ <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>
+<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 class="odd">
+<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>
<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>
}
})(window, document);
//--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 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();