Apache 的处理程序使用

本文档描述了 Apache 处理程序的使用。

什么是处理程序

Related Modules Related Directives
mod_actions
mod_asis
mod_cgi
mod_imagemap
mod_info
mod_mime
mod_negotiation
mod_status
Action
AddHandler
RemoveHandler
SetHandler

“处理程序”是调用文件时要执行的动作的内部 Apache 表示形式。通常,文件具有基于文件类型的隐式处理程序。通常,所有文件仅由服务器提供服务,但是某些文件类型将单独“处理”。

还可以基于文件 extensions 或位置来显式配置处理程序,而与文件类型无关。这是有利的,这既因为它是一种更优雅的解决方案,又因为它还允许将类型和处理程序与文件关联。 (另请参见具有多个 extensions 的文件。)

处理程序可以内置在服务器中或包含在模块中,也可以使用Action指令添加。标准分发中的内置处理程序如下:

Examples

使用 CGI 脚本修改静态内容

以下指令将导致对具有htmlextensions 的文件的请求触发footer.pl CGI 脚本的启动。

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

然后,CGI 脚本负责发送最初请求的文档(由PATH_TRANSLATED环境变量指向)并进行所需的修改或添加。

具有 HTTP Headers 的文件

以下指令将启用send-as-is处理程序,该处理程序用于包含其自己的 HTTP Headers 的文件。 /web/htdocs/asis/目录中的所有文件都将由send-as-is处理程序处理,无论其文件 extensions 如何。

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

Programmer's Note

为了实现处理程序功能,您可能希望使用Apache API。具体来说,新记录已添加到request_rec结构中:

char *handler

如果希望让模块使用处理程序,则只需在请求invoke_handler阶段之前的任何时间将r->handler设置为处理程序的名称。处理程序的实现与以前一样,尽管使用处理程序名称而不是 Content Type。虽然没有必要,但是处理程序的命名约定是使用短划线分隔的单词(不带斜杠),以免侵害媒体类型名称空间。

首页