Utilisation des gestionnaires d'Apache (handlers) (original) (raw)
Ce document décrit l'utilisation des gestionnaires d'Apache (handlers).
Voir aussi
Qu'est-ce qu'un gestionnaire ?
Un "gestionnaire" est une représentation interne à Apache de l'action qui doit être entreprise quand un fichier est appelé. En général, les fichiers ont des gestionnaires implicites, basés sur le type du fichier. Normalement, tous les fichiers sont traités simplement par le serveur, mais certains types de fichiers sont "gérés" séparément.
Les gestionnaires peuvent aussi être configurés explicitement, soit en fonction des extensions des noms de fichier, soit en fonction du chemin du fichier, sans faire référence au type de fichier. Ceci a le double avantage d'être une solution plus élégante, et aussi d'autoriser à associer à la fois un type et un gestionnaire avec un fichier. (Voir aussi Fichiers avec extensions multiples.)
Les gestionnaires peuvent être soit partie intégrante du serveur ou inclus dans un module, soit ajoutés à l'aide de la directive[Action](./mod/mod%5Factions.html#action)
. Les gestionnaires intégrés dans la distribution standard se présentent comme suit :
- default-handler: envoie le fichier en utilisant le
default_handler()
, qui est le gestionnaire utilisé par défaut pour traiter les contenus statiques. (core) - send-as-is: envoie les fichiers avec en-têtes HTTP tels quels. (
[mod_asis](./mod/mod%5Fasis.html)
) - cgi-script: traite le fichier comme un script CGI. (
[mod_cgi](./mod/mod%5Fcgi.html)
) - imap-file: Traite le fichier comme un ensemble de règles de descriptions d'images (imagemap). (
[mod_imagemap](./mod/mod%5Fimagemap.html)
) - server-info: Extrait des informations sur la configuration du serveur. (
[mod_info](./mod/mod%5Finfo.html)
) - server-status: Rédige un rapport sur le statut du serveur. (
[mod_status](./mod/mod%5Fstatus.html)
) - type-map: Traite le fichier comme une description de type pour la négociation du contenu. (
[mod_negotiation](./mod/mod%5Fnegotiation.html)
)
Exemples
Modification d'un contenu statique à l'aide d'un script CGI
Les directives suivantes vont faire en sorte que les requêtes pour des fichiers possédant une extension html
déclenchent l'exécution du script CGI footer.pl
.
Action add-footer /cgi-bin/footer.pl AddHandler add-footer .html
À ce moment-là, le script CGI se charge d'envoyer le document initialement demandé (référencé par la variable d'environnementPATH_TRANSLATED
) et d'effectuer tous ajout ou modification voulus.
Fichiers avec en-têtes HTTP
Les directives suivantes vont activer le gestionnairesend-as-is
, qui est utilisé pour les fichiers qui possèdent leurs propres en-têtes HTTP. Tous les fichiers situés dans le répertoire/web/htdocs/asis/
seront traités par le gestionnairesend-as-is
, sans tenir compte de l'extension de leur nom de fichier.
<Directory "/web/htdocs/asis"> SetHandler send-as-is
Note du développeur
Pour implémenter la fonctionnalité des gestionnaires, l'API Apache a fait l'objet d'un ajout que vous pourriez être amené à utiliser. Plus précisément, un nouvel enregistrement a été ajouté à la structurerequest_rec
:
char *handler
Si vous voulez que votre module déclenche l'utilisation d'un gestionnaire, il vous suffit de définir r->handler
avec le nom du gestionnaire à n'importe quel moment avant l'étapeinvoke_handler
de la requête. Les gestionnaires sont implémentés comme auparavant, quoique l'on utilise le nom du gestionnaire à la place d'un type de contenu. Bien que ce ne soit pas obligatoire, la convention de nommage des gestionnaires stipule l'utilisation d'un mot composé séparé par des tirets, sans slashes, afin de ne pas interférer avec l'espace de nommage des types de média.
Commentaires
Notice:
This is not a Q&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 mailing lists.