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 的命名约定是使用连字符分隔的单词,没有斜杠,这样就不会侵入媒体类型名称空间。