# Utilisation des gestionnaires apache

Ce document décrit l'utilisation des gestionnaires (Handlers) Apache.

# Qu'est ce qu'un Gestionnaire ?

mod_actions
mod_asis
mod_cgi
mod_imap
mod_info
mod_mime
mod_negotiation
mod_status
Action
AddHandler
RemoveHandler
SetHandler

Un Gestionnaire "handler" est une représentation interne à Apache, qui décrit quoi faire quand un fichier est appelé. De manière générale, les fichiers disposent d'un gestionnaire implicite en fonction de leurs types. Le fonctionnement standard est de simplement servir le fichier tel qu'il est demandé, mais certains types de fichiers peuvent être gérés différemment.

Depuis Apache 1.1, il est possible de forcer l'utilisation des gestionnaires. Ils peuvent être spécifiés pour des fichiers présentant une certaine extension ou présents dans un certain répertoire, et peuvent être utilisés indépendamment des types des fichiers. Cette technique est avantageuse, d'abord parce que plus élégante, mais aussi parce qu'on peut ainsi associer un type de fichier et un gestionnaire à un fichier. (Voir aussi : Fichiers à Extensions Multiples.)

Les gestionnaires peuvent être intégrés au serveur, ou inclus dans un module, ou encore être configurés au moyen de la directive Action. Les gestionnaires fournis par défaut dans la distribution d'Apache se présentent comme suit :

- default-handler : Envoie le fichier en utilisant `default_handler()` qui est le gestionnaire utilisé par défaut pour gérer les contenus statiques. (noyau d'Apache)
- send-as-is : Envoie le fichier avec les en-têtes HTTP tels quels. (mod_asis)
- cgi-script : Traite le fichier comme un script CGI. (mod_cgi)
- imap-file : Traite le fichier comme un ensemble de règles imagemap. NdT : ces fonctionnalités sont désuètes, et sont réalisées à présent coté client. (mod_imap)
- server-info : Envoie les informations de configuration du serveur. (mod_info)
- server-status : Envoie les informations sur le fonctionnement et la charge du serveur. (mod_status)
- type-map : Traite le fichier comme un fichier de types pour la négociation de contenu. (mod_negotiation)

# Exemples

## Modifier un contenu statique au moyen d'un script CGI

Les directives ci-après provoquent l'exécution du script CGI `footer.pl` à chaque requête de fichier présentant l'extension `html`.

Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html

Le travail du script CGI est alors d'envoyer le document demandé (désigné au moyen de la variable d'environnement `PATH_TRANSLATED`) en lui faisant subir au préalable les transformations désirées.

## Fichiers contenant des en-têtes HTTP

Les directives ci-après activent le gestionnaire `send-as-is`, utilisé pour gérer les fichiers qui contiennent leurs propres en-têtes HTTP. Tous les fichiers contenus dans le répertoire `/web/htdocs/asis/` seront traités par le gestionnaire `send-as-is`, sans tenir compte de leurs extensions.

<Directory /web/htdocs/asis>
SetHandler send-as-is
</Directory>

# Note aux programmeurs

L'API d'Apache a été modifiée lors de l'implémentation des gestionnaires ; cette modification peut se révéler intéressante. Un nouvel enregistrement a été ajouté à la structure `request_rec` :

char *handler

Pour qu'un module utilise un gestionnaire, il suffit d'affecter `r->handler` avec le nom du gestionnaire avant l'étape `invoke_handler` de la requête. Les gestionnaires fonctionnent comme auparavant, bien que leurs noms soient nécessaires au lieu d'un type de contenu. Bien qu'elle ne soit pas nécessaire, la convention de nommage des gestionnaires demande l'utilisation de mots séparés par des tirets, ne contenant aucun slash, afin de ne pas interférer avec l'espace de nommage des types de médias.