<?xml version="1.0" encoding="UTF-8"?>
<!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>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Termes utilisés pour décrire les modules - Serveur HTTP Apache Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<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="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&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.4</a></div><div id="page-content"><div id="preamble"><h1>Termes utilisés pour décrire les modules</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/module-dict.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/module-dict.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/module-dict.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/module-dict.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/module-dict.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div>

   <p>Ce document décrit les termes utilisés pour décrire chaque <a href="./">module</a> Apache.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#Description">Description</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Status">Statut</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#SourceFile">Fichier source</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ModuleIdentifier">Identificateur de module</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Compatibility">Compatibilité</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</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="Description" id="Description">Description</a></h2>

<p>Une brève description des fonctions du module.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Status" id="Status">Statut</a></h2>

    <p>Ce terme indique le degré de rapprochement du module par rapport
    au coeur du serveur web Apache ; en d'autres termes, vous pouvez
    être amené à recompiler le serveur pour pouvoir accéder au module et
    à ses fonctionnalités. Les valeurs possibles de cet attribut sont
    :</p>

    <dl>
      <dt>MPM</dt>

      <dd>Un module dont le statut est "MPM" est un <a href="../mpm.html">module Multi-Processus</a>. A la différence des
      autres modules, un seul module MPM peut et doit être utilisé par Apache à
      la fois. Ce type de module est responsable de la répartition et du
      traitement de base des requêtes.</dd>

      <dt>Base</dt>

      <dd>Un module dont le statut est "Base" est compilé dans le
      serveur et chargé avec ce dernier par défaut ; il est donc
      toujours disponible à moins que vous n'ayez fait en sorte de
      supprimer le module de votre configuration.</dd>

      <dt>Extension</dt>

      <dd>Un module dont le statut est "Extension" n'est pas compilé et
      chargé dans le serveur par défaut. Pour activer le module et
      accéder à ses fonctionnalités, vous devez modifier la
      configuration de la compilation du serveur et recompiler
      Apache.</dd>

      <dt>Expérimental</dt>

      <dd>Le statut "Experimental" indique que le module fait partie du
      kit Apache, mais que vous devez l'utiliser à vos risques et
      périls. Le module est documenté à des fins d'exhaustivité, et
      n'est pas obligatoirement supporté.</dd>

      <dt>Externe</dt>

      <dd>Ce statut indique que le module ("module tiers") ne fait pas
      partie de la distribution de base d'Apache. Nous ne sommes pas
      responsables de ces modules et n'en assurons pas le support.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="SourceFile" id="SourceFile">Fichier source</a></h2>

    <p>Il s'agit tout simplement de la liste des noms des fichiers
    source qui contiennent le code du module. C'est aussi le nom utilisé
    par la directive <code class="directive"><a href="../mod/core.html#ifmodule">&lt;IfModule&gt;</a></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="ModuleIdentifier" id="ModuleIdentifier">Identificateur de module</a></h2>

    <p>C'est une chaîne permettant d'identifier le module à utiliser
    dans la directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>
    pour le chargement dynamique des modules. En particulier, c'est le
    nom de la variable externe de type module dans le fichier
    source.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Compatibility" id="Compatibility">Compatibilité</a></h2>

    <p>Si le module ne faisait pas partie de la distribution originale
    d'Apache version 2, la version à partir de laquelle il est
    disponible est indiquée ici. En outre, si le module n'est disponible
    que sur certaines plates-formes, cela sera mentionné ici.</p>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/module-dict.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/module-dict.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/module-dict.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/module-dict.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/module-dict.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/module-dict.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else { 
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2023 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="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>