Apache HTTP 服务器版本 2.4

| 相关模块 | 相关指令 |
|---|---|
“Handler” 是 Apache 内部对调用文件时要执行的操作的表示。通常,文件具有基于文件类型的隐式 Handler。通常,所有文件都由服务器简单地提供服务,但某些文件类型会单独“处理”。
Handler 也可以根据文件名扩展名或位置显式配置,与文件类型无关。这样做有利,因为它是一种更优雅的解决方案,并且它还允许将类型和 Handler 与文件关联。(另请参阅 具有多个扩展名的文件。)
Handler 可以内置于服务器或包含在模块中,也可以使用 Action 指令添加。标准发行版中的内置 Handler 如下所示
default_handler() 发送文件,这是默认情况下用于处理静态内容的 Handler。(核心)mod_asis)mod_cgi)mod_imagemap)mod_info)mod_status)mod_negotiation)以下指令将导致对具有 html 扩展名的文件的请求触发 footer.pl CGI 脚本的启动。
Action add-footer /cgi-bin/footer.pl AddHandler add-footer .html
然后,CGI 脚本负责发送最初请求的文档(由 PATH_TRANSLATED 环境变量指向)并进行所需的任何修改或添加。
以下指令将启用 send-as-is Handler,该 Handler 用于包含其自身 HTTP 标头的文件。/web/htdocs/asis/ 目录中的所有文件都将由 send-as-is Handler 处理,无论其文件名扩展名如何。
<Directory "/web/htdocs/asis">
SetHandler send-as-is
</Directory>
为了实现 Handler 功能,已对 Apache API 进行了一些补充,您可能希望使用这些补充。具体来说,已在 request_rec 结构中添加了一条新记录
char *handler
如果您希望您的模块使用 Handler,您只需要在请求的 invoke_handler 阶段之前将 r->handler 设置为 Handler 的名称。Handler 的实现方式与以前相同,只是使用 Handler 名称而不是内容类型。虽然没有必要,但 Handler 的命名约定是使用连字符分隔的单词,没有斜杠,这样就不会侵入媒体类型名称空间。