精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
Http_core是核心基本模块,实现了核心功能。尽管这个模块同样使用了Apache模
块API,但是它特殊:它有一个非标准文件名(不以mod开头),它和特殊的非API连接配合工作,它和Apache内核连接配合工作,它是强制的。也就是说,尽管你通常能在运行期间通过删除不需要的模块来定制Apache,但不能删除http_core模块。
</Directory>
</DirectoryMatch>
</Files>
</FilesMatch>
</IfDefine>
</IfModule>
</Limit>
</Location>
</LocationMatch>
</VirtualHost>
<Directory>
<DirectoryMatch>
<Files>
<FilesMatch>
<IfDefine>
<IfModule>
<Limit>
<location>
<Locationmatch>
<VirtualHost>
AccessConfig
AccessFileName
AddModule
AllowOverride
AuthName
AuthType
BindAddress
ClearModuleList
ContentDigest
CoreDumpDirectory
DefaultType
DocumentRoot
ErrorDocument
ErrorLog
Group
HostnameLookups
IdentityCheck
Include
KeepAlive
KeepAliveTimeout
LimitRequestBody
LimitRequestFields
LimitRequestFieldsize
LimitRequestLine
Listen
ListenBacklog
LockFile
LogLevel
MaxClients
MaxKeepAliveRequests
MaxRequestsPerChild
MaxSpareServers
MinSpareServers
NameVirtualHost
Options
PidFile
Port
RLimitCPU
RLimitNProc
Require
ResourceConfig
Satisfy
ScoreBoardFile
SendBufferSize
ServerAdmin
ServerAlias
ServeName
ServerPath
ServerRoot
ServerSignature
ServerTokens
ServerType
StartServers
Timeout
UseCanonicalName
User
default_handler()函数
“处理器”是当一个文件被调用时,Apache所执行操作的内部表现。 文件一般都有基于其文件类型的隐含的处理器。 通常,文件都只是被服务器作简单的提交,只有某些文件类型会被特殊地“处理”。
Apache 1.1显式地增加了使用处理器的能力。 处理器可以被指定给文件名后缀或位置,而不仅是文件类型, 其优越性不仅在于它是一个优秀的方案, 还在于它允许一个文件同时与一种类型和一个处理器相关联。 (参见Files with Multiple Extensions.)
处理器可以被编译进入服务器,也可以包含于模块中,还可以用Action指令增加。标准发行版中内建的处理器如下:
default-handler: 用default_handler()发送文件, 这是处理静态内容的默认的处理器(core)。
send-as-is: 按原样带HTTP头发送文件。(mod_asis)
cgi-script: 将文件视为CGI脚本。(mod_cgi)
imap-file: 将文件作为imagemap规则文件解析。(mod_imap)
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 里面增加了一些内容,可能你会用到。尤其是,request_rec 结构中增加了一个记录:
char *handler
如果你的模块需要用处理器,只须在对请求执行invoke_handler之前, 设置r->handler为该处理器的名称,即可。 处理器的实现和以前一样,只是使用了处理器名称而不是内容类型。 处理器的名称可以有'-',但不能有'/',以免于介质类型名称冲突。