🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Apache处理器的使用 本文阐述Apache处理器的使用。 ## 什么是处理器(Handler) 相关模块 * `mod_actions` * `mod_asis` * `mod_cgi` * `mod_imagemap` * `mod_info` * `mod_mime` * `mod_negotiation` * `mod_status` 相关指令 * `Action` * `AddHandler` * `RemoveHandler` * `SetHandler` "处理器"是当一个文件被调用时,Apache所执行操作的内部表现。文件一般都有基于其文件类型的隐含处理器。通常,文件都只是被服务器简单的提交,只有某些文件类型会被特别地"处理"。 Apache1.1增加了使用处理器的能力。处理器可以基于文件名后缀或位置进行指定,而不只是文件类型,其优越性不仅在于它是一个优秀的方案,还在于它允许一个文件同时与一种类型**和**一个处理器相关联。(参见:[带多扩展名的文件](#calibre_link-347)) 处理器可以被编译进服务器也可以包含在模块中,还可以用`Action`指令增加。标准发行版中内建的处理器如下: * **default-handler**:使用`default_handler()`发送文件,这是处理静态内容的默认处理器。(`core`) * **send-as-is**:按原样带HTTP头发送文件。(`mod_asis`) * **cgi-script**:将文件视为CGI脚本。(`mod_cgi`) * **imap-file**:将文件作为映射表规则文件解析。(`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`指向的)原始请求文档,并按需要进行修改或增加。 ### 带HTTP头的文件 以下指令启用`send-as-is`处理器,它用于处理本身包含HTTP头的文件,这样,所有位于`/web/htdocs/asis/`目录中的文件,无论其后缀名是什么,都由`send-as-is`进行处理。 ``` <Directory /web/htdocs/asis> SetHandler send-as-is </Directory> ``` ## 程序员注意事项 为了实现处理器功能,[Apache API](#calibre_link-425)里面增加了一些内容,你可能会用到。尤其是[Apache API](#calibre_link-425)结构中增加了一个字段: ``` char *handler ``` 如果你的模块需要使用处理器,只须在对请求执行`invoke_handler`之前,设置`r-&gt;handler`为该处理器的名称即可。处理器的实现和以前一样,只是使用了处理器名称而不是内容类型。处理器的名称可以有"-",但不能有"/",以避免和介质类型名称冲突。