• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 处理器

    什么是处理器

    相关模块相关指令
    • mod_actions

    • mod_asis

    • mod_cgi

    • mod_imagemap

    • mod_info

    • mod_mime

    • mod_negotiation

    • mod_status

    • Action

    • AddHandler

    • RemoveHandler

    • SetHandler

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

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

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

    • default-handler:使用default_handler()发送文件,它是用来处理静态内容的处理器(核心)。

    • send-as-is:直接发送,不增加 HTTP 头(mod_asis)。

    • cgi-script:按 CGI 脚本处理(mod_cgi)。

    • imap-file:按 imagemap 规则处理(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环境变量指向它),按照需要作出 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>

    对程序员的说明

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

    char *handler

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


    上篇:过滤器

    下篇:Apache 中的表达式