📄 core.html
字号:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="keywords" content="Apache, 中文, 手册, 中文版, 中文手册, 中文版手册, 参考手册, 中文参考手册, 金步国" />
<meta name="description" content="Apache 2.2 中文版参考手册" />
<meta name="author" content="金步国" />
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<title>core - Apache 2.2 中文版参考手册</title>
</head>
<body><div id="page-header">
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p><p class="apache">Apache HTTP Server 版本2.2</p><img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path"><a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">文档</a> > <a href="../index.html">版本2.2</a> > <a href="./index.html">模块</a></div>
<div id="translation-info"> <a href="../translator_announcement.html#thanks">致谢</a> | <a href="../translator_announcement.html#announcement">译者声明</a> | 本篇译者:<a href="mailto:csfrank@citiz.net">金步国</a> | 本篇译稿最后更新:2006年1月20日 | <a href="../translator_announcement.html#last_new">获取最新版本</a></div>
<div id="page-content"><div id="preamble"><h1>Apache核心(Core)特性</h1>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="module">
<tr><th><a href="module-dict.html#Description">说明</a></th><td>Apache HTTP服务器核心提供的功能,始终有效</td></tr>
<tr><th><a href="module-dict.html#Status">状态</a></th><td>核心(C)</td></tr>
</table>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AcceptFilter" id="AcceptFilter">AcceptFilter</a> <a name="acceptfilter" id="acceptfilter">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>根据协议类型对监听Socket进行优化</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>AcceptFilter <var>protocol</var> <var>accept_filter</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">作用域</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">状态</a></th><td>核心(C)</td></tr>
<tr><th><a href="directive-dict.html#Module">模块</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">兼容性</a></th><td>仅在 Apache 2.1.5 以后的版本中可用</td></tr>
</table>
<p>这个指令使得操作系统根据协议类型对监听socket进行特别的优化。其基本前提是内核在数据接受完毕或一个完整的HTTP请求缓冲完成前不向服务器进程发送socket 。目前仅支持<a href="http://www.freebsd.org/cgi/man.cgi?query=accept_filter&sektion=9">FreeBSD的接收过滤器(Accept Filter)</a>和Linux的更原始的(more primitive)<code>TCP_DEFER_ACCEPT</code> 。</p>
<p>FreeBSD上的默认值是:</p>
<div class="example"><p><code>
AcceptFilter http httpready <br />
AcceptFilter https dataready
</code></p></div>
<p><code>httpready</code>接收过滤器(Accept Filter)在内核级别缓冲整个HTTP请求。一旦一个请求体被完整接收,内核将把它发送给服务器。参见<a href="http://www.freebsd.org/cgi/man.cgi?query=accf_http&sektion=9">accf_http(9)</a>手册页以获得更详细的信息。因为HTTPS请求已经被加密了,所以只使用了<a href="http://www.freebsd.org/cgi/man.cgi?query=accf_data&sektion=9">accf_data(9)</a>过滤器。</p>
<p>Linux上的默认值是:</p>
<div class="example"><p><code>
AcceptFilter http data <br />
AcceptFilter https data
</code></p></div>
<p>Linux的<code>TCP_DEFER_ACCEPT</code>并不支持对http请求进行缓冲。除<code>none</code>之外的任何值都将在监听程序上启用<code>TCP_DEFER_ACCEPT</code> 。参见<a href="http://homepages.cwi.nl/~aeb/linux/man2html/man7/tcp.7.html">tcp(7)</a>手册页以获得更多详情。</p>
<p>使用<code>none</code>将会为那个协议禁用接收过滤器(accept filter)。这对于像<code>nntp</code>这样需要服务器先发送数据的协议很有用处:</p>
<div class="example"><p><code>AcceptFilter nttp none</code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AcceptPathInfo" id="AcceptPathInfo">AcceptPathInfo</a> <a name="acceptpathinfo" id="acceptpathinfo">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>是否接受附带多余路径名信息的请求</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>AcceptPathInfo On|Off|Default</code></td></tr>
<tr><th><a href="directive-dict.html#Default">默认值</a></th><td><code>AcceptPathInfo Default</code></td></tr>
<tr><th><a href="directive-dict.html#Context">作用域</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">覆盖项</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">状态</a></th><td>核心(C)</td></tr>
<tr><th><a href="directive-dict.html#Module">模块</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">兼容性</a></th><td>仅在 Apache 2.0.30 及以后的版本中可用</td></tr>
</table>
<p>此指令决定是否接受在实际文件名(或实际目录中一个不存在的文件)后跟随多余路径名信息的请求。这个多余的路径名信息可以当作<code>PATH_INFO</code>环境变量传递给脚本。</p>
<p>比如说,假设<code>/test/</code>所指向的目录下只包括一个文件:<code>here.html</code> ,那么对<code>/test/here.html/more</code>和<code>/test/nothere.html/more</code>的请求都会将<code>PATH_INFO</code>环境变量设为"<code>/more</code>"。</p>
<p><code class="directive">AcceptPathInfo</code>指令的取值范围:</p>
<dl>
<dt><code>Off</code></dt><dd>仅当一个请求映射到一个真实存在的路径时,才会被接受。这样,如上述<code>/test/here.html/more</code>这样在真实文件名后跟随一个路径名的请求将会返回一个"404 NOT FOUND"错误。</dd>
<dt><code>On</code></dt><dd>只要前导路径可以映射到一个真实存在的文件,就可以接受该请求。这样,只要上述<code>/test/here.html</code>能够映射到一个有效的文件,那么对<code>/test/here.html/more</code>的请求就会被接收。</dd>
<dt><code>Default</code></dt><dd>是否接收附带多余路径名信息的请求由其对应的<a href="../handler.html">处理器</a>来决定。对应普通文本的核心处理器默认会拒绝<code>PATH_INFO</code> 。而用于伺服脚本的处理器,比如<a href="mod_cgi.html">cgi-script</a>和<a href="mod_isapi.html">isapi-isa</a>,默认会接受<code>PATH_INFO</code> 。</dd>
</dl>
<p><code>AcceptPathInfo</code>指令存在的首要目的就是允许您覆盖处理器关于是否接受<code>PATH_INFO</code>的默认设置。这种覆盖是很必要的。比如说,当您使用了类似<a href="mod_include.html">INCLUDES</a>这样的<a href="../filter.html">过滤器</a>来根据<code>PATH_INFO</code>产生内容时。核心处理器通常会拒绝这样的请求,而您就可以用下述的配置使这样的脚本成为可能:</p>
<div class="example"><p><code>
<Files "mypaths.shtml"><br />
<span class="indent">
Options +Includes<br />
SetOutputFilter INCLUDES<br />
AcceptPathInfo On<br />
</span>
</Files>
</code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AccessFileName" id="AccessFileName">AccessFileName</a> <a name="accessfilename" id="accessfilename">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>分布式配置文件的名字</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>AccessFileName <var>filename</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">默认值</a></th><td><code>AccessFileName .htaccess</code></td></tr>
<tr><th><a href="directive-dict.html#Context">作用域</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">状态</a></th><td>核心(C)</td></tr>
<tr><th><a href="directive-dict.html#Module">模块</a></th><td>core</td></tr>
</table>
<p>如果<a href="#allowoverride">为某个目录启用了分布式配置文件功能</a>,那么在向客户端返回其中的文档时,服务器将在这个文档所在的各级目录中查找此配置文件。比如:</p>
<div class="example"><p><code>
AccessFileName .acl
</code></p></div>
<p>在返回文档<code>/usr/local/web/index.html</code>之前,服务器会为此指令读取 <code>/.acl</code> 、<code>/usr/.acl</code> 、<code>/usr/local/.acl</code> 、<code>/usr/local/web/.acl</code> 除非此功能以被如下配置所禁用:</p>
<div class="example"><p><code>
<Directory /><br />
<span class="indent">
AllowOverride None<br />
</span>
</Directory>
</code></p></div>
<h3>参见</h3>
<ul>
<li><code class="directive"><a href="#allowoverride">AllowOverride</a></code></li>
<li><a href="../configuring.html">配置文件</a></li>
<li><a href="../howto/htaccess.html">.htaccess 文件</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddDefaultCharset" id="AddDefaultCharset">AddDefaultCharset</a> <a name="adddefaultcharset" id="adddefaultcharset">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>当应答内容是<code>text/plain</code>或<code>text/html</code>时,在HTTP应答头中加入的默认字符集</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>AddDefaultCharset On|Off|<var>charset</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">默认值</a></th><td><code>AddDefaultCharset Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">作用域</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">覆盖项</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">状态</a></th><td>核心(C)</td></tr>
<tr><th><a href="directive-dict.html#Module">模块</a></th><td>core</td></tr>
</table>
<p>当且仅当应答内容是<code>text/plain</code>或<code>text/html</code>时,此指令将会在HTTP应答头中加入的默认字符集。理论上这将覆盖在文档体中通过<code><meta></code>标签指定的字符集,但是实际的行为通常取决于用户浏览器的设置。<code>AddDefaultCharset Off</code> 将会禁用此功能。<code>AddDefaultCharset On</code> 将启用Apache内部的默认字符集<code>iso-8859-1</code> 。您也可以指定使用<a href="http://www.iana.org/assignments/character-sets">在IANA注册过的字符集名字</a>中的另外一个<var>charset</var> 。比如说:</p>
<div class="example"><p><code>
AddDefaultCharset utf-8
</code></p></div>
<p><code class="directive">AddDefaultCharset</code>只应当在如下情况下使用:所有文本资源都使用同一种确定的字符集,且分别标记他们的字符集非常麻烦。一个这样的例子是向包含动态内容的资源中添加字符集参数(比如先前遗留的CGI脚本),这样可能会因为在输出中包含用户提供的数据而导致跨站点脚本攻击。但是请注意:更好的解决办法是修改或删除这些脚本,因为设置了默认的字符集以后将会使得浏览器的字符集自动探测功能失效。</p>
<h3>参见</h3>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -