File: /opt/bitnami/apache/manual/rewrite/access.html.fr.utf8
<!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>Utiliser mod_rewrite pour le contrôle d'accès - 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> > <a href="https://httpd.apache.org/">Serveur HTTP</a> > <a href="https://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Utiliser mod_rewrite pour le contrôle d'accès</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/access.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/rewrite/access.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>
<p>Ce document est un complément à la <a href="../mod/mod_rewrite.html">documentation de référence</a> de
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Il explique comment utiliser
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> pour contrôler l'accès à diverses
ressources, ainsi que d'autres techniques en rapport. Il contient de
nombreux exemples d'utilisation courante de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> avec une
description détaillée de leur fonctionnement.</p>
<div class="warning">Vous devez vous attacher à comprendre le
fonctionnement des exemples, car la plupart d'entre eux ne
fonctionneront pas sur votre système si vous vous contentez de les
copier/coller dans vos fichiers de configuration.</div>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#blocked-inline-images">Blocage du référencement à chaud (Hotlinking) d'images</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#blocking-of-robots">Blocage des robots</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#host-deny">Rejet des clients contenus dans une liste de proscrits</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#referer-deflector">Aiguillage basé sur l'en-tête Referer</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 à mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en
correspondance</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ées</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</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="blocked-inline-images">Blocage du référencement à chaud (Hotlinking) d'images <a title="Lien permanent" href="#blocked-inline-images" class="permalink">¶</a></h2>
<dl>
<dt>Description :</dt>
<dd>
<p>Cette technique vous permet d'interdire à d'autres sites
d'inclure directement vos images dans leurs pages. On fait
souvent référence à cette pratique sous le nom de
référencement à chaud (Hotlinking) qui entraîne l'utilisation
de votre bande passante pour servir des contenus faisant
partie du site de quelqu'un d'autre.</p>
</dd>
<dt>Solution :</dt>
<dd>
<p>Cette technique repose sur la valeur de la variable
optionnelle <code>HTTP_REFERER</code>. Certaines personnes
pourront donc contourner cette limitation. Pour la plupart des
utilisateurs cependant, la requête échouera, en ce sens que
l'image ne sera pas affichée depuis le site tiers.</p>
<p>Il y a plusieurs manières de gérer cette situation.</p>
<p>Dans le premier exemple, nous rejetons tout simplement la
requête si elle ne provenait pas d'une page appartenant à notre
site. Pour les besoins de cet exemple, nous supposons que le nom
de votre site est <code>www.example.com</code>.</p>
<pre class="prettyprint lang-config">RewriteCond "%{HTTP_REFERER}" "!^$"
RewriteCond "%{HTTP_REFERER}" "!www.example.com" [NC]
RewriteRule "\.(gif|jpg|png)$" "-" [F,NC]</pre>
<p>Dans le second exemple, plutôt que de rejeter la requête,
nous affichons une autre image à la place.</p>
<pre class="prettyprint lang-config">RewriteCond "%{HTTP_REFERER}" "!^$"
RewriteCond "%{HTTP_REFERER}" "!www.example.com" [NC]
RewriteRule "\.(gif|jpg|png)$" "/images/go-away.png" [R,NC]</pre>
<p>Dans le troisième exemple, nous redirigeons la requête vers
une image appartenant à un autre site.</p>
<pre class="prettyprint lang-config">RewriteCond "%{HTTP_REFERER}" "!^$"
RewriteCond "%{HTTP_REFERER}" "!www.example.com" [NC]
RewriteRule "\.(gif|jpg|png)$" "http://other.example.com/image.gif" [R,NC]</pre>
<p>De tous ces exemples, les deux derniers semblent les plus
efficaces pour faire en sorte que les gens arrêtent de
référencer vos images à chaud, car il ne verront pas les images
qu'ils s'attendent à voir.</p>
</dd>
<dt>Discussion :</dt>
<dd>
<p>Si vous ne voulez pas rediriger la requête, mais
simplement interdire l'accès à la ressource, vous pouvez y
parvenir sans utiliser <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> :</p>
<pre class="prettyprint lang-config">SetEnvIf Referer "example\.com" localreferer
<FilesMatch "\.(jpg|png|gif)$">
Require env localreferer
</FilesMatch></pre>
</dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="blocking-of-robots">Blocage des robots <a title="Lien permanent" href="#blocking-of-robots" class="permalink">¶</a></h2>
<dl>
<dt>Description :</dt>
<dd>
<p>
Dans cet exemple, nous allons discuter d'une méthode permettant
de bloquer les requêtes persistentes en provenance d'un robot
particulier, ou d'un navigateur.</p>
<p>La méthode classique pour exclure un robot consiste à définir
un fichier, <code>/robots.txt</code> qui spécifie les parties de
votre site web pour lesquelles vous voulez exclure les robots.
Malheureusement, certains robots ne tiennent pas compte de ces
fichiers.
</p>
<p>Notez qu'il existe des méthodes d'exclusion qui n'utilisent
pas <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Notez aussi que toute technique qui repose sur
le contenu de la chaîne client <code>USER_AGENT</code> peut être
contournée très facilement car cette chaîne peut être modifiée.</p>
</dd>
<dt>Solution :</dt>
<dd>
<p>On utilise un jeu de règles qui spécifie le répertoire à
protéger, ainsi que la chaîne client <code>USER_AGENT</code> qui
identifie le robot malin ou envahissant.</p>
<p>Dans cet exemple, nous bloquons un robot nommé
<code>Vilain_Robot</code> pour le répertoire
<code>/secret/fichiers</code>. Si vous voulez bloquer ce client
seulement depuis une source particulière, vous pouvez aussi
spécifier un intervalle d'adresses IP.</p>
<pre class="prettyprint lang-config">RewriteCond "%{HTTP_USER_AGENT}" "^NameOfBadRobot"
RewriteCond "%{REMOTE_ADDR}" "=123\.45\.67\.[8-9]"
RewriteRule "^/secret/files/" "-" [F]</pre>
</dd>
<dt>Discussion :</dt>
<dd>
<p>
Vous pouvez cependant parvenir au même résultat sans utiliser
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> via la méthode alternative suivante :
</p>
<pre class="prettyprint lang-config">SetEnvIfNoCase User-Agent "^NameOfBadRobot" goaway
<Location "/secret/files">
<RequireAll>
Require all granted
Require not env goaway
</RequireAll>
</Location></pre>
<p>
Comme indiqué plus haut, il est aisé de contourner cette
technique, simplement en modifiant le contenu de l'en-tête
<code>USER_AGENT</code>. Si vous subissez une attaque en règle,
vous allez devoir réfléchir à un blocage à un niveau supérieur,
par exemple une règle de filtrage de votre pare-feu.
</p>
</dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="host-deny">Rejet des clients contenus dans une liste de proscrits <a title="Lien permanent" href="#host-deny" class="permalink">¶</a></h2>
<dl>
<dt>Description :</dt>
<dd>
<p>Nous voulons interdire l'accès à notre serveur aux clients
contenus dans une liste de proscrits similaire à
<code>hosts.deny</code>.</p>
</dd>
<dt>Solution :</dt>
<dd>
<pre class="prettyprint lang-config">RewriteEngine on
RewriteMap hosts-deny "txt:/path/to/hosts.deny"
RewriteCond "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND" [OR]
RewriteCond "${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}" "!=NOT-FOUND"
RewriteRule "^" "-" [F]</pre>
<div class="example"><p><code>
##<br>
## hosts.deny<br>
##<br>
## ATTENTION! Ceci est une table de correspondances, non une liste,<br>
## même si elle est traitée comme telle. mod_rewrite<br>
## l'interprète comme une liste de paires clé/valeur, et<br>
## chaque entrée doit au moins posséder une valeur par<br>
## défaut "-".<br>
<br>
193.102.180.41 -<br>
bsdti1.sdm.de -<br>
192.76.162.40 -<br>
</code></p></div>
</dd>
<dt>Discussion :</dt>
<dd>
<p>
La seconde condition RewriteCond présuppose que HostNameLookups est
défini à On, de façon à ce que les adresses IP des clients puissent
être résolues. Dans le cas contraire, vous devez supprimer la
seconde condition, ainsi que le drapeau <code>[OR]</code> de la
première.
</p>
</dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="referer-deflector">Aiguillage basé sur l'en-tête Referer <a title="Lien permanent" href="#referer-deflector" class="permalink">¶</a></h2>
<dl>
<dt>Description :</dt>
<dd>
<p>Redirige les requêtes en fonction du Referer de provenance de
la requête, avec des cibles différentes pour chaque Referer.</p>
</dd>
<dt>Solution :</dt>
<dd>
<p>Le jeu de règles suivant utilise un fichier de correspondances pour
associer chaque Referer à une cible de redirection.</p>
<pre class="prettyprint lang-config">RewriteMap deflector "txt:/path/to/deflector.map"
RewriteCond "%{HTTP_REFERER}" !=""
RewriteCond "${deflector:%{HTTP_REFERER}}" "=-"
RewriteRule "^" "%{HTTP_REFERER}" [R,L]
RewriteCond "%{HTTP_REFERER}" !=""
RewriteCond "${deflector:%{HTTP_REFERER}|NOT-FOUND}" "!=NOT-FOUND"
RewriteRule "^" "${deflector:%{HTTP_REFERER}}" [R,L]</pre>
<p>Le fichier de correspondances contient les cibles de
redirection associées à chaque Referer, ou, si nous voulons
simplement rediriger les requêtes vers leur Referer, un "-" est
inscrit dans le fichier de correspondances :</p>
<pre class="prettyprint lang-config">##
## deflector.map
##
http://badguys.example.com/bad/index.html -
http://badguys.example.com/bad/index2.html -
http://badguys.example.com/bad/index3.html http://somewhere.example.com/</pre>
</dd>
</dl>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/rewrite/access.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/rewrite/access.html" title="Français"> fr </a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autorisé 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 = '☰';
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>