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

Please note

This document refers to the 2.2 version of Apache httpd, which is no longer maintained. The active release is documented here. If you have not already upgraded, please follow this link for more information.

You may follow this link to go to the current version of this document.

Apache 的处理器

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

本页描述 Apache 处理器的用法。

top

什么是处理器

“处理器”是当文件被调用时,Apache 要执行的动作的内部表示形式。 一般来说,每个文件都有基于其文件类型的隐式处理器。通常的文件会被 服务器简单处理,但是某些文件类型会被分别“处理”。

处理器也可以被基于扩展名或位置来明确配置。它们都很有用,这不仅 因为它是优雅的方案,而且还允许类型处理器关联到文件 (参见文件与多个扩展名)。

处理器可以编译到服务器中,或者包含在模块中,它们还可以被 Action 指令增加。标准发行版中内置的处理器有:

top

例子

使用 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>

top

对程序员的说明

为了实现处理器特性,增加了需要使用的 Apache API。 特别的,结构 request_rec 增加了新成员:

char *handler

如果你想要模块实现处理器,只需要在在处理请求,调用 invoke_handler 之前,将 r->handler 指向处理器名称。处理器的实现与以前一样,只是用处理器名称取代了内容类型。 虽然不是必要,处理器的命名约定是使用破折号分割的单词,没有斜杠,从而不侵入媒体类型名称空间。

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

top

评论

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.