]> granicus.if.org Git - apache/blob - docs/manual/howto/htaccess.html.fr
Rebuild.
[apache] / docs / manual / howto / htaccess.html.fr
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
4 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
10 <title>Tutoriel du serveur HTTP Apache : fichiers .htaccess - Serveur Apache HTTP Version 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <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" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
15 </script>
16
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
18 <body id="manual-page"><div id="page-header">
19 <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>
20 <p class="apache">Serveur Apache HTTP Version 2.5</p>
21 <img alt="" src="../images/feather.png" /></div>
22 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
23 <div id="path">
24 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Recettes / Tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel du serveur HTTP Apache : fichiers .htaccess</h1>
25 <div class="toplang">
26 <p><span>Langues Disponibles: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
27 <a href="../fr/howto/htaccess.html" title="Français">&nbsp;fr&nbsp;</a> |
28 <a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
29 <a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
30 <a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a></p>
31 </div>
32
33 <p>Les fichiers <code>.htaccess</code> fournissent une méthode pour
34 modifier la configuration du serveur au niveau de chaque répertoire.</p>
35 </div>
36 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Fichiers .htaccess</a></li>
37 <li><img alt="" src="../images/down.gif" /> <a href="#what">Que sont ce fichiers, comment les utiliser ?</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#when">Quand doit-on (ne doit-on pas) utiliser
39     les fichiers .htaccess ?</a></li>
40 <li><img alt="" src="../images/down.gif" /> <a href="#how">Comment sont appliquées les directives ?</a></li>
41 <li><img alt="" src="../images/down.gif" /> <a href="#auth">Exemple d'authentification</a></li>
42 <li><img alt="" src="../images/down.gif" /> <a href="#ssi">Exemple d'Inclusion Côté Serveur (Server Side
43 Includes - SSI)</a></li>
44 <li><img alt="" src="../images/down.gif" /> <a href="#rewrite">Les règles de réécriture dans les fichiers .htaccess</a></li>
45 <li><img alt="" src="../images/down.gif" /> <a href="#cgi">Exemple de CGI</a></li>
46 <li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Résolution des problèmes</a></li>
47 </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
48 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
49 <div class="section">
50 <h2><a name="related" id="related">Fichiers .htaccess</a></h2>
51     
52     <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li><li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li><li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code></li><li><code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code></li></ul></td></tr></table>
53     <div class="note">Les fichiers <code>.htaccess</code> ne doivent être utilisés
54     que si vous n'avez pas accès au fichier de configuration du serveur
55     principal. L'utilisation des fichiers <code>.htaccess</code>
56     ralentit le fonctionnement de votre serveur HTTP Apache. Il est toujours
57     préférable de définir les directives que vous pouvez inclure dans un
58     fichier <code>.htaccess</code> dans une section <code class="directive"><a href="../mod/core.html#directory">Directory</a></code>, car elles produiront le
59     même effet avec de meilleures performances.</div>
60 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
61 <div class="section">
62 <h2><a name="what" id="what">Que sont ce fichiers, comment les utiliser ?</a></h2>
63
64
65     <p>Les fichiers <code>.htaccess</code> (ou "fichiers de
66     configuration distribués") fournissent une méthode pour modifier la
67     configuration du serveur au niveau d'un répertoire. Un fichier,
68     contenant une ou plusieurs directives de configuration, est placé
69     dans un répertoire de documents particulier, et ses directives
70     s'appliquent à ce répertoire et à tous ses sous-répertoires.</p>
71
72     <div class="note"><h3>Note :</h3>
73       <p>Si vous voulez donner un autre nom à votre fichier
74       <code>.htaccess</code>, vous pouvez le faire en utilisant la
75       directive <code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code>. Par
76       exemple, si vous préférez nommer votre fichier
77       <code>.config</code>, vous pouvez mettre ceci dans le fichier de
78       configuration de votre serveur :</p>
79
80       <pre class="prettyprint lang-config">AccessFileName ".config"</pre>
81
82     </div>
83
84     <p>En général, les fichiers <code>.htaccess</code> utilisent la même
85     syntaxe que les <a href="../configuring.html#syntax">fichiers de
86     configuration principaux</a>. Ce que vous pouvez mettre dans ces
87     fichier est déterminé par la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Cette directive spécifie,
88     sous forme de catégories, quelles directives seront traitées si
89     elles se trouvent dans un fichier <code>.htaccess</code>. Si une
90     directive est permise dans un fichier <code>.htaccess</code> file,
91     la documentation de cette directive contiendra une section Override,
92     spécifiant quelle valeur doit prendre <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> pour que cette directive
93     soit traitée.</p>
94
95     <p>Par exemple, si vous regardez la documentation de la directive
96     <code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code>, vous verrez
97     que cette dernière est permise dans les fichiers
98     <code>.htaccess</code> (Voir la ligne de contexte dans le résumé de
99     la directive). La ligne <a href="../mod/directive-dict.html#Context">Override</a> indique
100     <code>FileInfo</code>. Vous devez donc avoir au moins
101     <code>AllowOverride FileInfo</code> pour que cette directive soit
102     traitée dans les fichiers <code>.htaccess</code>.</p>
103
104     <div class="example"><h3>Exemple :</h3><table>
105         <tr>
106           <td><a href="../mod/directive-dict.html#Context">Contexte :</a></td>
107           <td>configuration du serveur, serveur virtuel, directory, .htaccess</td>
108         </tr>
109
110         <tr>
111           <td><a href="../mod/directive-dict.html#Override">Override:</a></td>
112           <td>FileInfo</td>
113         </tr>
114       </table></div>
115
116     <p>Si vous n'êtes pas sûr qu'une directive particulière soit permise
117     dans un fichier <code>.htaccess</code>, lisez la documentation de
118     cette directive, et consultez la ligne de contexte pour
119     ".htaccess".</p>
120     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
121 <div class="section">
122 <h2><a name="when" id="when">Quand doit-on (ne doit-on pas) utiliser
123     les fichiers .htaccess ?</a></h2>
124
125     <p>En principe, vous ne devriez utiliser les fichiers
126     <code>.htaccess</code> que lorsque vous n'avez pas accès au fichier de
127     configuration du serveur principal. Par exemple, la fausse
128     idée
129     selon laquelle l'authentification de l'utilisateur devrait toujours
130     être faite dans les fichiers <code>.htaccess</code> est très
131     répandue. Il est aussi souvent avancé, ces dernières
132     années, que les directives de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> doivent
133     être définies dans les fichiers <code>.htaccess</code>. Ceci est
134     tout simplement faux. Vous pouvez configurer
135     l'authentification des utilisateurs au niveau de la configuration du
136     serveur principal, et c'est en fait cette méthode qui doit être
137     privilégiée. De même, les directives de
138     <code>mod_rewrite</code> fonctionneront mieux, à de nombreux égards,
139     dans le contexte du serveur principal.</p>
140
141     <p>Les fichiers <code>.htaccess</code> ne devraient être utilisés
142     que dans le cas où les fournisseurs de contenu ont besoin de
143     modifier la configuration du serveur au niveau d'un répertoire, mais
144     ne possèdent pas l'accès root sur le système du serveur. Si
145     l'administrateur du serveur ne souhaite pas effectuer des
146     modifications de configuration incessantes, il peut être intéressant
147     de permettre aux utilisateurs isolés d'effectuer eux-mêmes ces
148     modifications par le biais de fichiers <code>.htaccess</code>. Ceci
149     est particulièrement vrai dans le cas où le fournisseur d'accès à
150     Internet héberge de nombreux sites d'utilisateurs sur un seul
151     serveur, et souhaite que ces utilisateurs puissent modifier
152     eux-mêmes leurs configurations.</p>
153
154     <p>Cependant et d'une manière générale, il vaut mieux éviter
155     d'utiliser les fichiers <code>.htaccess</code>. Tout élément de
156     configuration que vous pourriez vouloir mettre dans un fichier
157     <code>.htaccess</code>, peut aussi être mis, et avec la même
158     efficacité, dans une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> du fichier de configuration de
159     votre serveur principal.</p>
160
161     <p>Il y a deux raisons principales d'éviter l'utilisation des
162     fichiers <code>.htaccess</code>.</p>
163
164     <p>La première est liée aux performances. Lorsque la directive
165     <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> est définie de
166     façon à autoriser l'utilisation des fichiers <code>.htaccess</code>,
167     httpd va rechercher leur présence dans chaque répertoire. Ainsi,
168     permettre l'utilisation des fichiers <code>.htaccess</code> est déjà
169     en soi une cause de dégradation des performances, que vous utilisiez
170     effectivement ces fichiers ou non ! De plus, le fichier
171     <code>.htaccess</code> est chargé en mémoire chaque fois qu'un
172     document fait l'objet d'une requête.</p>
173
174     <p>Notez aussi que httpd doit rechercher les fichiers
175     <code>.htaccess</code> dans tous les répertoires de niveau
176     supérieur, afin de rassembler toutes les directives qui s'appliquent
177     au répertoire courant (Voir la section <a href="#how">comment sont
178     appliquées les directives</a>). Ainsi, si un fichier fait l'objet
179     d'une requête à partir d'un répertoire
180     <code>/www/htdocs/exemple</code>, httpd doit rechercher les
181     fichiers suivants :</p>
182
183     <div class="example"><p><code>
184       /.htaccess<br />
185       /www/.htaccess<br />
186       /www/htdocs/.htaccess<br />
187       /www/htdocs/exemple/.htaccess
188     </code></p></div>
189
190     <p>En conséquence, chaque accès à un fichier de ce répertoire
191     nécessite 4 accès au système de fichiers supplémentaires pour
192     rechercher des fichiers <code>.htaccess</code>, même si
193     aucun de ces fichiers n'est présent. Notez que cet exemple ne peut
194     se produire que si les fichiers <code>.htaccess</code> ont été
195     autorisés pour le répertoire <code>/</code>, ce qui est rarement le
196     cas.</p>
197
198     <p>La seconde raison d'éviter l'utilisation des fichiers
199     <code>.htaccess</code> est liée à la sécurité. Si vous permettez aux
200     utilisateurs de modifier la configuration du serveur, il peut en
201     résulter des conséquences sur lesquelles vous n'aurez aucun
202     contrôle. Réfléchissez bien avant de donner ce privilège à vos
203     utilisateurs. Notez aussi que ne pas donner aux utilisateurs les
204     privilèges dont ils ont besoin va entraîner une augmentation des
205     demandes de support technique. Assurez-vous d'avoir informé
206     clairement vos utilisateurs du niveau de privilèges que vous leur
207     avez attribué. Indiquer exactement comment vous avez défini la
208     directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> et
209     diriger les utilisateurs vers la documentation correspondante vous
210     évitera bien des confusions ultérieures.</p>
211
212     <p>Notez que mettre un fichier <code>.htaccess</code> contenant une
213     directive dans un répertoire <code>/www/htdocs/exemple</code>
214     revient exactement au même que mettre la même directive dans une
215     section Directory <code>&lt;Directory "/www/htdocs/exemple"&gt;</code>
216     du fichier de configuration de votre serveur principal :</p>
217
218     <p>Fichier <code>.htaccess</code> dans
219     <code>/www/htdocs/exemple</code> :</p>
220
221     <div class="example"><h3>Contenu du fichier .htaccess dans
222     <code>/www/htdocs/exemple</code></h3><pre class="prettyprint lang-config">AddType text/example ".exm"</pre>
223 </div>
224
225     <div class="example"><h3>Section de votre fichier
226     <code>httpd.conf</code></h3><pre class="prettyprint lang-config">&lt;Directory "/www/htdocs/example"&gt;
227     AddType text/example ".exm"
228 &lt;/Directory&gt;</pre>
229 </div>
230
231     <p>Cependant, la perte de performances sera moindre si vous
232     définissez cette directive dans la configuration de
233     votre serveur principal, car cette dernière ne sera chargée qu'une
234     seule fois au moment du démarrage du serveur, alors qu'elle le sera
235     à chaque accès dans le cas d'un fichier <code>.htaccess</code>.</p>
236
237     <p>L'utilisation des fichiers <code>.htaccess</code> peut être
238     entièrement désactivée en définissant la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> à <code>none</code> :</p>
239
240     <pre class="prettyprint lang-config">AllowOverride None</pre>
241
242 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
243 <div class="section">
244 <h2><a name="how" id="how">Comment sont appliquées les directives ?</a></h2>
245
246     <p>Les directives de configuration situées dans un fichier
247     <code>.htaccess</code> s'appliquent au répertoire dans lequel ce
248     fichier <code>.htaccess</code> se trouve, ainsi qu'à tous ses
249     sous-répertoires. Cependant, il est important de garder à l'esprit
250     qu'il peut y avoir des fichiers <code>.htaccess</code> dans les
251     répertoires de niveau supérieur. Les directives sont appliquées
252     selon l'ordre dans lequel elles sont rencontrées. Ainsi, les
253     directives d'un fichier <code>.htaccess</code> situé dans un
254     répertoire particulier peuvent écraser les directives se trouvant
255     dans des fichiers <code>.htaccess</code> situés à un niveau
256     supérieur dans l'arborescence des répertoires. Et ces dernières
257     peuvent elles-mêmes avoir écrasé des directives d'un fichier
258     <code>.htaccess</code> situé à un niveau encore plus haut, ou dans
259     le fichier de configuration du serveur principal.</p>
260
261     <p>Exemple :</p>
262
263     <p>Dans le répertoire <code>/www/htdocs/exemple1</code> se trouve un
264     fichier <code>.htaccess</code> contenant ce qui suit :</p>
265
266     <pre class="prettyprint lang-config">Options +ExecCGI</pre>
267
268
269     <p>Note : "<code>AllowOverride Options</code>" doit être présent
270     pour permettre l'utilisation de la directive "<code class="directive"><a href="../mod/core.html#options">Options</a></code>"  dans les fichiers
271     <code>.htaccess</code>.</p>
272
273     <p>Dans le répertoire <code>/www/htdocs/exemple1/exemple2</code> se
274     trouve un fichier <code>.htaccess</code> contenant ce qui suit
275     :</p>
276
277     <pre class="prettyprint lang-config">Options Includes</pre>
278
279
280     <p>Ainsi, à cause de ce second fichier <code>.htaccess</code> du
281     répertoire <code>/www/htdocs/exemple1/exemple2</code>, l'exécution
282     des CGI est interdite, car la dernière définition d'options
283     <code>Options Includes</code> écrase toute autre définition
284     d'options d'un fichier <code>.htaccess</code> situé dans un
285     répertoire de niveau supérieur.</p>
286
287     <h3><a name="merge" id="merge">Interactions entre les fichiers .htaccess
288     et les fichiers de configuration du serveur principal</a></h3>
289
290     <p>Comme indiqué dans la documentation sur les <a href="../sections.html">Sections de configuration</a>, les fichiers
291     <code>.htaccess</code> peuvent écraser les directives des sections
292     <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> pour
293     le répertoire correspondant, mais peuvent eux-mêmes être écrasés
294     par d'autres types de sections des fichiers de la
295     configuration principale. Cette possibilité peut s'avérer utile pour
296     forcer certaines configurations, même en cas de présence de l'option
297     libérale <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Par
298     exemple, pour interdire l'exécution de scripts en autorisant la
299     définition de toute autre option dans les fichiers
300     <code>.htaccess</code>, vous pouvez utiliser :</p>
301
302     <pre class="prettyprint lang-config">&lt;Directory "/www/htdocs"&gt;
303     AllowOverride All
304 &lt;/Directory&gt;
305
306 &lt;Location "/"&gt;
307     Options +IncludesNoExec -ExecCGI<br />
308 &lt;/Location&gt;</pre>
309
310
311     <div class="note">Dans cet exemple, on considère que le chemin défini par la
312     directive <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> est
313     <code>/www/htdocs</code>.</div>
314
315
316 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
317 <div class="section">
318 <h2><a name="auth" id="auth">Exemple d'authentification</a></h2>
319
320     <p>Si vous accédez directement à ce point du document pour apprendre
321     à effectuer une authentification, il est important de noter ceci. Il
322     existe une fausse idée selon laquelle il serait nécessaire
323     d'utiliser les fichiers <code>.htaccess</code> pour implémenter
324     l'authentification par mot de passe. Ceci est tout simplement faux.
325     Pour y parvenir, il est préférable de mettre les directives
326     d'authentification dans une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> du fichier de configuration de
327     votre serveur principal, et les fichiers <code>.htaccess</code> ne
328     devraient être utilisés que dans le cas où vous n'avez pas accès au
329     fichier de configuration du serveur principal. Voir <a href="#when">ci-dessus</a> pour savoir dans quels cas vous devez ou
330     ne devez pas utiliser les fichiers <code>.htaccess</code>.</p>
331
332     <p>Ceci étant dit, si vous pensez que vous devez quand-même utiliser
333     un fichier <code>.htaccess</code>, vous pouvez utiliser la
334     configuration suivante :</p>
335
336     <p>Contenu du fichier <code>.htaccess</code> :</p>
337
338     <pre class="prettyprint lang-config">AuthType Basic
339 AuthName "Password Required"
340 AuthUserFile "/www/passwords/password.file"
341 AuthGroupFile "/www/passwords/group.file"
342 Require group admins</pre>
343
344
345     <p>Notez que <code>AllowOverride AuthConfig</code> doit être présent
346     pour que ces directives produisent leur effet.</p>
347
348     <p>Vous pouvez vous référer au <a href="auth.html">tutoriel sur
349     l'authentification</a> pour une description plus détaillée de
350     l'authentification et de l'autorisation.</p>
351 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
352 <div class="section">
353 <h2><a name="ssi" id="ssi">Exemple d'Inclusion Côté Serveur (Server Side
354 Includes - SSI)</a></h2>
355
356     <p>Les fichiers <code>.htaccess</code> sont aussi couramment
357     utilisés pour activer les SSI pour un répertoire particulier. Pour y
358     parvenir, on utilise les directives de configuration suivantes,
359     placées dans un fichier <code>.htaccess</code> enregistré dans le
360     répertoire considéré :</p>
361
362     <pre class="prettyprint lang-config">Options +Includes
363 AddType text/html "shtml"
364 AddHandler server-parsed shtml</pre>
365
366
367     <p>Notez que <code>AllowOverride Options</code> et <code>AllowOverride
368     FileInfo</code> doivent être tous les deux présents pour que ces
369     directives puissent produire leur effet.</p>
370
371     <p>Vous pouvez vous référer au <a href="ssi.html">tutoriel SSI</a>
372     pour une description plus détaillée des SSI.</p>
373 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
374 <div class="section">
375 <h2><a name="rewrite" id="rewrite">Les règles de réécriture dans les fichiers .htaccess</a></h2>
376 <p>Sivous utilisez des directives <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> dans un fichier
377 <code>.htaccess</code>, gardez à l'esprit que les choses sont légèrement
378 différentes dans un contexte de répertoire. En particulier, les règles
379 sont relatives au répertoire courant, et non à l'URI original. Considérez
380 les exemples suivants :</p>
381
382 <pre class="prettyprint lang-config"># Dans httpd.conf
383 RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"
384
385 # Dans un fichier .htaccess situé dans le répertoire racine de vos
386 # documents
387 RewriteRule "^images/(.+)\.jpg" "images/$1.png"
388
389 # Dans un fichier .htaccess situé dans le répertoire images/
390 RewriteRule "^(.+)\.jpg" "$1.png"</pre>
391
392
393 <p>On voit que si le fichier <code>.htaccess</code> se situe à la racine
394 de vos documents, le slash de tête est supprimé de la valeur de
395 remplacement spécifiée pour la règle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>, et que si le fichier
396 <code>.htaccess</code> se situe dans le répertoire <code>images</code>,
397 la chaîne <code>/images/</code> disparaît de cette même valeur de
398 remplacement. Il doit donc en être de même dans votre expression
399 rationnelle.</p>
400
401 <p>Veuillez vous référer à cette <a href="../rewrite/">documentation</a>
402 pour une étude détaillée de l'utilisation du module
403 <code>mod_rewrite</code>.</p>
404
405 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
406 <div class="section">
407 <h2><a name="cgi" id="cgi">Exemple de CGI</a></h2>
408
409     <p>En fin de compte, vous avez décidé d'utiliser un fichier
410     <code>.htaccess</code> pour permettre l'exécution des programmes CGI
411     dans un répertoire particulier. Pour y parvenir, vous pouvez
412     utiliser la configuration suivante :</p>
413
414     <pre class="prettyprint lang-config">Options +ExecCGI
415 AddHandler cgi-script "cgi" "pl"</pre>
416
417
418     <p>Alternativement, si vous souhaitez que tous les fichiers d'un
419     répertoire donné soient considérés comme des programmes CGI, vous
420     pouvez utiliser la configuration suivante :</p>
421
422     <pre class="prettyprint lang-config">Options +ExecCGI
423 SetHandler cgi-script</pre>
424
425
426     <p>Notez que <code>AllowOverride Options</code> et <code>AllowOverride
427     FileInfo</code> doivent être tous les deux présents pour que ces
428     directives puissent produire leur effet.</p>
429
430     <p>Vous pouvez vous référer au <a href="cgi.html">tutoriel CGI</a>
431     pour une description plus détaillée de la configuration et de la
432     proprammation CGI.</p>
433
434 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
435 <div class="section">
436 <h2><a name="troubleshoot" id="troubleshoot">Résolution des problèmes</a></h2>
437
438     <p>De nombreuses raisons peuvent être à l'origine du fait que
439     les directives que vous avez mises dans un fichier
440     <code>.htaccess</code> ne produisent pas l'effet désiré.</p>
441
442     <p>Le plus souvent, le problème vient du fait que la définition de
443     la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
444     ne permet pas l'activation des directives de votre fichier
445     <code>.htaccess</code>. Vérifiez si une directive
446     <code>AllowOverride None</code> n'affecte pas le répertoire où se
447     trouve votre fichier. Un bon test consiste à mettre des directives
448     dont la syntaxe est erronée dans votre ficher <code>.htaccess</code>
449     et de recharger la page. Si aucune erreur n'est générée par le
450     serveur, il est pratiquement certain qu'une directive
451     <code>AllowOverride None</code> affecte votre répertoire.</p>
452
453     <p>Par contre, si vous obtenez des erreurs de serveur lorsque vous
454     tentez d'accéder à des documents, consultez votre journal des
455     erreurs de httpd. Il vous indiquera probablement que la directive
456     utilisée dans votre fichier <code>.htaccess</code> n'est pas
457     permise.</p>
458
459 <div class="example"><p><code>
460         [Fri Sep 17 18:43:16 2010] [alert] [client 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex not allowed here
461 </code></p></div>
462         <p>Cela signifie soit que vous utilisez une directive qui n'est
463         jamais permise dans les fichiers <code>.htaccess</code>, soit
464         que vous n'avez tout simplement pas défini la directive
465         <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> à un niveau
466         suffisant pour la directive que vous utilisez. Consultez la
467         documentation de cette directive pour déterminer quel cas
468         s'applique.</p>
469
470         <p>Le journal des erreurs peut aussi vous signaler une erreur de
471         syntaxe dans l'usage de la directive elle-même.</p>
472
473     <div class="example"><p><code>
474     [Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
475     </code></p></div>
476
477         <p>Dans ce cas, le message d'erreur sera spécifique à l'erreur
478         de syntaxe que vous avez commise.</p>
479 </div></div>
480 <div class="bottomlang">
481 <p><span>Langues Disponibles: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
482 <a href="../fr/howto/htaccess.html" title="Français">&nbsp;fr&nbsp;</a> |
483 <a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
484 <a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
485 <a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a></p>
486 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
487 <script type="text/javascript"><!--//--><![CDATA[//><!--
488 var comments_shortname = 'httpd';
489 var comments_identifier = 'http://httpd.apache.org/docs/trunk/howto/htaccess.html';
490 (function(w, d) {
491     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
492         d.write('<div id="comments_thread"><\/div>');
493         var s = d.createElement('script');
494         s.type = 'text/javascript';
495         s.async = true;
496         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
497         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
498     }
499     else {
500         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
501     }
502 })(window, document);
503 //--><!]]></script></div><div id="footer">
504 <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>
505 <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[//><!--
506 if (typeof(prettyPrint) !== 'undefined') {
507     prettyPrint();
508 }
509 //--><!]]></script>
510 </body></html>