summaryrefslogtreecommitdiffstats
path: root/docs/manual/rewrite/flags.html.fr
blob: 904f4bfa5429e0baa82417ed4a200052bd67a15c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Les drapeaux de r��criture - Serveur Apache HTTP</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 href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../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>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<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="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Les drapeaux de r��criture</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/rewrite/flags.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/rewrite/flags.html" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
</div>

<p>Ce document d�crit les drapeaux disponibles dans la directive
<code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>, en fournissant
des explications d�taill�es et des exemples.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introduction</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_b">B (�chappement dans les r�f�rences arri�res)</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_c">C|chain</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_co">CO|cookie</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_dpi">DPI|discardpath</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_e">E|env</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_end">END</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_f">F|forbidden</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_g">G|gone</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_h">H|handler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_l">L|last</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_n">N|next</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_nc">NC|nocase</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_ne">NE|noescape</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_ns">NS|nosubreq</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_p">P|proxy</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_pt">PT|passthrough</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_qsa">QSA|qsappend</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_qsd">QSD|qsdiscard</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_r">R|redirect</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_s">S|skip</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flag_t">T|type</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module</a></li><li><a href="intro.html">Introduction � mod_rewrite</a></li><li><a href="remapping.html">Redirection and remise en
correspondance</a></li><li><a href="access.html">Contr�le d'acc�s</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="proxy.html">Mise en cache</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><a name="introduction" id="introduction">Introduction</a></h2>
<p>Le comportement d'une directive <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> peut �tre modifi� par un ou
plusieurs drapeaux. Les drapeaux sont situ�s en fin de r�gle, entour�s
de crochets, et s�par�s le cas �ch�ant par des virgules.</p>
<div class="example"><p><code>
RewriteRule mod�le cible [drapeau1,drapeau2,drapeau3]
</code></p></div>

<p>Les drapeaux ont tous une forme courte, comme <code>CO</code>, ainsi
qu'une forme longue, comme <code>cookie</code>. Certains drapeaux
peuvent avoir un ou plusieurs arguments. Les drapeaux sont insensibles �
la casse.</p>

<p>Chaque drapeau (� quelques exceptions pr�s) poss�de une forme longue et une forme courte. Bien que
la forme courte soit la plus couramment utilis�e, nous vous recommandons
de vous familiariser avec les drapeaux sous leur forme longue, afin de
bien m�moriser ce que chaque drapeau est suppos� faire.</p>

<p>Les drapeaux qui modifient les m�tadonn�es associ�es � la requ�te
(T=, H=, E=) n'ont aucun effet dans un contexte de r�pertoire ou de
fichier htaccess, lorsqu'une substitution (autre que '-') est effectu�e
au cours de la m�me passe du processus de r��criture.
</p>

<p>Chaque drapeau disponible est pr�sent� ici, avec un exemple
d'utilisation.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_b" id="flag_b">B (�chappement dans les r�f�rences arri�res)</a></h2>
<p>Avec le drapeau [B], la directive <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> �chappe les caract�res
non-alphanum�riques avant d'appliquer la transformation.</p>

<p><code>mod_rewrite</code> doit supprimer les s�quences d'�chappement
des URLs avant leur
mise en correspondance avec le syst�me de fichiers ; les s�quences
d'�chappement sont donc supprim�es des r�f�rences arri�res au moment o�
ces derni�res sont appliqu�es. Avec le drapeau B, les caract�res
non-alphanum�riques des r�f�rences arri�res seront �chapp�s. Consid�rons
par exemple cette r�gle :</p>

<div class="example"><p><code>
RewriteRule ^search/(.*)$ /search.php?term=$1
</code></p></div>

<p>Soit le terme de recherche 'x &amp; y/z' ; un navigateur va le coder
en 'x%20%26%20y%2Fz', transformant la requ�te en
'search/x%20%26%20y%2Fz'. Sans le drapeau B, cette r�gle de r��criture
va r��crire la requ�te en 'search.php?term=x &amp; y/z', ce qui ne
correspond pas � une URL valide et cette derni�re sera encod�e en
<code>search.php?term=x%20&amp;y%2Fz=</code>, ce qui ne correspond pas �
ce que l'on souhaitait.</p>

<p>Avec le drapeau B, les param�tres sont r�encod�s avant d'�tre pass�s
� l'URL r�sultante, ce qui fournit une r��criture correcte en
<code>/search.php?term=x%20%26%20y%2Fz</code>.</p>

<p>Notez que vous devrez peut-�tre aussi d�finir la
directive <code class="directive"><a href="../mod/core.html#allowencodedslashes">AllowEncodedSlashes</a></code>
� <code>On</code> pour
que cet exemple particulier fonctionne, car httpd ne permet pas les
slashes encod�s dans les URLs, et renvoie une erreur 404 s'il en
rencontre un.</p>

<p>Ce processus d'�chappement est en particulier n�cessaire dans le
contexte d'un mandataire, o� l'acc�s au serveur d'arri�re-plan �chouera
si on pr�sente � ce dernier une URL non �chapp�e.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_c" id="flag_c">C|chain</a></h2>
<p>Le drapeau [C] ou [chain] indique que la r�gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est cha�n�e avec la
suivante. Autrement dit, si la r�gle s'applique, elle est trait�e
normalement et passe le contr�le � la r�gle suivante. Par contre, si
elle ne s'applique pas, la r�gle suivante, ainsi que toutes les r�gles
cha�n�es qui suivent, seront saut�es.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_co" id="flag_co">CO|cookie</a></h2>
<p>Le drapeau [CO], ou [cookie], vous permet de d�finir un cookie
lorsqu'une r�gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>
s'applique. Il poss�de trois arguments obligatoires et
quatre arguments optionnels.</p>

<p>La syntaxe compl�te de ce drapeau, avec tous ses attributs, est la
suivante :</p>

<div class="example"><p><code>
[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly]
</code></p></div>

<p>Vous devez d�clarer un nom, une valeur et un domaine pour que
le cookie puisse �tre d�fini.</p>


<dl>
<dt>Domain</dt>
<dd>Le domaine pour lequel vous souhaitez que le cookie soit valide. Ce
peut �tre un nom de serveur, comme <code>www.example.com</code>, ou un
domaine, comme <code>.example.com</code>. Il doit comporter au moins
deux parties s�par�es par un point. C'est � dire que vous ne pouvez pas
utiliser les valeurs <code>.com</code> ou <code>.net</code>. En effet,
ce style de cookie est interdit par le mod�le de s�curit� des cookies.</dd>
</dl>

<p>Vous pouvez aussi d�finir les valeurs suivantes :</p>

<dl>
<dt>Lifetime</dt>
<dd>La dur�e de vie du cookie, en minutes.</dd>
<dd>Une valeur de 0 indique une dur�e de vie correspondant � la session
courante du navigateur. Il s'agit de la valeur par d�faut.</dd>

<dt>Path</dt>
<dd>Le chemin, sur le site web concern�, pour lequel le cookie est
valide, du style <code>/clients/</code> or
<code>/fichiers/telechargement/</code>.</dd>
<dd>La valeur par d�faut est <code>/</code> - c'est � dire l'ensemble du
site web.</dd>

<dt>Secure</dt>
<dd>Si cet argument a pour valeur <code>secure</code>,
<code>true</code>, ou <code>1</code>, le cookie ne pourra �tre transmis
que dans le cadre d'une connexion s�curis�e (https).</dd>

<dt>httponly</dt>
<dd>Si cet argument a pour valeur <code>HttpOnly</code>,
<code>true</code>, ou <code>1</code>, le cookie aura son drapeau
<code>HttpOnly</code> activ�, ce qui signifie qu'il sera inaccessible au
code JavaScript pour les navigateurs qui supportent cette
fonctionnalit�.</dd>
</dl>

<p>Voici un exemple :</p>

<div class="example"><p><code>
RewriteEngine On<br />
RewriteRule ^/index\.html - [CO=frontdoor:yes:.example.org:1440:/]
</code></p></div>

<p>Dans l'exemple ci-dessus, la r�gle ne r��crit
pas la requ�te. La cible de r��criture "-"
indique � mod_rewrite de transmettre la requ�te sans
modification. Par contre, il
d�finit un cookie nomm� 'frontdoor' avec une valeur 'yes'. Le cookie est
valide pour tout h�te situ� dans le domaine <code>.example.org</code>. Sa
dur�e de vie est limit�e � 1440 minutes (24 heures), et il sera renvoy�
pour tous les URIs.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_dpi" id="flag_dpi">DPI|discardpath</a></h2>
<p>Avec le drapeau DPI, la partie PATH_INFO de l'URI
r��crit est supprim�e.</p>
<p>Ce drapeau est disponible dans les versions 2.2.12 et sup�rieures.</p>
<p>Dans un contexte de r�pertoire, l'URI mis en comparaison par chaque
r�gle <code class="directive">RewriteRule</code> est la concat�nation des
valeurs courantes de l'URI et de PATH_INFO.</p>

<p>L'URI courant peut �tre l'URI initial tel qu'il a �t� fourni par le
client, le r�sultat d'une passe pr�c�dente du processus de r��criture,
ou le r�sultat de la r�gle pr�c�dente dans le processus courant de
r��criture.</p>

<p>Par contre, la partie PATH_INFO ajout�e � l'URI avant chaque r�gle ne
refl�te que la valeur de PATH_INFO avant la passe courante du processus
de r��criture. En cons�quence, si de larges portions de l'URI
correspondent et sont traduites via plusieurs directives
<code class="directive">RewriteRule</code>, sans prendre en compte
quelles parties de l'URI provenaient du PATH_INFO courant, l'URI final
pourra se voir ajouter plusieurs copies de PATH_INFO.</p>

<p>Utilisez ce drapeau pour toute substitution o� la pr�sence du PATH_INFO qui
r�sultait de la mise en correspondance pr�c�dente de cette requ�te avec
le syst�me de fichier n'est pas n�cessaire. Avec ce drapeau, le
PATH_INFO �tabli avant que cette passe du processus de r��criture ne
d�bute est oubli�. PATH_INFO ne sera pas recalcul� tant que la passe
courante du processus de r��criture ne sera pas achev�e. Les r�gles
suivantes de cette passe ne verront que le r�sultat direct des
substitutions, sans aucun PATH_INFO ajout�.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_e" id="flag_e">E|env</a></h2>
<p>Avec le drapeau [E], ou [env], vous pouvez d�finir la valeur d'une
variable d'environnement. Notez que certaines variables d'environnement
peuvent �tre d�finies apr�s le traitement de la r�gle, annulant par
la-m�me ce que vous avez d�fini. Voir le <a href="../env.html">document
sur les variables d'environnement</a> pour plus de d�tails sur le
fonctionnement des variables d'environnement.</p>

<p>La syntaxe compl�te pour ce drapeau est :</p>

<div class="example"><p><code>
[E=!VAR]
</code></p></div>

<p><code>VAL</code> peut comporter des r�f�rences arri�res
(<code>$N</code> ou <code>%N</code>) qui seront d�velopp�es.</p>

<p>En utilisant la version courte</p>

<div class="example"><p><code>
[E=VAR]
</code></p></div>

<p>vous pouvez d�finir la variable d'environnement nomm�e
<code>VAR</code> avec une valeur vide.</p>

<p>La forme</p>

<div class="example"><p><code>
[E=!VAR]
</code></p></div>

<p>permet d'annuler la d�finition de la variable <code>VAR</code>.</p>

<p>Les variables d'environnement s'emploient dans diff�rents contextes,
comme les programmes CGI, d'autres directives RewriteRule, ou des
directives CustomLog.</p>

<p>L'exemple suivant d�finit une variable d'environnement nomm�e 'image'
avec une valeur de '1' si l'URI de la requ�te correspond � un fichier
image. Cette variable d'environnement est ensuite utilis�e pour exclure
une telle requ�te du journal des acc�s.</p>

<div class="example"><p><code>
RewriteRule \.(png|gif|jpg) - [E=image:1]<br />
CustomLog logs/access_log combined env=!image
</code></p></div>

<p>Notez que le m�me effet peut �tre obtenu � l'aide de la directive
<code class="directive"><a href="../mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>. Cette technique
est pr�sent�e � titre d'exemple et non de recommandation.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_end" id="flag_end">END</a></h2>
<p>L'utilisation du drapeau [END] permet non seulement de terminer le
processus de r��criture en cours (comme [L]), mais aussi d'emp�cher tout
processus de r��criture ult�rieur dans un contexte de r�pertoire
(htaccess).</p>

<p>Ceci ne s'applique pas aux nouvelles requ�tes r�sultant d'une
redirection externe.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_f" id="flag_f">F|forbidden</a></h2>
<p>L'utilisation du drapeau [F] permet de faire envoyer par le serveur au
client un code de statut "403 Forbidden". Le m�me effet peut �tre obtenu �
l'aide de la directive <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code>,
mais ce drapeau offre plus de souplesse dans l'attribution d'un statut
Forbidden.</p>

<p>La r�gle suivante va interdire la t�l�chargement de fichiers
<code>.exe</code> depuis votre serveur.</p>

<div class="example"><p><code>
RewriteRule \.exe - [F]
</code></p></div>

<p>Cet exemple utilise la syntaxe "-" pour la cible de r��criture, ce
qui signifie que l'URI de la requ�te n'est pas modifi�. Il n'y a aucune
raison de r��crire un URI, si vous avez l'intention d'interdire la
requ�te.</p>

<p>Lorsqu'on utilise [F], [L] est implicite - c'est � dire que la
r�ponse est renvoy�e imm�diatement, et aucune autre r�gle n'est �valu�e.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_g" id="flag_g">G|gone</a></h2>
<p>Le drapeau [G] permet de faire envoyer par le serveur un code de statut
"410 Gone" avec la r�ponse. Ce code indique qu'une ressource qui �tait
disponible auparavant ne l'est plus actuellement.</p>

<p>Comme dans le cas du drapeau [F], on utilise en g�n�ral la syntaxe
"-" pour la cible de r��criture lorsqu'on utilise le drapeau [G] :</p>

<div class="example"><p><code>
RewriteRule ancienne-ressource - [G,NC]
</code></p></div>

<p>Lorsqu'on utilise [G], [L] est implicite - c'est � dire que la
r�ponse est renvoy�e imm�diatement, et aucune autre r�gle n'est �valu�e.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_h" id="flag_h">H|handler</a></h2>
<p>Force le traitement de la requ�te r�sultante par le gestionnaire
sp�cifi�. Par exemple, on peut utiliser ce drapeau pour forcer
l'interpr�tation de tous les fichiers sans extension par le gestionnaire
php :</p>

<div class="example"><p><code>
RewriteRule !\. - [H=application/x-httpd-php]
</code></p></div>

<p>
L'expression rationnelle ci-dessus - <code>!\.</code> - correspond �
toute requ�te qui ne contient pas le caract�re <code>.</code>.
</p>
<p>On peut aussi utiliser ce drapeau pour forcer l'utilisation d'un
certain gestionnaire en fonction de certaines conditions. Par exemple,
l'extrait suivant utilis� dans un contexte de niveau serveur permet de
faire en sorte que les fichiers <code>.php</code> soient
<em>affich�s</em> par <code>mod_php</code> dans le cas o� ils font
l'objet d'une requ�te avec l'extension <code>.phps</code> :</p>

<div class="example"><p><code>
RewriteRule ^(/source/.+\.php)s$ $1 [H=application/x-httpd-php-source]
</code></p></div>


<p>L'expression rationnelle ci-dessus -
<code>^(/source/.+\.php)s$</code> - va correspondre � toute requ�te qui
d�butera par <code>/source/</code>, continuera par 1 ou n caract�res
puis par <code>.phps</code>. La r�f�rence arri�re $1 fait r�f�rence � la
correspondance captur�e entre parenth�ses de l'expression
rationnelle.</p>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_l" id="flag_l">L|last</a></h2>
<p>Lorsque le drapeau [L] est pr�sent, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
arr�te le traitement du jeu de r�gles. Cela signifie dans la plupart des
situations que si la r�gle s'applique, aucune autre r�gle ne sera
trait�e. Ce drapeau correspond � la commande Perl <code>last</code>, ou
� la commande <code>break</code> en C. Utilisez ce drapeau pour indiquer
que la r�gle courante doit �tre appliqu�e imm�diatement, sans tenir
compte des r�gles ult�rieures.</p>

<p>Si vous utilisez des r�gles <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> dans des fichiers
<code>.htaccess</code> ou des sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, il est important d'avoir quelques
notions sur la mani�re dont les r�gles sont trait�es. Pour simplifier,
une fois les r�gles trait�es, la requ�te r��crite est pass�e � nouveau
au moteur d'interpr�tation des URLs afin que ce dernier puisse la
traiter. Il est possible qu'au cours du traitement de la requ�te
r��crite, le fichier <code>.htaccess</code> ou la section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> soient � nouveau
rencontr�s, entra�nant un nouveau traitement du jeu de r�gles depuis le
d�but. Cette situation se pr�sente le plus souvent lorsqu'une des r�gles
provoque une redirection - interne ou externe - ce qui r�initialise le
traitement de la requ�te.</p>

<p>Si vous utilisez des directives <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> dans un de ces contextes,
il importe par cons�quent de pr�voir explicitement des �tapes permettant
d'�viter un bouclage infini sur les r�gles,
et de ne pas compter seulement sur
le drapeau [L] pour terminer l'ex�cution d'une s�rie de r�gles, comme
d�crit ci-dessous.</p>

<p>Un autre drapeau, [END], permet non seulement d'interrompre le cycle
courant du processus de r��criture, mais aussi d'emp�cher toute
r��criture ult�rieure dans le contexte de r�pertoire (htaccess). Ceci ne
s'applique pas aux nouvelles requ�tes r�sultant de redirections
externes.</p>

<p>Dans l'exemple donn� ici, toute requ�te est r��crite en
<code>index.php</code>, la requ�te originale �tant ajout�e comme cha�ne
de requ�te en argument � <code>index.php</code> ; cependant, la
directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> permet de s'assurer que si
la requ�te concerne d�j� <code>index.php</code>, la directive <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> sera saut�e.</p>

<div class="example"><p><code>
RewriteBase /<br />
RewriteCond %{REQUEST_URI} !=/index.php<br />
RewriteRule ^(.*) /index.php?req=$1 [L,PT]
</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_n" id="flag_n">N|next</a></h2>
<p>Le drapeau [N] provoque un red�marrage du traitement des r�gles
depuis le d�but, en utilisant le r�sultat du jeu de r�gles, sous
r�serve qu'il existe un point de d�marrage ; � utiliser avec pr�cautions
car il peut provoquer un bouclage infini.
</p>
<p>
Le drapeau [Next] peut servir, par exemple,
� remplacer de mani�re r�p�titive
une cha�ne de caract�re ou une lettre dans une requ�te. Dans l'exemple
suivant, chaque occurence de A sera remplac�e par B dans la requ�te, et
ceci jusqu'il n'y ait plus de A � remplacer.
</p>

<div class="example"><p><code>
RewriteRule (.*)A(.*) $1B$2 [N]
</code></p></div>

<p>Vous pouvez vous repr�senter ce traitement comme une boucle
<code>while</code> : tant que le mod�le de la r�gle correspond (c'est �
dire, tant que l'URI contient un <code>A</code>),
effectuer la substitution (c'est � dire, remplacer le <code>A</code> par
un <code>B</code>).</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_nc" id="flag_nc">NC|nocase</a></h2>
<p>Avec le drapeau [NC], le mod�le de la r�gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est compar� � la requ�te de
mani�re insensible � la casse. C'est � dire que cette comparaison
s'effectue sans tenir compte des majuscules/minuscules dans l'URI
compar�.</p>

<p>Dans l'exemple suivant, toute requ�te pour un fichier image sera
transmise par Apache � votre serveur d'images d�di�. La correspondance est
insensible � la casse, si bien que par exemple, <code>.jpg</code> aussi
bien que <code>.JPG</code> seront accept�s.</p>

<div class="example"><p><code>
RewriteRule (.*\.(jpg|gif|png))$ http://images.example.com$1 [P,NC]
</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_ne" id="flag_ne">NE|noescape</a></h2>
<p>Par d�faut, les caract�res sp�ciaux, comme <code>&amp;</code> et
<code>?</code>, sont convertis en leur �quivalent
hexad�cimal. Le drapeau [NE] permet d'�viter cette conversion.
</p>

<div class="example"><p><code>
RewriteRule ^/ancre/(.+) /grosse-page.html#$1 [NE,R]
</code></p></div>

<p>
Dans l'exemple ci-dessus, <code>/anchor/xyz</code> est r��crit en
<code>/bigpage.html#xyz</code>. En l'absence du drapeau [NE], le #
aurait �t� converti en son �quivalent hexad�cimal, <code>%23</code>, ce
qui aurait provoqu� un code d'erreur "404 Not Found".
</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_ns" id="flag_ns">NS|nosubreq</a></h2>
<p>Le drapeau [NS] emp�che la r�gle de s'appliquer aux sous-requ�tes.
Par exemple, une page incluse au moyen d'une SSI (Server
Side Include) est une sous-requ�te, et vous ne voudrez probablement pas que
la r��criture s'applique � ces sous-requ�tes. Ainsi, lorsque
<code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> recherche des informations � propos des
fichiers par d�faut du r�pertoire (comme les fichiers
<code>index.html</code>), il s'agit d'une sous-requ�te interne, et vous
ne d�sirez en g�n�ral pas que ces sous-requ�tes soient r��crites. Cette
r��criture
n'est pas toujours utile pour les sous-requ�tes, et peut m�me causer des
erreurs si l'ensemble du jeu de r�gles est appliqu�. L'utilisation de
ce drapeau permet d'exclure les r�gles qui peuvent poser probl�me.</p>

<p>Comment d�terminer si vous devez utiliser cette r�gle ou non : si
vous pr�fixez les URLs avec des scripts CGI, afin de forcer leur
traitement par le script CGI, vous vous exposez � des probl�mes (ou du
moins � une surcharge significative) avec les sous-requ�tes. Dans ces
cas, vous devez utiliser ce drapeau.</p>

<p>
Les images, scripts java, ou fichiers css, charg�s en tant que partie
d'une page html, ne sont pas des sous-requ�tes - le navigateur les
appelle sous forme de requ�tes HTTP � part enti�re.
</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_p" id="flag_p">P|proxy</a></h2>
<p>L'utilisation du drapeau [P] entra�ne le traitement de la requ�te par
le module <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>, et ceci via une requ�te de
mandataire. Par exemple, si vous voulez que toutes les requ�tes d'images
soient trait�es par un serveur d'images annexe, vous pouvez utiliser
une r�gle de ce style :</p>

<div class="example"><p><code>
RewriteRule /(.*)\.(jpg|gif|png) http://images.example.com/$1.$2 [P]
</code></p></div>

<p>L'utilisation du drapeau [P] provoque aussi l'effet du drapeau [L] -
autrement dit, la requ�te est imm�diatement envoy�e au mandataire, et
toute r�gle ult�rieure sera ignor�e.</p>

<p>
Vous devez vous assurer que la cha�ne de substitution soit un URI valide
(commen�ant typiquement par <code>http://</code><em>nom-serveur</em>)
qui puisse �tre trait�e par le module <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. Dans
le cas contraire, le module mandataire vous renverra une erreur.
L'utilisation de ce drapeau impl�mente de mani�re plus puissante la
directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>, pour
faire correspondre le contenu distant � l'espace de nommage du serveur
local.</p>

<div class="warning">
      <h3>Avertissement � propos de la s�curit�</h3>
      <p>Lors de la construction de l'URL cible de la r�gle, il convient
      de prendre en compte l'impact en mati�re de s�curit� qu'aura le
      fait de permettre au client d'influencer le jeu d'URLs pour
      lesquelles votre serveur agira en tant que mandataire.
      Assurez-vous que la partie protocole://nom-serveur de l'URL soit
      fixe, ou ne permette pas au client de l'influencer induement.</p>
</div>

<p>Note: <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> doit �tre activ� pour pouvoir
utiliser ce drapeau.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_pt" id="flag_pt">PT|passthrough</a></h2>

<p>
Par d�faut, la cible (ou cha�ne de substitution) d'une r�gle
RewriteRule est sens�e �tre un chemin de fichier. Avec le drapeau [PT],
par contre, elle est trait�e comme un URI. Autrement dit, avec le
drapeau [PT], le r�sultat de la r�gle  <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est pass� � nouveau au
syst�me de mise en correspondance des URLs avec le syst�me de fichiers,
de fa�on � ce que les syst�mes de mise en correspondance bas�s sur les
chemins de fichiers, comme la directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code>, ou <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>, par exemple, puissent avoir une
chance d'accomplir leur t�che.
</p>

<p>
Si par exemple, vous avez un <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> pour /icons, et une r�gle  <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> qui renvoie vers /icons,
vous devez utiliser le drapeau [PT] pour �tre s�r que l'<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> sera bien �valu�.
</p>

<div class="example"><p><code>
Alias /icons /usr/local/apache/icons<br />
RewriteRule /pics/(.+)\.jpg /icons/$1.gif [PT]
</code></p></div>

<p>
Dans l'exemple pr�c�dent, en l'absence du drapeau [PT], l'Alias aurait
�t� ignor�, ce qui aurait provoqu� une erreur 'File not found'.
</p>

<p>Avec le drapeau <code>PT</code>, le drapeau <code>L</code> est
implicite : la r��criture s'arr�tera afin de transmettre la requ�te � la
phase suivante du traitement.</p>

<p>Notez que le drapeau <code>PT</code> est implicite dans des contextes
de r�pertoire comme les sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> ou les fichiers
<code>.htaccess</code>. Le seul moyen de contourner ceci consiste �
r��crire vers <code>-</code>.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_qsa" id="flag_qsa">QSA|qsappend</a></h2>
<p>
Quand l'URI de remplacement contient une cha�ne de requ�te, le
comportement par d�faut de la r�gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est de supprimer la <code>
query string</code> (il s'agit des param�tres �ventuellement pass�s dans l'URL apr�s le
caract�re <code>?</code>, usuellement pour les formulaires trait�s par la
m�thode HTTP <code>GET</code>) existante, et de la remplacer par celle nouvellement cr��e.
Avec le drapeau [QSA], les cha�nes de requ�te peuvent �tre combin�es.
</p>

<p>Consid�rons la r�gle suivante :</p>

<div class="example"><p><code>
RewriteRule /pages/(.+) /page.php?page=$1 [QSA]
</code></p></div>

<p>Avec le drapeau [QSA], une requ�te pour
<code>/pages/123?one=two</code> sera r��crite en
<code>/page.php?page=123&amp;one=two</code>. Sans le drapeau [QSA], la
m�me requ�te sera r��crite en <code>/page.php?page=123</code> -
autrement dit, la cha�ne de requ�te (<code>query string</code>) existante sera supprim�e.
</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_qsd" id="flag_qsd">QSD|qsdiscard</a></h2>
<p>
Lorsque l'URI de la requ�te contient une cha�ne de param�tres, et si
l'URI cible n'en contient pas, le comportement par d�faut de la
directive <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> consiste � copier cette
cha�ne de param�tres dans l'URI cible. Avec le drapeau [QSD], la cha�ne
de param�tres est supprim�e.
</p>

<p>Ce drapeau est disponible dans les versions 2.4.0 et sup�rieures.</p>

<p>
Lorsque les drapeaux [QSD] et [QSA] sont utilis�s ensemble, c'est le
drapeau [QSD] qui l'emporte.
</p>

<p>
Si l'URI cible poss�de une cha�ne de param�tres, le comportement par
d�faut sera respect� - c'est � dire que la cha�ne de param�tres
originale sera supprim�e et remplac�e par la cha�ne de param�tres de
l'URI cible.
</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_r" id="flag_r">R|redirect</a></h2>
<p>
L'utilisation du drapeau [R] provoque l'envoi d'une redirection au
navigateur. Si une URL pleinement qualifi�e (FQDN - fully qualified domain name)
 est sp�cifi�e (c'est � dire incluant <code>http://nom-du-serveur/</code>),
 une redirection sera effectu�e vers cette adresse. Dans le cas contraire,
 le protocole courant, le nom du serveur et le num�ro de port seront
 utilis�s pour g�n�rer l'URL envoy�e avec la redirection.
</p>

<p><em>Tout</em> code de statut de r�ponse HTTP valide peut �tre
sp�cifi�, en utilisant la syntaxe [R=305], le code de statut 302 �tant
utilis� par d�faut si aucun code n'est sp�cifi�. Le code de statut
sp�cifi� n'est pas n�cessairement un code de statut de redirection (3xx).
</p>

<p>Si le code de statut est en dehors de la plage des codes de
redirection (300-399), la cha�ne de substitution est enti�rement
supprim�e, et la r��criture s'arr�te comme si le drapeau <code>L</code>
�tait utilis�.</p>

<p>En plus des codes de statut de r�ponse, vous pouvez sp�cifier les
codes de redirection en utilisant leurs noms symboliques :
<code>temp</code> (d�faut), <code>permanent</code>, ou
<code>seeother</code>.</p>

<p>
Vous utiliserez presque toujours [R] en conjonction avec [L] (c'est �
dire [R,L]), car employ� seul, le drapeau [R] pr�fixe l'URI avec
<code>http://cet-h�te[:ce-port]</code>, mais passe ensuite cette adresse
� la r�gle suivante, ce qui provoquera le plus souvent des
avertissements 'Invalid URI in request'.
</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_s" id="flag_s">S|skip</a></h2>
<p>Le drapeau [S] sert � sauter des r�gles que vous ne voulez pas voir
ex�cuter. La syntaxe du drapeau [S] est [S=<em>N</em>], o�
<em>N</em> correspond au nombre de r�gles � sauter.
Ceci peut s'interpr�ter comme une instruction
<code>goto</code>  dans votre jeu de r�gles de r��criture. Dans
l'exemple suivant, nous ne voulons ex�cuter la r�gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> que si l'URI demand� ne
correspond pas � un fichier existant.</p>

<div class="example"><p><code>
# La requ�te concerne-t-elle un fichier qui n'existe pas ?<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
# Si c'est la cas, on saute les deux r�gles de r��criture suivantes<br />
RewriteRule .? - [S=2]<br />
<br />
RewriteRule (.*\.gif) images.php?$1<br />
RewriteRule (.*\.html) docs.php?$1
</code></p></div>

<p>Cette technique trouve son utilit� dans le fait qu'une directive
<code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> ne s'applique
qu'� la r�gle qui la suit imm�diatement. Ainsi, si vous voulez
qu'une directive <code>RewriteCond</code> s'applique � plusieurs r�gles
<code>RewriteRule</code>, une technique possible consiste � inverser ces
conditions et ajouter une <code>RewriteRule</code> avec le drapeau [Skip]. Cette technique permet
d'�laborer des pseudo-constructions if-then-else : la derni�re r�gle du
bloc then contiendra <code>skip=N</code>, o� N est le nombre de r�gles
contenues dans le bloc else :</p>
<div class="example"><p><code>
# Est-ce que le fichier existe ?<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />

# Create an if-then-else construct by skipping 3 lines if we meant to go to the "else" stanza.<br />
RewriteRule .? - [S=3]<br />
<br />
# Si le fichier existe, alors :
<span class="indent">
	RewriteRule (.*\.gif) images.php?$1<br />
	RewriteRule (.*\.html) docs.php?$1<br />
	# Skip past the "else" stanza.<br />
	RewriteRule .? - [S=1]<br />
</span>
# ELSE...
<span class="indent">
	RewriteRule (.*) 404.php?file=$1<br />
</span>
# END
</code></p></div>

<p>Il est probablement plus ais� de d�finir ce genre de configuration
via les directives <code class="directive">&lt;If&gt;</code>, <code class="directive">&lt;ElseIf&gt;</code>, et <code class="directive">&lt;Else&gt;</code>.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flag_t" id="flag_t">T|type</a></h2>
<p>D�finit le type MIME de la r�ponse r�sultante renvoy�e. L'effet est
identique � celui de la directive <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code>.</p>

<p>Par exemple, vous pouvez utiliser la technique suivante pour servir
du code source Perl en tant que plein texte, s'il est requis d'une
certaine mani�re :</p>

<div class="example"><p><code>
# Sert les fichier .pl en tant que plein texte<br />
RewriteRule \.pl$ - [T=text/plain]
</code></p></div>

<p>Ou encore, si vous poss�dez une cam�ra qui produit des fichiers
images jpeg sans extension, vous pouvez forcer le renvoi de ces images
avec le type MIME correct en se basant sur le nom du fichier :</p>

<div class="example"><p><code>
# Les fichiers dont le nom contient 'IMG' sont des images jpg.<br />
RewriteRule IMG - [T=image/jpg]
</code></p></div>

<p>Notez cependant qu'il s'agit d'un exemple trivial, et que le probl�me
aurait pu �tre r�solu en utilisant � la place la directive <code class="directive"><a href="../mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code>. Il faut toujours
envisager la possibilit� d'une solution alternative � un probl�me avant
d'avoir recours � la r��criture, qui sera toujours moins efficace qu'une
solution alternative.</p>

<p>
Dans un contexte de niveau r�pertoire, n'utilisez que <code>-</code>
(tiret) comme substitution, <em>dans toute la s�quence de r��criture de
mod_rewrite</em>, sinon le type MIME d�fini avec ce drapeau
sera perdu suite � un retraitement interne (y compris les s�quences de
r��criture suivantes de mod_rewrite). Dans ce contexte, vous pouvez
utiliser le drapeau <code>L</code> pour terminer la s�quence
<em>courante</em> de r��criture de mod_rewrite.</p>

</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/rewrite/flags.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/rewrite/flags.html" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2012 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/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
</body></html>