Apache HTTP 服务器版本 2.4
Apache 的处理器
本页描述 Apache 处理器的用法。
什么是处理器
相关模块 | 相关指令 |
---|---|
“处理器”是当文件被调用时,Apache 要执行的动作的内部表示形式。 一般来说,每个文件都有基于其文件类型的隐式处理器。通常的文件会被 服务器简单处理,但是某些文件类型会被分别“处理”。
处理器也可以被基于扩展名或位置来明确配置。它们都很有用,这不仅 因为它是优雅的方案,而且还允许类型与处理器关联到文件 (参见文件与多个扩展名)。
处理器可以编译到服务器中,或者包含在模块中,它们还可以被 Action
指令增加。标准发行版中内置的处理器有:
- default-handler: 使用
default_handler()
发送文件,它是用来处理静态内容的处理器(核心)。 - send-as-is: 直接发送,不增加 HTTP 头(
mod_asis
)。 - cgi-script: 按 CGI 脚本处理(
mod_cgi
)。 - imap-file: 按 imagemap 规则处理(
mod_imagemap
)。 - server-info: 取得服务器配置信息(
mod_info
)。 - server-status: 取得服务器状态报告(
mod_status
)。 - type-map: 用于内容协商,按类型映射文件处理(
mod_negotiation
)。
例子
使用 CGI 脚本修改静态内容
下面的指令将会使具有html
扩展名的文件,触发 CGI 脚本footer.pl
的执行。
Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html
于是 CGI 负责发送请求的文档(PATH_TRANSLATED
环境变量指向它),按照需要作出 and making
whatever modifications or additions are desired.
含有 HTTP 头的文件
下面的指令会启用
send-as-is
处理器,用于包含自己的 HTTP 的文件。不管什么扩展名,
所有位于 /web/htdocs/asis/
目录的文件会被
send-as-is
处理器处理。
<Directory /web/htdocs/asis>
SetHandler send-as-is
</Directory>
对程序员的说明
为了实现处理器特性,增加了需要使用的 Apache API。
特别的,结构 request_rec
增加了新成员:
char *handler
如果你想要模块实现处理器,只需要在在处理请求,调用 invoke_handler
之前,将 r->handler
指向处理器名称。处理器的实现与以前一样,只是用处理器名称取代了内容类型。
虽然不是必要,处理器的命名约定是使用破折号分割的单词,没有斜杠,从而不侵入媒体类型名称空间。