core.html.fr 294 KB
Newer Older
powelld's avatar
powelld committed
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000
    par "MATCH_". Ceci permet
    de rfrencer des URLs dans des <a href="../expr.html">expressions</a>
    ou au sein de modules comme <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Pour
    viter toute confusion, les rfrences arrires numrotes (non
    nommes) sont ignores. Vous devez utiliser  la place des groupes
    nomms.</p>

<pre class="prettyprint lang-config">&lt;FilesMatch "^(?&lt;sitename&gt;[^/]+)"&gt;
    require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
&lt;/FilesMatch&gt;</pre>



<h3>Voir aussi</h3>
<ul>
<li><a href="../sections.html">Comment fonctionnent les sections
&lt;Directory&gt;, &lt;Location&gt; et &lt;Files&gt;</a> pour une
explication de la manire dont ces diffrentes sections se combinent
entre elles  la rception d'une requte</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="forcetype" id="forcetype">Directive</a> <a name="ForceType" id="ForceType">ForceType</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Force le type de mdium spcifi dans le champ d'en-tte
HTTP Content-Type pour les fichiers correspondants</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ForceType <var>type mdium</var>|None</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>rpertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Lorsqu'elle est place dans un fichier <code>.htaccess</code> ou
    une section <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="#location">&lt;Location&gt;</a></code>, ou <code class="directive"><a href="#files">&lt;Files&gt;</a></code>, cette directive force
    l'identification du type MIME des fichiers spcifis  la valeur de
    l'argument <var>type mdium</var>. Par exemple, si vous possdez un
    rpertoire ne contenant que des fichiers GIF, et si vous ne voulez
    pas leur ajouter l'extension <code>.gif</code>, vous pouvez utiliser
    :</p>

    <pre class="prettyprint lang-config">ForceType image/gif</pre>


    <p>Notez que cette directive l'emporte sur d'autres associations de
    type de mdium indirectes dfinies dans mime.types ou via la
    directive <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code>.</p>

    <p>Vous pouvez aussi annuler toute dfinition plus gnrale de
    <code class="directive">ForceType</code> en affectant la valeur
    <code>None</code>  l'argument <var>type mdium</var> :</p>

    <pre class="prettyprint lang-config"># force le type MIME de tous les fichiers  image/gif:
&lt;Location "/images"&gt;
  ForceType image/gif
&lt;/Location&gt;

# mais utilise les mthodes classiques d'attribution du type MIME
# dans le sous-rpertoire suivant :
&lt;Location "/images/mixed"&gt;
  ForceType None
&lt;/Location&gt;</pre>

    
    <p>A la base, cette directive crase le type de contenu gnr pour
    les fichiers statiques servis  partir du sytme de fichiers. Pour
    les ressources autres que les fichiers statiques pour lesquels le
    gnrateur de rponse spcifie en gnral un type de contenu, cette
    directive est ignore.</p>

    <div class="note"><h3>Note</h3>
    <p>Lorsque des directives explicites comme <code class="directive"><a href="#sethandler">SetHandler</a></code> ou
    <code class="directive">module="mod_mime"&gt;AddHandler</code> ne s'appliquent
    pas  la requte courante, le nom du gestionnaire interne
    normalement dfini par ces directives correspondra alors au type de
    contenu spcifi par cette directive. Il s'agit d'un
    comportement historique que certains modules
    tiers, comme mod_php, peuvent interprter comme un type de contenu
    artificiel ne servant qu' indiquer le module qui doit prendre en
    compte la requte considre. Dans la mesure du
    possible, il est conseill d'viter les
    configurations qui comportent de tels types artificiels en utilisant
    les directives <code class="directive"><a href="#sethandler">SetHandler</a></code> ou
    <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code>.</p>
    </div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="gprofdir" id="gprofdir">Directive</a> <a name="GprofDir" id="GprofDir">GprofDir</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Rpertoire dans lequel crire les donnes de profiling
gmon.out.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>GprofDir <var>/tmp/gprof/</var>|<var>/tmp/gprof/</var>%</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Lorsque le serveur a t compil avec le support du profiling
    gprof, la directive <code class="directive">GprofDir</code> permet de
    spcifier dans quel rpertoire les fichiers <code>gmon.out</code>
    doivent tre crits lorsque le processus s'arrte. Si l'argument se
    termine par un caractre pourcentage ('%'), des sous-rpertoires
    sont crs pour chaque identifiant de processus.</p>

    <p>Cette directive ne fonctionne actuellement qu'avec le MPM
    <code class="module"><a href="../mod/prefork.html">prefork</a></code>.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="hostnamelookups" id="hostnamelookups">Directive</a> <a name="HostnameLookups" id="HostnameLookups">HostnameLookups</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active la recherche DNS sur les adresses IP des
clients</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>HostnameLookups On|Off|Double</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>HostnameLookups Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, rpertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Cette directive active la recherche DNS afin de pouvoir
    journaliser les nom d'htes (et les passer aux programmes CGI et aux
    inclusions SSI via la variable <code>REMOTE_HOST</code>). La valeur
    <code>Double</code> dclenche une double recherche DNS inverse. En
    d'autres termes, une fois la recherche inverse effectue, on lance
    une recherche directe sur le rsultat de cette dernire. Au moins
    une des adresses IP fournies par la recherche directe doit
    correspondre  l'adresse originale (ce que l'on nomme
    <code>PARANOID</code> dans la terminologie "tcpwrappers").</p>

    <p>Quelle que soit la configuration, lorsqu'on utilise
    <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> pour contrler l'accs en fonction
    du nom d'hte, une double recherche DNS inverse est effectue,
    scurit oblige. Notez cependant que le rsultat de cette double
    recherche n'est en gnral pas accessible,  moins que vous n'ayez
    spcifi <code>HostnameLookups Double</code>. Par exemple, si vous
    n'avez spcifi que <code>HostnameLookups On</code>, et si une
    requte concerne un objet protg par des restrictions en fonction
    du nom d'hte, quel que soit le rsultat de la double recherche
    inverse, les programmes CGI ne recevront que le rsultat de la
    recherche inverse simple dans la variable
    <code>REMOTE_HOST</code>.</p>

    <p>La valeur par dfaut est <code>Off</code> afin de prserver le
    traffic rseau des sites pour lesquels la recherche inverse n'est
    pas vraiment ncessaire. Cette valeur par dfaut est aussi bnfique
    pour les utilisateurs finaux car il n'ont ainsi pas  subir de temps
    d'attente supplmentaires dus aux recherches DNS. Les sites
    fortement chargs devraient laisser cette directive 
    <code>Off</code>, car les recherches DNS peuvent prendre des temps
    trs longs. Vous pouvez ventuellement utiliser hors ligne
    l'utilitaire <code class="program"><a href="../programs/logresolve.html">logresolve</a></code>, compil par dfaut dans
    le sous-rpertoire <code>bin</code> de votre rpertoire
    d'installation, afin de dterminer les noms d'htes associs aux
    adresses IP journalises.</p>

    <p>Enfin, si vous avez des <a href="mod_authz_host.html#reqhost">directives Require  base de
    nom</a>, une recherche de nom d'hte sera effectue quelle que soit
    la dfinition de la directive <code>HostnameLookups</code>.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="httpprotocoloptions" id="httpprotocoloptions">Directive</a> <a name="HttpProtocolOptions" id="HttpProtocolOptions">HttpProtocolOptions</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Modifie les contraintes sur les messages des requtes HTTP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>HttpProtocolOptions [Strict|Unsafe] [RegisteredMethods|LenientMethods]
 [Allow0.9|Require1.0]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>HttpProtocolOptions Strict LenientMethods Allow0.9</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit:</a></th><td>Disponible  partir des versions 2.2.32 et 2.4.24 du serveur HTTP
Apache</td></tr>
</table>
    <p>Cette directive permet de modifier les rgles qui s'appliquent  la ligne
    de requte HTTP (<a href="https://tools.ietf.org/html/rfc7230#section-3.1.1">RFC 7230
    3.1.1</a>) et aux champs des en-ttes des requtes HTTP (<a href="https://tools.ietf.org/html/rfc7230#section-3.2">RFC 7230
    3.2</a>), qui s'appliquent maintenant par dfaut ou en utilisant
    l'option <code>Strict</code>. L'option <code>Unsafe</code>
    a t ajoute pour pouvoir restaurer les anciens
    comportements ncessaires aux anciens modules et applications et aux agents
    utilisateurs personnaliss considrs comme obsoltes.</p>

    <p>Ces rgles
    s'appliquant avant le traitement de la requte, elles doivent, pour tre prises en
    compte, tre dfinies
    au niveau global ou dans la premire section par dfaut du serveur virtuel
    qui correspond  la requte considre, par interface IP/port et non par
    nom.</p>

    <p>Cette directive accepte trois paramtres issus de la liste suivante, ceux
    qui ne sont pas spcifis prenant leur valeur par dfaut :</p>

    <dl>
    <dt>Strict|Unsafe</dt>
    <dd>
    <p>Avant l'introduction de cette directive, les interprteurs de requtes du
    serveur HTTP Apache tolraient un grand nombre de formats en entre qui
    n'taient pas forcment conformes au protocole. <a href="https://tools.ietf.org/html/rfc7230#section-9.4">RFC 7230 9.4
    Request Splitting</a> et <a href="https://tools.ietf.org/html/rfc7230#section-9.5">9.5 Response
    Smuggling</a> ne rappellent que deux des risques potentiels induits par des
    requtes non conformes, alors que <a href="https://tools.ietf.org/html/rfc7230#section-3.5">RFC 7230
    3.5</a> signale les risques encourus par l'acceptation de blancs non
    conformes dans les lignes de requte. Avec l'introduction de cette
    directive, toutes les rgles de grammaire de la spcification doivent tre
    respectes dans le mode d'oprations par dfaut <code>Strict</code>.</p>

    <div class="warning"><h3>Risques de scurit lis au mode Unsafe</h3>
    <p>Il est fortement dconseill aux utilisateurs d'utiliser le mode
    d'opration <code>Unsafe</code>, ou
    <code>UnsafeWhitespace</code>, en particulier pour les dploiements de
    serveurs ouverts sur l'extrieur et/ou accessibles au public. Si un moniteur
    dfectueux ou autre logiciel spcialis ne s'excutant que sur un intranet
    ncessite une interface, les utilisateurs ne doivent utiliser les options de
    type UnSafe qu'en cas de ncessit et uniquement au sein d'un serveur
    virtuel bien spcifique et sur un rseau priv.</p>
    </div>

    <div class="example"><h3>Exemple de requte provoquant l'envoi d'un message HTTP 400 en
	mode Strict</h3><p><code>
        
        # Missing CRLF<br />
        GET / HTTP/1.0\n\n
      </code></p></div>
      <div class="warning"><h3>Utilitaires en ligne de commande et CRLF</h3>
        <p>Il peut s'avrer ncessaire de forcer certains utilitaires  utiliser
	CRLF ; si ce n'est pas le cas, httpd reverra une rponse HTTP 400 comme
	dans le cas prcdent. Par exemple, le <strong>client OpenSSL s_client
	doit utiliser le paramtre -crlf pour fonctionner correctement</strong>.</p>
        <p>Pour dtecter des problmes tels que l'absence de CRLF, vous pouvez
	utiliser la directive <code class="directive"><a href="../mod/mod_dumpio.html#dumpioinput">DumpIOInput</a></code> qui permet de dcortiquer
	les requtes HTTP.</p>
      </div>
    </dd>
    <dt>RegisteredMethods|LenientMethods</dt>
    <dd>
    <p>La section de la <a href="https://tools.ietf.org/html/rfc7231#section-4.1">RFC 7231
    4.1</a> "Request Methods" "Overview" indique que les serveurs doivent
    renvoyer un message d'erreur lorsque la ligne de requte comporte une
    mthode non supporte. C'est dj le cas lorsque l'option
    <code>LenientMethods</code> est utilise, mais les administrateurs ont la
    possibilit de limiter les mthodes utilises via l'option
    <code>RegisteredMethods</code> en enregistrant toute mthode non standard
    via la directive <code class="directive">RegisterHttpMethod</code>, en particulier
    si l'option <code>Unsafe</code> est utilise.</p>

    <div class="warning"><h3>Compatibilit avec le mandat direct</h3>
    <p>L'option
    <code>RegisteredMethods</code> <strong>ne doit pas</strong> tre utilise
    pour les serveurs mandataires car ces derniers ne connaissent pas les
    mthodes supportes par les serveurs originaux.</p>
    </div>

    <div class="example"><h3>Exemple de requte provoquant l'envoi d'un message HTTP 501 en
	mode LenientMethods</h3><p><code>
        
        # Mthode HTTP inconnue<br />
        WOW / HTTP/1.0\r\n\r\n<br /><br />
        # Mthode HTTP spcifie en minuscules<br />
        get / HTTP/1.0\r\n\r\n<br />
      </code></p></div>
      </dd>
      <dt>Allow0.9|Require1.0</dt>
      <dd>
    <p>La section de la <a href="https://tools.ietf.org/html/rfc2616#section-19.6">RFC 2616
    19.6</a> "Compatibility With Previous Versions" encouragait les
    serveurs HTTP  supporter les anciennes requtes HTTP/0.9. La RFC 7230 va
    cependant  son encontre via sa prconisation "Le souhait de supporter les
    requtes HTTP/0.9 a t supprim" et y adjoint des commentaires dans <a href="https://tools.ietf.org/html/rfc7230#appendix-A">RFC 7230 Appendix
    A</a>. A ce titre, l'option <code>Require1.0</code> permet  l'utilisateur
    d'inhiber le comportement induit par l'option par dfaut
    <code>Allow0.9</code>.</p>

    <div class="example"><h3>Exemple de requte provoquant l'envoi d'un message HTTP 400 en
	mode Require1.0</h3><p><code>
        
        # Version HTTP non supporte<br />
        GET /\r\n\r\n
      </code></p></div>
    </dd>
    </dl>

    <p>La consultation des messages enregistrs dans le journal
    <code class="directive">ErrorLog</code>, configur via la directive
    <code class="directive">LogLevel</code> avec un niveau <code>info</code>, pourra
    vous aider  identifier de telles requtes non conformes ainsi que leur
    provenance. Les utilisateurs devront accorder une attention particulire aux
    messages d'erreur de type 400 dans le journal access pour dtecter les
    requtes apparemment valides mais rejetes.</p>    

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="if" id="if">Directive</a> <a name="If" id="If">&lt;If&gt;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Contient des directives qui ne s'appliquent que si une
condition est satisfaite au cours du traitement d'une
requte</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>&lt;If <var>expression</var>&gt; ... &lt;/If&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, rpertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit:</a></th><td>Les conditions imbriques sont supportes  partir de la version
2.4.26 du serveur HTTP Apache</td></tr>
</table>
    <p>La directive <code class="directive">&lt;If&gt;</code> value une
    expression  la vole, et applique les directives qu'elle contient
    si et seulement si l'expression renvoie la valeur "vrai". Par
    exemple :</p>

    <pre class="prettyprint lang-config">&lt;If "-z req('Host')"&gt;</pre>


    <p>serait satisfaite pour les requtes HTTP/1.0 sans en-tte
    <var>Host:</var>. Les expressions peuvent contenir diffrents
    oprateurs de type shell pour la comparaison de chanes
    (<code>==</code>, <code>!=</code>, <code>&lt;</code>, ...), la
    comparaison d'entiers (<code>-eq</code>, <code>-ne</code>, ...), ou
     usages divers (<code>-n</code>, <code>-z</code>, <code>-f</code>,
    ...). Les expressions rationnelles sont aussi supportes,</p>

    <pre class="prettyprint lang-config">&lt;If "%{QUERY_STRING} =~ /(delete|commit)=.*?elem/"&gt;</pre>


    <p>ainsi que les comparaison de modles de type shell et de
    nombreuses autres oprations. Ces oprations peuvent tre effectues
    sur les en-ttes de requtes (<code>req</code>), les variables
    d'environnement (<code>env</code>), et un grand nombre d'autres
    proprits. La documentation complte est disponible dans <a href="../expr.html">Les expressions dans le serveur HTTP Apache</a>.</p>

    <p>Cette section de configuration ne peut contenir que des
    directives qui supportent le <a href="directive-dict.html#Context">contexte de rpertoire</a>.</p>

    <div class="warning">
    Certain variables, such as <code>CONTENT_TYPE</code> and other
    response headers, are set after &lt;If&gt; conditions have already
    been evaluated, and so will not be available to use in this
    directive.
    </div>


<h3>Voir aussi</h3>
<ul>
<li><a href="../expr.html">Les expressions dans le serveur HTTP
Apache</a>, pour une rfrence complte et d'autres exemples.</li>
<li><code class="directive"><a href="#elseif">&lt;ElseIf&gt;</a></code></li>
<li><code class="directive"><a href="#else">&lt;Else&gt;</a></code></li>
<li><a href="../sections.html">Comment fonctionnent les sections
&lt;Directory&gt;, &lt;Location&gt; et &lt;Files&gt;</a> pour une
explication de la manire dont ces diffrentes sections se combinent
entre elles  la rception d'une requte. Les
directives <code class="directive">&lt;If&gt;</code>, <code class="directive">&lt;ElseIf&gt;</code>, et <code class="directive">&lt;Else&gt;</code> s'appliquent en dernier.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ifdefine" id="ifdefine">Directive</a> <a name="IfDefine" id="IfDefine">&lt;IfDefine&gt;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Contient des directives qui ne s'appliqueront que si un
test retourne "vrai" au dmarrage du serveur</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>&lt;IfDefine [!]<var>paramtre</var>&gt; ...
    &lt;/IfDefine&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, rpertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>La section <code>&lt;IfDefine
    <var>test</var>&gt;...&lt;/IfDefine&gt;</code> permet de
    confrer un caractre conditionnel  un ensemble de directives. Les
    directives situes  l'intrieur d'une section <code class="directive">&lt;IfDefine&gt;</code> ne s'appliquent que si
    <var>test</var> est vrai. Si <var>test</var> est faux, tout ce qui
    se trouve entre les balises de dbut et de fin est ignor.</p>

    <p><var>test</var> peut se prsenter sous deux formes :</p>

    <ul>
      <li><var>nom paramtre</var></li>

      <li><code>!</code><var>nom paramtre</var></li>
    </ul>

    <p>Dans le premier cas, les directives situes entre les balises de
    dbut et de fin ne s'appliqueront que si le paramtre nomm <var>nom
    paramtre</var> est dfini. Le second format inverse le test, et
    dans ce cas, les directives ne s'appliqueront que si <var>nom
    paramtre</var> n'est <strong>pas</strong> dfini.</p>

    <p>L'argument <var>nom paramtre</var> est une dfinition qui peut
    tre effectue par la ligne de commande
    <code class="program"><a href="../programs/httpd.html">httpd</a></code> via le paramtre
    <code>-D<var>paramtre</var></code> au dmarrage du serveur, ou via la
    directive <code class="directive"><a href="#define">Define</a></code>.</p>

    <p>Les sections <code class="directive">&lt;IfDefine&gt;</code>
    peuvent tre imbriques, ce qui permet d'implmenter un test
    multi-paramtres simple. Exemple :</p>

    <div class="example"><p><code>httpd -DReverseProxy -DUseCache -DMemCache ...</code></p></div>
    <pre class="prettyprint lang-config">&lt;IfDefine ReverseProxy&gt;
  LoadModule proxy_module   modules/mod_proxy.so
  LoadModule proxy_http_module   modules/mod_proxy_http.so
  &lt;IfDefine UseCache&gt;
    LoadModule cache_module   modules/mod_cache.so
    &lt;IfDefine MemCache&gt;
      LoadModule mem_cache_module   modules/mod_mem_cache.so
    &lt;/IfDefine&gt;
    &lt;IfDefine !MemCache&gt;
      LoadModule cache_disk_module   modules/mod_cache_disk.so
    &lt;/IfDefine&gt;
  &lt;/IfDefine&gt;
&lt;/IfDefine&gt;</pre>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ifmodule" id="ifmodule">Directive</a> <a name="IfModule" id="IfModule">&lt;IfModule&gt;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Contient des directives qui ne s'appliquent qu'en fonction
de la prsence ou de l'absence d'un module spcifique</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>&lt;IfModule [!]<var>fichier module</var>|<var>identificateur
module</var>&gt; ... &lt;/IfModule&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, rpertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit:</a></th><td>Les identificateurs de modules sont disponibles dans les
versions 2.1 et suprieures.</td></tr>
</table>
    <p>La section <code>&lt;IfModule
    <var>test</var>&gt;...&lt;/IfModule&gt;</code> permet de confrer 
    des directives un caractre conditionnel bas sur la prsence d'un
    module spcifique. Les directives situes dans une section
    <code class="directive">&lt;IfModule&gt;</code> ne s'appliquent que
    si <var>test</var> est vrai. Si <var>test</var> est faux, tout ce
    qui se trouve entre les balises de dbut et de fin est ignor.</p>

    <p><var>test</var> peut se prsenter sous deux formes :</p>

    <ul>
      <li><var>module</var></li>

      <li>!<var>module</var></li>
    </ul>

    <p>Dans le premier cas, les directives situes entre les balises de
    dbut et de fin ne s'appliquent que si le module <var>module</var>
    est prsent -- soit compil avec le binaire Apache httpd, soit charg
    dynamiquement via la directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>. Le second format inverse le test, et dans
    ce cas, les directives ne s'appliquent que si <var>module</var>
    n'est <strong>pas</strong> prsent.</p>

    <p>L'argument <var>module</var> peut contenir soit l'identificateur
    du module, soit le nom du fichier source du module. Par exemple,
    <code>rewrite_module</code> est un identificateur et
    <code>mod_rewrite.c</code> le nom du fichier source
    correspondant. Si un module comporte plusieurs fichiers sources,
    utilisez le nom du fichier qui contient la chane de caractres
    <code>STANDARD20_MODULE_STUFF</code>.</p>

    <p>Les sections <code class="directive">&lt;IfModule&gt;</code>
    peuvent tre imbriques, ce qui permet d'implmenter des tests
    multi-modules simples.</p>

    <div class="note">Cette section ne doit tre utilise que si votre fichier de
    configuration ne fonctionne qu'en fonction de la prsence ou de
    l'absence d'un module spcifique. D'une manire gnrale, il n'est
    pas ncessaire de placer les directives  l'intrieur de sections
    <code class="directive">&lt;IfModule&gt;</code>.</div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="include" id="include">Directive</a> <a name="Include" id="Include">Include</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Inclut d'autres fichiers de configuration dans un des
fichiers de configuration du serveur</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>Include <var>chemin-fichier</var>|<var>chemin-rpertoire</var>|<var>wildcard</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, rpertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit:</a></th><td>Utilisation des caractres gnriques dans la partie chemin depuis la
version 2.3.6</td></tr>
</table>
    <p>Cette directive permet l'inclusion d'autres fichiers de
    configuration dans un des fichiers de configuration du serveur.</p>

    <p>On peut utiliser des caractres gnriques de style Shell
    (<code>fnmatch()</code>) aussi bien dans la partie nom de fichier du
    chemin que dans la partie rpertoires pour inclure plusieurs
    fichiers en une
    seule fois, selon leur ordre alphabtique. De plus, si la directive
    <code class="directive">Include</code> pointe vers un rpertoire, Apache
    httpd inclura tous les fichiers de ce rpertoire et de tous ces
    sous-rpertoires. L'inclusion de rpertoires entiers est cependant
    dconseille, car il est frquent d'oublier des fichiers
    temporaires dans un rpertoire, ce qui causerait une erreur
    <code class="program"><a href="../programs/httpd.html">httpd</a></code> en cas d'inclusion. Pour inclure des
    fichiers qui correspondent  un certain modle, comme *.conf par
    exemple, nous vous recommandons d'utiliser plutt la syntaxe avec
    caractres gnriques comme ci-dessous.</p>

    <p>La directive <code class="directive"><a href="#include">Include</a></code>
    <strong>chouera avec un code d'erreur</strong> si une expression
   contenant des caractres gnriques ne correspond  aucun fichier.
   Pour ignorer les expressions contenant des caractres gnriques ne
   correspondant  aucun fichier, utilisez la directive <code class="directive"><a href="#includeoptional">IncludeOptional</a></code>.</p>

    <p>Le chemin fichier spcifi peut tre soit un chemin absolu, soit
    un chemin relatif au rpertoire dfini par la directive <code class="directive"><a href="#serverroot">ServerRoot</a></code>.</p>

    <p>Exemples :</p>

    <pre class="prettyprint lang-config">Include /usr/local/apache2/conf/ssl.conf
Include /usr/local/apache2/conf/vhosts/*.conf</pre>


    <p>ou encore, avec des chemins relatifs au rpertoire dfini par la
    directive <code class="directive"><a href="#serverroot">ServerRoot</a></code> :</p>

    <pre class="prettyprint lang-config">Include conf/ssl.conf
Include conf/vhosts/*.conf</pre>


    <p>On peut aussi insrer des caractres gnriques dans la partie
    rpertoires du chemin. Dans l'exemple suivant, la directive
    chouera si aucun sous-rpertoire de conf/vhosts ne contient au
    moins un fichier *.conf :</p>
  
    <pre class="prettyprint lang-config">Include conf/vhosts/*/*.conf</pre>


    <p>Par contre, dans l'exemple suivant, la directive sera simplement
    ignore si aucun sous-rpertoire de conf/vhosts ne contient au
    moins un fichier *.conf :</p>

    <pre class="prettyprint lang-config">IncludeOptional conf/vhosts/*/*.conf</pre>

  

<h3>Voir aussi</h3>
<ul>
<li><code class="directive"><a href="#includeoptional">IncludeOptional</a></code></li>
<li><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="includeoptional" id="includeoptional">Directive</a> <a name="IncludeOptional" id="IncludeOptional">IncludeOptional</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Inclusion de fichiers dans le fichier de configuration</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>IncludeOptional
<var>chemin-fichier</var>|<var>chemin-rpertoire</var>|<var>wildcard</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, rpertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit:</a></th><td>Disponible  partir de la version 2.3.6 du serveur HTTP
Apache</td></tr>
</table>
    <p>Cette directive permet d'inclure des fichiers dans les fichiers
    de configuration du serveur. Elle fonctionne de manire identique 
    la directive <code class="directive"><a href="#include">Include</a></code>, 
    l'exception du fait que si l'expression avec caractres gnriques
    wilcard ne correspond  aucun fichier ou rpertoire, elle sera
    ignore silencieusement au lieu de causer une erreur.</p>    
    

<h3>Voir aussi</h3>
<ul>
<li><code class="directive"><a href="#include">Include</a></code></li>
<li><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="keepalive" id="keepalive">Directive</a> <a name="KeepAlive" id="KeepAlive">KeepAlive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active les connexions HTTP persistantes</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>KeepAlive On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>KeepAlive On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>L'extension Keep-Alive de HTTP/1.0 et l'implmentation des
    connexions persistantes dans HTTP/1.1 ont rendu possibles des
    sessions HTTP de longue dure, ce qui permet de transmettre
    plusieurs requtes via la mme connexion TCP. Dans certains cas, le
    gain en rapidit pour des documents comportant de nombreuses images
    peut atteindre 50%. Pour activer les connexions persistantes,
    dfinissez <code>KeepAlive On</code>.</p>

    <p>Pour les clients HTTP/1.0, les connexions persistantes ne seront
    mises en oeuvre que si elles ont t spcialement demandes par un
    client. De plus, une connexion persistante avec un client HTTP/1.0
    ne peut tre utilise que si la taille du contenu est connue
    d'avance. Ceci implique que les contenus dynamiques comme les
    sorties CGI, les pages SSI, et les listings de rpertoires gnrs
    par le serveur n'utiliseront en gnral pas les connexions
    persistantes avec les clients HTTP/1.0. Avec les clients HTTP/1.1,
    les connexions persistantes sont utilises par dfaut, sauf
    instructions contraires. Si le client le demande, le transfert par
    tronons de taille fixe (chunked encoding) sera utilis afin de
    transmettre un contenu de longueur inconnue via une connexion
    persistante.</p>

    <p>Lorsqu'un client utilise une connexion persistante, elle comptera
    pour une seule requte pour la directive <code class="directive"><a href="../mod/mpm_common.html#maxconnectionsperchild">MaxConnectionsPerChild</a></code>, quel
    que soit le nombre de requtes transmises via cette connexion.</p>

<h3>Voir aussi</h3>
<ul>
<li><code class="directive"><a href="#maxkeepaliverequests">MaxKeepAliveRequests</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="keepalivetimeout" id="keepalivetimeout">Directive</a> <a name="KeepAliveTimeout" id="KeepAliveTimeout">KeepAliveTimeout</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dure pendant laquelle le serveur va attendre une requte
avant de fermer une connexion persistante</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>KeepAliveTimeout <var>nombre</var>[ms]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>KeepAliveTimeout 5</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Le nombre de secondes pendant lesquelles Apache httpd va attendre une
    requte avant de fermer la connexion. Le dlai peut tre dfini en
    millisecondes en suffixant sa valeur par ms. La valeur du dlai
    spcifie par la directive <code class="directive"><a href="#timeout">Timeout</a></code> s'applique ds qu'une requte a
    t reue.</p>

    <p>Donner une valeur trop lve 
    <code class="directive">KeepAliveTimeout</code> peut induire des problmes
    de performances sur les serveurs fortement chargs. Plus le dlai
    est lv, plus nombreux seront les processus serveur en attente de
    requtes de la part de clients inactifs.</p>

    <p>Si la directive <code class="directive">KeepAliveTimeout</code> n'est
    <strong>pas</strong> dfinie pour un serveur virtuel  base de nom, c'est
    la valeur de la paire adresse IP/port du serveur virtuel qui
    correspond le mieux qui sera utilise.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="limit" id="limit">Directive</a> <a name="Limit" id="Limit">&lt;Limit&gt;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Limite les contrles d'accs que la section contient 
certaines mthodes HTTP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>&lt;Limit <var>mthode</var> [<var>mthode</var>] ... &gt; ...
    &lt;/Limit&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>rpertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>AuthConfig, Limit</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Les contrles d'accs s'appliquent normalement 
    <strong>toutes</strong> les mthodes d'accs, et c'est en gnral le
    comportement souhait. <strong>Dans le cas gnral, les directives
    de contrle d'accs n'ont pas  tre places dans une section
    <code class="directive">&lt;Limit&gt;</code>.</strong></p>

    <p>La directive <code class="directive">&lt;Limit&gt;</code> a pour
    but de limiter les effets des contrles d'accs aux mthodes HTTP
    spcifies. Pour toutes les autres mthodes, les restrictions
    d'accs contenues dans la section <code class="directive">&lt;Limit&gt;</code> <strong>n'auront aucun
    effet</strong>. L'exemple suivant n'applique les contrles d'accs
    qu'aux mthodes <code>POST</code>, <code>PUT</code>, et
    <code>DELETE</code>, en laissant les autres mthodes sans protection
    :</p>

    <pre class="prettyprint lang-config">&lt;Limit POST PUT DELETE&gt;
  Require valid-user
&lt;/Limit&gt;</pre>


    <p>La liste des noms de mthodes peut contenir une ou plusieurs
    valeurs parmi les suivantes : <code>GET</code>, <code>POST</code>,
    <code>PUT</code>, <code>DELETE</code>, <code>CONNECT</code>,
    <code>OPTIONS</code>, <code>PATCH</code>, <code>PROPFIND</code>,
    <code>PROPPATCH</code>, <code>MKCOL</code>, <code>COPY</code>,
    <code>MOVE</code>, <code>LOCK</code>, et <code>UNLOCK</code>.
    <strong>Le nom de mthode est sensible  la casse.</strong> Si la
    valeur <code>GET</code> est prsente, les requtes <code>HEAD</code>
    seront aussi concernes. La mthode <code>TRACE</code> ne peut pas
    tre limite (voir la directive <code class="directive"><a href="#traceenable">TraceEnable</a></code>).</p>

    <div class="warning">Une section <code class="directive">&lt;LimitExcept&gt;</code> doit toujours tre prfre 
    une section <code class="directive">&lt;Limit&gt;</code> pour la
    restriction d'accs, car une section <code class="directive"><a href="#limitexcept">&lt;LimitExcept&gt;</a></code> fournit une protection contre
    les mthodes arbitraires.</div>

    <p>Les directives <code class="directive">&lt;Limit&gt;</code> et
    <code class="directive"><a href="#limitexcept">&lt;LimitExcept&gt;</a></code>
    peuvent tre imbriques. Dans ce cas, pour chaque niveau des
    directives <code class="directive">&lt;Limit&gt;</code> ou  <code class="directive"><a href="#limitexcept">&lt;LimitExcept&gt;</a></code>, ces dernires
    doivent restreindre l'accs pour les mthodes auxquelles les
    contrles d'accs s'appliquent.</p>

    <div class="warning">Lorsqu'on utilise les directives <code class="directive">&lt;Limit&gt;</code> ou <code class="directive">&lt;LimitExcept&gt;</code> avec la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>, la premire directive
    <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> dont la
    condition est satisfaite autorise la requte, sans tenir compte de
    la prsence d'autres directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>.</div>

    <p>Par exemple, avec la configuration suivante, tous les
    utilisateurs seront autoriss  effectuer des requtes
    <code>POST</code>, et la directive <code>Require group
    editors</code> sera ignore dans tous les cas :</p>

    <pre class="prettyprint lang-config">&lt;LimitExcept GET&gt;
  Require valid-user
&lt;/LimitExcept&gt;
&lt;Limit POST&gt;
  Require group editors
&lt;/Limit&gt;</pre>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="limitexcept" id="limitexcept">Directive</a> <a name="LimitExcept" id="LimitExcept">&lt;LimitExcept&gt;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Applique les contrles d'accs  toutes les mthodes HTTP,
sauf celles qui sont spcifies</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>&lt;LimitExcept <var>mthode</var> [<var>mthode</var>] ... &gt; ...
    &lt;/LimitExcept&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>rpertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>AuthConfig, Limit</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">&lt;LimitExcept&gt;</code> et
    <code>&lt;/LimitExcept&gt;</code> permettent de regrouper des
    directives de contrle d'accs qui s'appliqueront  toutes les
    mthodes d'accs HTTP qui ne font <strong>pas</strong> partie de la
    liste des arguments ; en d'autres termes, elles ont un comportement
    oppos  celui de la section <code class="directive"><a href="#limit">&lt;Limit&gt;</a></code>, et on peut les utiliser pour
    contrler aussi bien les mthodes standards que les mthodes non
    standards ou non reconnues. Voir la documentation de la section
    <code class="directive"><a href="#limit">&lt;Limit&gt;</a></code> pour plus
    de dtails.</p>

    <p>Par exemple :</p>

    <pre class="prettyprint lang-config">&lt;LimitExcept POST GET&gt;
  Require valid-user
&lt;/LimitExcept&gt;</pre>



</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="limitinternalrecursion" id="limitinternalrecursion">Directive</a> <a name="LimitInternalRecursion" id="LimitInternalRecursion">LimitInternalRecursion</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dtermine le nombre maximal de redirections internes et de
sous-requtes imbriques</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LimitInternalRecursion <var>nombre</var> [<var>nombre</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>LimitInternalRecursion 10</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Une redirection interne survient, par exemple, quand on utilise
    la directive <code class="directive"><a href="../mod/mod_actions.html#action">Action</a></code> qui
    redirige en interne la requte d'origine vers un script CGI. Une
    sous-requte est le mcanisme qu'utilise Apache httpd pour dterminer ce
    qui se passerait pour un URI s'il faisait l'objet d'une requte. Par
    exemple, <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> utilise les sous-requtes pour
    rechercher les fichiers lists dans la directive <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>.</p>

    <p>La directive <code class="directive">LimitInternalRecursion</code> permet
    d'viter un crash du serveur d  un bouclage infini de redirections
    internes ou de sous-requtes. De tels bouclages sont dus en gnral
     des erreurs de configuration.</p>

    <p>La directive accepte, comme arguments, deux limites qui sont
    values  chaque requte. Le premier <var>nombre</var> est le
    nombre maximum de redirections internes qui peuvent se succder. Le
    second <var>nombre</var> dtermine la profondeur d'imbrication
    maximum des sous-requtes. Si vous ne spcifiez qu'un seul
    <var>nombre</var>, il sera affect aux deux limites.</p>

    <pre class="prettyprint lang-config">LimitInternalRecursion 5</pre>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="limitrequestbody" id="limitrequestbody">Directive</a> <a name="LimitRequestBody" id="LimitRequestBody">LimitRequestBody</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>limite la taille maximale du corps de la requte HTTP
envoye par le client</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LimitRequestBody <var>octets</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>LimitRequestBody 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, rpertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Cette directive spcifie la taille maximale autorise pour le
    corps d'une requte ; la valeur de l'argument <var>octets</var> va
    de 0 (pour une taille illimite),  2147483647 (2Go). Voir la note
    ci-dessous pour la limite d'applicabilit aux requtes mandates.</p>

    <p>La directive <code class="directive">LimitRequestBody</code> permet de
    dfinir une limite pour la taille maximale autorise du corps d'une
    requte HTTP en tenant compte du contexte dans lequel la directive
    a t place (c'est  dire au niveau du serveur, d'un rpertoire,
    d'un fichier ou d'une localisation). Si la requte du client dpasse
    cette limite, le serveur rpondra par un message d'erreur et ne
    traitera pas la requte. La taille du corps d'une requte normale va
    varier de manire importante en fonction de la nature de la
    ressource et des mthodes autorises pour cette dernire. Les
    scripts CGI utilisent souvent le corps du message pour extraire les
    informations d'un formulaire. Les implmentations de la mthode
    <code>PUT</code> ncessitent une valeur au moins aussi leve que la
    taille maximale des reprsentations que le serveur dsire accepter
    pour cette ressource.</p>

    <p>L'administrateur du serveur peut utiliser cette directive pour
    contrler plus efficacement les comportements anormaux des requtes
    des clients, ce qui lui permettra de prvenir certaines formes
    d'attaques par dni de service.</p>

    <p>Si par exemple, vous autorisez le chargement de fichiers vers une
    localisation particulire, et souhaitez limiter la taille des
    fichiers chargs  100Ko, vous pouvez utiliser la directive suivante
    :</p>

    <pre class="prettyprint lang-config">LimitRequestBody 102400</pre>


    <div class="note"><p>Pour une description dtaille de la manire dont cette
    directive est interprte par les requtes mandates, voir la
    documentation du module <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>.</p>
    </div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="limitrequestfields" id="limitrequestfields">Directive</a> <a name="LimitRequestFields" id="LimitRequestFields">LimitRequestFields</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Limite le nombre de champs d'en-tte autoriss dans une
requte HTTP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LimitRequestFields <var>nombre</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>LimitRequestFields 100</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p><var>nombre</var> est un entier de 0 (nombre de champs illimit)
     32767. La valeur par dfaut est dfinie  la compilation par la
    constante <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> (100 selon la
    distribution).</p>

    <p>La directive <code class="directive">LimitRequestFields</code> permet 
    l'administrateur du serveur de modifier le nombre maximum de champs
    d'en-tte autoriss dans une requte HTTP. Pour un serveur, cette
    valeur doit tre suprieure au nombre de champs qu'une requte
    client normale peut contenir. Le nombre de champs d'en-tte d'une
    requte qu'un client utilise dpasse rarement 20, mais ce nombre
    peut varier selon les implmentations des clients, et souvent en
    fonction des extensions que les utilisateurs configurent dans leurs
    navigateurs pour supporter la ngociation de contenu dtaille. Les
    extensions HTTP optionnelles utilisent souvent les
    champs d'en-tte des requtes.</p>

    <p>L'administrateur du serveur peut utiliser cette directive pour
    contrler plus efficacement les comportements anormaux des requtes
    des clients, ce qui lui permettra de prvenir certaines formes
    d'attaques par dni de service. La valeur spcifie doit tre
    augmente si les clients standards reoivent une erreur du serveur
    indiquant que la requte comportait un nombre d'en-ttes trop
    important.</p>

    <p>Par exemple :</p>

    <pre class="prettyprint lang-config">LimitRequestFields 50</pre>


    <div class="warning"><h3>Avertissement</h3>
     <p>Dans le cas des serveurs virtuels  base de noms, la valeur de
     cette directive est extraite du serveur virtuel par dfaut (le
     premier de la liste) pour la paire adresse IP/port.</p>
    </div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="limitrequestfieldsize" id="limitrequestfieldsize">Directive</a> <a name="LimitRequestFieldSize" id="LimitRequestFieldSize">LimitRequestFieldSize</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ddinit la taille maximale autorise d'un en-tte de
requte HTTP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LimitRequestFieldSize <var>octets</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>LimitRequestFieldSize 8190</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Cette directive permet de dfinir le nombre maximum
    d'<var>octets</var> autoriss dans un en-tte de requte HTTP.</p>

    <p>La directive <code class="directive">LimitRequestFieldSize</code> permet
     l'administrateur du serveur de dfinir la taille
    maximale autorise d'un en-tte de requte HTTP. Pour un serveur,
    cette valeur doit tre suffisamment grande pour contenir tout
    en-tte d'une requte client normale. La taille d'un champ d'en-tte
    de requte normal va varier selon les implmentations des clients,
    et en fonction des extensions que les utilisateurs
    configurent dans leurs navigateurs pour supporter la ngociation de
    contenu dtaille. Les en-ttes d'authentification SPNEGO peuvent
    atteindre une taille de 12392 octets.</p>

    <p>&gt;L'administrateur du serveur peut utiliser cette directive pour
    contrler plus efficacement les comportements anormaux des requtes
    des clients, ce qui lui permettra de prvenir certaines formes
    d'attaques par dni de service.</p>

    <p>Par exemple ::</p>

    <pre class="prettyprint lang-config">LimitRequestFieldSize 4094</pre>


    <div class="note">Dans des conditions normales, la valeur par dfaut de cette
    directive ne doit pas tre modifie.</div>

    <div class="warning"><h3>Avertissement</h3>
     <p>Dans le cas des serveurs virtuels  base de noms, la valeur de
     cette directive est extraite du serveur virtuel par dfaut (le
     premier de la liste) pour lequel la paire adresse IP/port
     correspond le mieux.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="limitrequestline" id="limitrequestline">Directive</a> <a name="LimitRequestLine" id="LimitRequestLine">LimitRequestLine</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dfinit la taille maximale d'une ligne de requte
HTTP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LimitRequestLine <var>octets</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>LimitRequestLine 8190</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Cette directive permet de dfinir la taille maximale autorise
    pour une ligne de requte HTTP en <var>octets</var>.</p>

    <p>La directive <code class="directive">LimitRequestLine</code> permet 
    l'administrateur du serveur de dfinir la taille
    maximale autorise d'une ligne de requte HTTP client. Comme une
    requte comporte une mthode HTTP, un URI, et une version de
    protocole, la directive <code class="directive">LimitRequestLine</code>
    impose une restriction sur la longueur maximale autorise pour un
    URI dans une requte au niveau du serveur. Pour un serveur, cette
    valeur doit tre suffisamment grande pour rfrencer les noms de
    toutes ses ressources, y compris toutes informations pouvant tre
    ajoutes dans la partie requte d'une mthode <code>GET</code>.</p>

    <p>L'administrateur du serveur peut utiliser cette directive pour
    contrler plus efficacement les comportements anormaux des requtes
    des clients, ce qui lui permettra de prvenir certaines formes
    d'attaques par dni de service.</p>

    <p>Par exemple :</p>

    <pre class="prettyprint lang-config">LimitRequestLine 4094</pre>


    <div class="note">Dans des conditions normales, cette directive doit conserver
    sa valeur par dfaut.</div>

    <div class="warning"><h3>Avertissement</h3>
     <p>Dans le cas des serveurs virtuels  base de noms, la valeur de
     cette directive est extraite du serveur virtuel par dfaut (le
     premier de la liste) pour lequel la paire adresse IP/port
     correspond le mieux.</p>
    </div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="limitxmlrequestbody" id="limitxmlrequestbody">Directive</a> <a name="LimitXMLRequestBody" id="LimitXMLRequestBody">LimitXMLRequestBody</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dfinit la taille maximale du corps d'une requte au format
XML</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LimitXMLRequestBody <var>octets</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>LimitXMLRequestBody 1000000</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, rpertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
    <p>Taille maximale (en octets) du corps d'une requte au format XML.
    Une valeur de <code>0</code> signifie qu'aucune limite n'est
    impose.</p>

    <p>Exemple :</p>

    <pre class="prettyprint lang-config">LimitXMLRequestBody 0</pre>



</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="location" id="location">Directive</a> <a name="Location" id="Location">&lt;Location&gt;</a></h2>
<table class="directive">