<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Quand ne pas utiliser mod_rewrite - Serveur HTTP Apache Version 2.4</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.min.js">
</script>

<link href="../images/favicon.png" rel="shortcut icon"></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<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="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Quand ne pas utiliser mod_rewrite</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/rewrite/avoid.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/rewrite/avoid.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
</div>
<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
            anglaise pour les changements r&eacute;cents.</div>


<p>Ce document est un compl&eacute;ment &agrave; la <a href="../mod/mod_rewrite.html">Documentation de r&eacute;f&eacute;rence</a> de
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Il d&eacute;crit peut-&ecirc;tre un des concepts les
plus importants &agrave; propos de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> - &agrave; savoir, quand doit-on &eacute;viter
de l'utiliser.</p>

<p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> doit &ecirc;tre consid&eacute;r&eacute; comme un dernier recours,
lorsqu'aucune alternative n'est possible. Utiliser mod_rewrite lorsqu'il
existe des alternatives plus simples conduit &agrave; des configurations
confuses, fragiles, et difficiles &agrave; maintenir. La compr&eacute;hension des
autres alternatives disponibles est une &eacute;tape tr&egrave;s importante sur le
chemin de la ma&icirc;trise de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>

<p>Vous devez vous attacher &agrave; comprendre le
fonctionnement des exemples, car la plupart d'entre eux ne
fonctionneront pas sur votre syst&egrave;me si vous vous contentez de les
copier/coller dans vos fichiers de configuration.</p>

<p>Le cas le plus courant dans lequel <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> est
l'outil appropri&eacute; est la situation o&ugrave; la seule solution envisageable
n&eacute;cessite l'acc&egrave;s aux fichiers de configuration du serveur, alors que
cet acc&egrave;s ne vous est pas accord&eacute;. Certaines directives de configuration
ne sont disponibles que dans le fichier de configuration du serveur. Si
vous ne pouvez agir que sur les fichiers .htaccess, vous devrez donc
vous tourner vers <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#redirect">Redirection simple</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#alias">Alias d'URL</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#vhosts">H&eacute;bergement virtuel</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#proxy">Mandat simple</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#setenv">Test de variables d'environnement</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module mod_rewrite</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en
correspondance</a></li><li><a href="access.html">Contr&ocirc;le d'acc&egrave;s</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="proxy.html">Serveurs mandataires</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="advanced.html">Techniques avanc&eacute;es</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="redirect">Redirection simple <a title="Lien permanent" href="#redirect" class="permalink">&para;</a></h2>


<p><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> fournit les directives <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code> et <code class="directive"><a href="../mod/mod_alias.html#redirectmatch">RedirectMatch</a></code> qui permettent de
rediriger une URL vers une autre. Plut&ocirc;t que d'utiliser la directive
<code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> pour ce genre de
redirection simple d'une URL ou d'une classe d'URLs vers une autre, on
pr&eacute;f&egrave;rera l'utilisation de ces directives. En outre, avec
<code>RedirectMatch</code>, vous pouvez inclure une expression
rationnelle dans votre crit&egrave;re de redirection, ce qui vous permet de
b&eacute;n&eacute;ficier de nombreux avantages de la directive
<code>RewriteRule</code>.</p>

<p>Une utilisation courante de la directive <code>RewriteRule</code> est
la redirection de toute une classe d'URLs. Par exemple, toutes les URLs
faisant r&eacute;f&eacute;rence au r&eacute;pertoire <code>/un</code> doivent &ecirc;tre
redirig&eacute;es vers <code>http://un.example.com/</code>, ou toutes les
requ&ecirc;tes <code>http</code> doivent &ecirc;tre redirig&eacute;es vers
<code>https</code>.</p>

<p>Pour ce faire, il est pr&eacute;f&eacute;rable d'utiliser la directive
<code>Redirect</code>. Souvenez-vous que la directive
<code>Redirect</code> conserve les informations relatives au chemin. En
d'autres termes, la redirection d'une URL <code>/un</code> va aussi
rediriger toutes les URLs de niveaux inf&eacute;rieurs comme
<code>/un/deux.html</code> et <code>/un/trois/quatre.html</code>.</p>

<p>Pour rediriger les URLs sous <code>/un</code> vers
<code>http://un.example.com/</code>, utilisez cette d&eacute;finition :</p>

<pre class="prettyprint lang-config">Redirect /one/ http://one.example.com/</pre>


<p>Pour rediriger un nom d'h&ocirc;te vers un autre nom d'h&ocirc;te, par exemple
<code>example.com</code> vers <code>www.example.com</code>, voir la
m&eacute;thode <a href="remapping.html#canonicalhost">Noms d'h&ocirc;tes canoniques</a>.</p>

<p>Pour rediriger les URLs <code>http</code> vers <code>https</code>,
utilisez cette d&eacute;finition :</p>

<pre class="prettyprint lang-config">&lt;VirtualHost *:80&gt;
ServerName www.example.com
Redirect "/" "https://www.example.com/"
&lt;/VirtualHost&gt;

&lt;VirtualHost *:443&gt;
ServerName www.example.com
#  ... ins&eacute;rer ici la configuration SSL
&lt;/VirtualHost&gt;</pre>


<p>L'utilisation de la directive <code>RewriteRule</code> pour accomplir
cette t&acirc;che peut se justifier s'il existe d'autres directives
<code>RewriteRule</code> dans la m&ecirc;me port&eacute;e. En effet, lorsque des
directives <code>Redirect</code> et <code>RewriteRule</code> se trouvent
dans la m&ecirc;me port&eacute;e, les directives <code>RewriteRule</code> sont
ex&eacute;cut&eacute;es en premier, sans tenir compte de leur ordre d'apparition dans
le fichier de configuration.</p>

<p>Dans le cas de la redirection <em>http-vers-https</em>, l'utilisation
de r&egrave;gles <code>RewriteRule</code> se justifie si vous n'avez pas acc&egrave;s
au fichier de configuration principal, et devez donc accomplir cette
t&acirc;che au sein d'un fichier <code>.htaccess</code>.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="alias">Alias d'URL <a title="Lien permanent" href="#alias" class="permalink">&para;</a></h2>
<p>La directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> permet
de mettre en correspondance un URI avec un r&eacute;pertoire, ce dernier &eacute;tant
en g&eacute;n&eacute;ral situ&eacute; en dehors de l'arborescence d&eacute;finie par la directive
<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. Bien qu'il soit
possible d'effectuer cette mise en correspondance avec
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, il est pr&eacute;f&eacute;rable d'utiliser la directive
<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> pour des raisons de simplicit&eacute;
et de performances.</p>

<div class="example"><h3>Utilisation de la directive Alias</h3><pre class="prettyprint lang-config">Alias "/cats" "/var/www/virtualhosts/felines/htdocs"</pre>
</div>

<p>
Pour effectuer cette mise en correspondance, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
s'impose si vous n'avez pas acc&egrave;s aux fichiers de configuration du
serveur. En effet, la directive Alias ne peut pas &ecirc;tre utilis&eacute;e dans un
fichier <code>.htaccess</code>, mais seulement dans un contexte de
serveur principal ou de serveur virtuel.
</p>

<p>En outre, vous pouvez arriver au m&ecirc;me r&eacute;sultat avec les liens
symboliques, pourvu que <code>Options FollowSymLinks</code> soit activ&eacute;
sur votre serveur.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="vhosts">H&eacute;bergement virtuel <a title="Lien permanent" href="#vhosts" class="permalink">&para;</a></h2>
<p>Bien qu'il soit possible de g&eacute;rer les <a href="vhosts.html">serveurs
virtuels avec mod_rewrite</a>, il s'agit rarement de la bonne m&eacute;thode.
Il est pratiquement toujours pr&eacute;f&eacute;rable de cr&eacute;er des blocs
<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> individuels.
Dans l'&eacute;ventualit&eacute; o&ugrave; vous devez g&eacute;rer
un grand nombre de serveurs virtuels, vous devez vous tourner vers
<code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code> pour cr&eacute;er ces serveurs
automatiquement.</p>

<p>Il est aussi possible d'utiliser des modules comme <code class="module"><a href="../mod/mod_macro.html">mod_macro</a></code> pour
cr&eacute;er un grand nombre de serveurs virtuels dynamiquement.</p>

<p>L'utilisation de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> pour la cr&eacute;ation de
serveurs virtuels peut se r&eacute;v&eacute;ler appropri&eacute;e si votre service
d'h&eacute;bergement ne vous permet pas d'acc&eacute;der aux fichiers de configuration
du serveur, et que vous soyez par cons&eacute;quent oblig&eacute; de passer par les
fichiers <code>.htaccess</code>.</p>

<p>Voir le document <a href="vhosts.html">cr&eacute;ation de serveurs virtuels
avec mod_rewrite</a> pour plus de d&eacute;tails sur la mani&egrave;re d'y parvenir si
cela semble &ecirc;tre tout de m&ecirc;me la meilleure approche.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="proxy">Mandat simple <a title="Lien permanent" href="#proxy" class="permalink">&para;</a></h2>

<p>La directive <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> fournit
le drapeau <a href="flags.html#flag_p">[P]</a> qui permet de faire passer les URIs
r&eacute;&eacute;crits par <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>.</p>

<pre class="prettyprint lang-config">RewriteRule "^/?images(.*)" "http://serveur-images.local/images$1" [P]</pre>


<p>Cependant, dans les nombreux cas o&ugrave; aucune correspondance au mod&egrave;le
n'est vraiment n&eacute;cessaire, comme dans l'exemple ci-dessus, il est
pr&eacute;f&eacute;rable d'utiliser la directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>. L'exemple pr&eacute;c&eacute;dent pourrait
&ecirc;tre remplac&eacute; par :</p>

<pre class="prettyprint lang-config">ProxyPass "/images/" "http://serveur-images.local/images/"</pre>


<p>Que vous utilisiez <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> ou <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>, vous devrez dans tous les cas
utiliser aussi la directive <code class="directive"><a href="../mod/mod_proxy.html#proxypassreverse">ProxyPassReverse</a></code> pour intercepter les
redirections en provenance du serveur d'arri&egrave;re-plan :</p>

<pre class="prettyprint lang-config">ProxyPassReverse "/images/" "http://serveur-images.local/images/"</pre>


<p>Vous devrez cependant tout de m&ecirc;me utiliser <code>RewriteRule</code>
lorsque d'autres <code>RewriteRule</code>s se trouvent dans la m&ecirc;me port&eacute;e,
car elles agissent en g&eacute;n&eacute;ral avant les directives
<code>ProxyPass</code>, et peuvent ainsi les court-circuiter.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="setenv">Test de variables d'environnement <a title="Lien permanent" href="#setenv" class="permalink">&para;</a></h2>

<p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> est souvent utilis&eacute; pour effectuer une
action en fonction de la pr&eacute;sence ou de l'absence d'une variable
d'environnement particuli&egrave;re ou d'un en-t&ecirc;te de requ&ecirc;te, ce qui peut
&ecirc;tre accompli de mani&egrave;re plus efficace via la directive <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code>.</p>

<p>Consid&eacute;rons par exemple le sc&eacute;nario courant o&ugrave; la directive
<code class="directive">RewriteRule</code> est utilis&eacute;e pour forcer un nom
d'h&ocirc;te canonique, tel que <code>www.example.com</code> au lieu de
<code>example.com</code>. Il est possible d'utiliser &agrave; la place la
directive <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code> comme
suit :</p>

<pre class="prettyprint lang-config">&lt;If "req('Host') != 'www.example.com'"&gt;
    Redirect "/" "http://www.example.com"
&lt;/If&gt;</pre>


<p>On peut utiliser cette technique dans de nombreux sc&eacute;narios courant
pour remplacer <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> pour effectuer des actions
en fonction d'en-t&ecirc;tes de requ&ecirc;tes ou de r&eacute;ponses, ou de variables
d'environnement.</p>

<p>Voir en particulier la <a href="../expr.html">documentation sur
l'&eacute;valuation des expressions</a> pour une vue d'ensemble des types
d'expressions que vous pouvez utiliser dans les sections <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code>,
ainsi que dans certaines directives.</p>

</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/rewrite/avoid.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/rewrite/avoid.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autoris&eacute; sous <a href="https://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="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
    langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
    document.body.appendChild(qv);
    var qvBtn = document.createElement('button');
    qvBtn.className = 'qv-toggle';
    qvBtn.setAttribute('aria-label', 'Toggle page navigation');
    qvBtn.innerHTML = '&#9776;';
    document.body.appendChild(qvBtn);
    qvBtn.addEventListener('click', function() {
        var isOpen = qv.classList.toggle('open');
        if (isOpen) {
            qv.style.top = window.scrollY + 10 + 'px';
        }
    });
    window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>