Versión 2.0 del Servidor HTTP Apache
Uso de los Handlers en Apache
Este documento describe el uso de los Handlers en Apache.
¿Qué es un Handler?
Módulos Relacionados | Directivas Relacionadas |
---|---|
Un "handler" es una representación interna de Apache de una acción que se va a ejecutar cuando hay una llamada a un fichero. Generalmente, los ficheros tienen handlers implícitos, basados en el tipo de fichero de que se trata. Normalmente, todos los ficheros son simplemente servidos por el servidor, pero algunos tipos de ficheros se tratan de forma diferente.
Apache 1.1 añade la posibilidad de usar handlers explicitamente. Basándose en la extension del fichero o en la ubicación en la que este, se pueden especificar handlers sin tener en cuenta el tipo de fichero de que se trate. Esto es una ventaja por dos razones. Primero, es una solución más elegante. Segundo, porque a un fichero se le pueden asignar tanto un tipo como un handler. (Consulte también la sección Ficheros y extensiones múltiples.)
Los Handlers pueden ser tanto ser compilados con el servidor
como incluidos en un módulo, como añadidos con la
directiva Action
. Los
handlers compilados con el servidor de la distribución
estándar de Apache son:
- default-handler: Envía el fichero
usando el
default_handler()
, que es el handler usado por defecto para tratar contenido estático. (core) - send-as-is: Envía el fichero con
cabeceras HTTP tal y como es. (
mod_asis
) - cgi-script: Trata el fichero como un sript
CGI. (
mod_cgi
) - imap-file: Trata el fichero como un mapa de
imágenes. (
mod_imap
) - server-info: Extrae la información de
configuración del
servidor. (
mod_info
) - server-status: Extrae el informe de estado
del servidor. (
mod_status
) - type-map: Trata el fichero como una
correspondencia de tipos para la negociación de contenidos.
(
mod_negotiation
)
Ejemplos
Modificar contenido estático usando un script CGI
Las siguientes directivas hacen que cuando haya una
petición de ficheros con la extensión
html
se lance el script CGI
footer.pl
.
Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html
En este caso, el script CGI es el responsable de enviar el
documento originalmente solicitado (contenido en la variable de
entorno PATH_TRANSLATED
) y de hacer cualquier
modificación o añadido deseado.
Archivos con cabaceras HTTP
Las siguientes directivas activan el handler
send-as-is
, que se usa para ficheros que contienen
sus propias cabeceras HTTP. Todos los archivos en el directorio
/web/htdocs/asis/
serán procesados por el
handler send-as-is
, sin tener en cuenta su
extension.
<Directory /web/htdocs/asis>
SetHandler send-as-is
</Directory>
Nota para programadores
Para implementar las funcionalidades de los handlers, se ha
hecho un añadido a la API de
Apache que puede que quiera usar. Para ser más
específicos, se ha añadido un nuevo registro a la
estructura request_rec
:
char *handler
Si quiere que su módulo llame a un handler , solo tiene
que añadir r->handler
al nombre del handler
en cualquier momento antes de la fase invoke_handler
de la petición. Los handlers se implementan siempre como se
hacía antes, aunque usando el nombre del handler en vez de un
tipo de contenido. Aunque no es de obligado cumplimiento, la
convención de nombres para los handlers es que se usen
palabras separadas por guiones, sin barras, de manera que no se
invada el media type name-space.