[APACHE DOCUMENTATION]

Apache HTTP Server Version 1.3

Utilisation des Handlers Apache

Qu'est-ce qu'un Handler

Un "handler" est une représentation interne à Apache de l'action qui doit être effectuée lorsqu'un fichier est appelé. En général, les fichiers activent des handlers implicites, selon le type de fichier. Normalement, les fichiers sont servis "simplement" par le serveur, mais certains types de fichiers sont "traités" à part. Par exemple, vous pouvez utiliser un type "application/x-httpd-cgi" pour invoquer des scripts CGI.

Apache 1.1 ajoute la possibilité d'utiliser des handlers explicitement. Que ce soit sur la base des extensions de noms de fichiers ou de la position de ces derniers, ces handlers ne sont pas liés au type intrinsèque de fichier. Ceci est avantageux à double titre ; parce que la solution est plus élégante, mais parce que cela permet aussi d'associer à la fois un type et un handler à n'importe quel fichier.

Les handlers peuvent soit être implémentés à l'intérieur du serveur sous forme de module, ou être ajoutés par la directive Action. Les handlers intégrés dans la distribution standard sont les suivants :

Directives


Directive : AddHandler

Syntaxe : <AddHandler nomHandler extension>
Contexte : configuration serveur, hôte virtuel, répertoire, .htaccess
Statut : Base
Module : mod_mime

La directive AddHandler assigne aux fichiers d'extension extension le handler nomHandler. Par exemple, pour activer des scripts CGI d'extension ".cgi", vous devrez écrire :

    AddHandler cgi-script cgi

Une vois cette ligne insérée dans le fichier srm.conf ou httpd.conf file, tout fichier dont le nom se termine par ".cgi" sera considéré comme un programme CGI.


Directive : SetHandler

Syntaxe : <SetHandler nomHandler>
Contexte : répertoire, .htaccess
Statut : Base
Module : mod_mime

Lorsqu'insérée dans un fichier .htaccess ou dans une section <Directory> ou <Location>, cette directive force tous les fichiers du répertoire à être considérés à travers le handler désigné par nomHandler. Par exemple, si vous avez réservé un répertoire particulier aux tables de mapping d'images, et vous désirez activer ces fonctionnalités pour tout fichier dans ce répertoire quel que soit l'extension, vous écririez la ligne suivante dans le fichier .htaccess présent dans ce répertoire :

    SetHandler imap-file

Un autre exemple: si vous souhaîtez que le serveur affiche un rapport d'état lorsque l'URL http://servername/status est requise, vous écririez ceci dans le fichier access.conf:

    <Location /status>
    SetHandler server-status
    </Location>


Note pour les programmeurs

Pour l'implémentation de handlers, nous avons ajouté des API Apache que les implémenteurs peuvent utiliser. Plus spécifiquement, un nouvel enregistrement a été ajouté à la structure request_rec :

    char *handler

Si vous souhaîtez que votre module appelle un handler, vous devez simplement renseigner r->handler avec le nom du handler (à chaque fois) avant d'invoquer l'étage invoke_handler de la requête. Les handlers sont implémentés de la même façon qu'auparavant, sauf que le nom du handler est utilisé au lieu d'un type de contenu. Bien que celà ne soit pas indispensable, les conventions de nommage pour les handlers demandent l'utilisation d'un nom composé de mots séparés par un tiret, sans slashs, de façon à ne pas perturber la définition de l'epace de noms de types de média.


Apache HTTP Server Version 1.3

Index

Version française © Valery Fremaux / EISTI 1998