<-
Apache > HTTP 服务器 > 文档 > 版本 2.4

Apache 的 Handler 使用

可用语言:  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn 

本文档描述了 Apache 的 Handler 的使用。

Support Apache!

另请参阅

top

什么是 Handler

“Handler” 是 Apache 内部对调用文件时要执行的操作的表示。通常,文件具有基于文件类型的隐式 Handler。通常,所有文件都由服务器简单地提供服务,但某些文件类型会单独“处理”。

Handler 也可以根据文件名扩展名或位置显式配置,与文件类型无关。这样做有利,因为它是一种更优雅的解决方案,并且它还允许将类型和 Handler 与文件关联。(另请参阅 具有多个扩展名的文件。)

Handler 可以内置于服务器或包含在模块中,也可以使用 Action 指令添加。标准发行版中的内置 Handler 如下所示

top

示例

使用 CGI 脚本修改静态内容

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

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

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

带有 HTTP 标头的文件

以下指令将启用 send-as-is Handler,该 Handler 用于包含其自身 HTTP 标头的文件。/web/htdocs/asis/ 目录中的所有文件都将由 send-as-is Handler 处理,无论其文件名扩展名如何。

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

程序员说明

为了实现 Handler 功能,已对 Apache API 进行了一些补充,您可能希望使用这些补充。具体来说,已在 request_rec 结构中添加了一条新记录

char *handler

如果您希望您的模块使用 Handler,您只需要在请求的 invoke_handler 阶段之前将 r->handler 设置为 Handler 的名称。Handler 的实现方式与以前相同,只是使用 Handler 名称而不是内容类型。虽然没有必要,但 Handler 的命名约定是使用连字符分隔的单词,没有斜杠,这样就不会侵入媒体类型名称空间。

可用语言:  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn 

top

评论

注意
这不是问答部分。此处发布的评论应针对改进文档或服务器的建议,如果这些评论已实施或被认为无效/与主题无关,则可能会被我们的版主删除。有关如何管理 Apache HTTP 服务器的问题应发送到我们的 IRC 频道 #httpd(在 Libera.chat 上)或发送到我们的 邮件列表