📄 core.html
字号:
</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="ErrorDocument" id="ErrorDocument">ErrorDocument</a> <a name="errordocument" id="errordocument">指令</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>ErrorDocument <var>error-code</var> <var>document</var></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>在Apache2.0中引用文字的语法发生了变化</td></tr>
</table>
<p>当遇到问题或错误的时候,Apache能被配置为进行以下四种处理之一:</p>
<ol>
<li>输出一个简单生硬的错误代码信息</li>
<li>输出一个经过定制的信息</li>
<li>重定向到一个本地的<var>URL-path</var>来处理这个问题(错误)</li>
<li>重定向到一个外部的<var>URL</var>来处理这个问题(错误)</li>
</ol>
<p>默认会采取第1种方法,而第2-4种方法可以使用<code class="directive">ErrorDocument</code>指令后面跟随一个HTTP应答代码和一个URL或信息来进行配置。Apache有时会额外提供一些信息来描述所发生的问题/错误。</p>
<p>URL可以由一个斜杠(/)开头来指示一个本地URL(相对于<code class="directive"><a href="#documentroot">DocumentRoot</a></code>),或是提供一个能被客户端解释的完整的URL。此外还能提供一个可以被浏览器显示的消息。比如:</p>
<div class="example"><p><code>
ErrorDocument 500 http://foo.example.com/cgi-bin/tester<br />
ErrorDocument 404 /cgi-bin/bad_urls.pl<br />
ErrorDocument 401 /subscription_info.html<br />
ErrorDocument 403 "Sorry can't allow you access today"
</code></p></div>
<p>另外,特殊的"<code>default</code>"值可以被用来指定使用Apache内置的、简单的硬编码消息。当不需要这个定制特性的时候,可以用"<code>default</code>"恢复Apache内置的、简单的硬编码消息,否则将继承一个已有的<code class="directive">ErrorDocument</code> 。</p>
<div class="example"><p><code>
ErrorDocument 404 /cgi-bin/bad_urls.pl<br /><br />
<Directory /web/docs><br />
<span class="indent">
ErrorDocument 404 default<br />
</span>
</Directory>
</code></p></div>
<p>请注意,如果您为<code class="directive">ErrorDocument</code>指定了一个外部的URL(比如说,任何在开头指示了类似"<code>http</code>"这样的访问方法的字符串),Apache将会向客户端发送一个重定向指令来告诉它在哪里找到这个文档,哪怕这个文档最后还是在这个服务器上。这里面包含着一些暗示:最重要的就是客户端无法接收到原始的错误状态代码,取而代之的是一个重定向状态代码。这将会使一些用状态代码来判断一个URL是否有效的web机器人或其它客户端产生误解。另外,如果您在"<code>ErrorDocument 401</code>"中使用了外部URL,客户端将不会提示用户输入密码,因为它根本没收到这样一个401的状态代码。所以,<strong>如果您想使用"<code>ErrorDocument 401</code>"指令,就必须指向一个本地的文档</strong>。</p>
<p>Microsoft Internet Explorer (MSIE)在服务器端产生的错误信息"很小"的时候会忽略它们而用自己"友好的"错误信息进行取代。这个大小的阈值根据错误类型而不同。但一般来说,如果您的错误信息的大小在512 byte以上,MSIE就会显示这些服务器端产生的错误文档而不会屏蔽它们。您可以在微软知识库的文章<a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807">Q294807</a>中获取更多信息。</p>
<p>虽然大多数错误信息可以被改写,但是在有些情况下,将仍然使用某些内置的错误信息而不管<code class="directive"><a href="#errordocument">ErrorDocument</a></code>如何设置。特别是在检测到一个"畸形"请求的情况下,正常的请求处理过程将会被立即中断,并且立即返回一个内置的错误信息。这是为了防止某些不良请求可能导致的安全问题。</p>
<p>在2.0版以前,信息前面会用一个不配对的双引号作为前导标志。</p>
<h3>参见</h3>
<ul>
<li><a href="../custom-error.html">定制个性化应答文档</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="ErrorLog" id="ErrorLog">ErrorLog</a> <a name="errorlog" id="errorlog">指令</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> ErrorLog <var>file-path</var>|syslog[:<var>facility</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">默认值</a></th><td><code>ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows 和 OS/2)</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><code class="directive">ErrorLog</code>指令指定了当服务器遇到错误时记录错误日志的文件。如果<var>file-path</var>不是一个以斜杠(/)开头的绝对路径,那么将被认为是一个相对于<code class="directive"><a href="#serverroot">ServerRoot</a></code>的相对路径。</p>
<div class="example"><h3>示例</h3><p><code>
ErrorLog /var/log/httpd/error_log
</code></p></div>
<p>如果<var>file-path</var>以一个管道符号(|)开头,那么会为它指定一个命令来处理错误日志。</p>
<div class="example"><h3>示例</h3><p><code>
ErrorLog "|/usr/local/bin/httpd_errors"
</code></p></div>
<p>如果系统支持,使用"<code>syslog</code>"替代文件名将通过syslogd(8)来记载日志。默认将使用系统日志机制<code>local7</code> ,但您可以用"<code>syslog:<var>facility</var></code>"语法来覆盖这个设置,其中,<var>facility</var>的取值为syslog(1)中记载的任何一个名字。</p>
<div class="example"><h3>示例</h3><p><code>
ErrorLog syslog:user
</code></p></div>
<p><em>安全提示</em>:参阅<a href="../misc/security_tips.html#serverroot">安全提示</a>文档获得关于为什么当记录日志文件的目录对于启动服务器以外的用户可写时会对您的服务器构成安全威胁。</p>
<div class="warning"><h3>注意</h3>
<p>当在非Unix平台上输入文件路径的时候,路径分隔符必须统一使用正斜线(/),即使那个平台本身使用反斜线(\)。</p>
</div>
<h3>参见</h3>
<ul>
<li><code class="directive"><a href="#loglevel">LogLevel</a></code></li>
<li><a href="../logs.html">Apache日志文件</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="FileETag" id="FileETag">FileETag</a> <a name="fileetag" id="fileetag">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>用以创建ETag应答头的文件的属性</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>FileETag <var>component</var> ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">默认值</a></th><td><code>FileETag INode MTime Size</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 class="directive">FileETag</code>指令配置了当文档是基于一个文件时用以创建<code>ETag</code>(实体标签)应答头的文件的属性(<code>ETag</code>的值用于进行缓冲管理以节约网络带宽)。在Apache1.3.22及以前,<code>ETag</code>的值<em>总是</em>由文件的inode(索引节点)、大小、最后修改时间决定。<code class="directive">FileETag</code>指令可以让您选择(如果您想进行选择)这其中哪些要素将被使用。主要关键字如下:</p>
<dl>
<dt><strong>INode</strong></dt>
<dd>文件的索引节点(inode)数</dd>
<dt><strong>MTime</strong></dt>
<dd>文件的最后修改日期及时间</dd>
<dt><strong>Size</strong></dt>
<dd>文件的字节数</dd>
<dt><strong>All</strong></dt>
<dd>所有存在的域,等价于:<div class="example"><p><code>FileETag INode MTime Size</code></p></div></dd>
<dt><strong>None</strong></dt>
<dd>如果一个文档是基于文件的,则不在应答中包含任何<code>ETag</code>头</dd>
</dl>
<p>可以在<code>INode</code>, <code>MTime</code>, <code>Size</code>前加上"<code>+</code>"或"<code>-</code>"以改变由上层继承下来的默认值。任何没有上述前缀的关键字将立刻完全取消继承下来的设置。</p>
<p>如果一个目录的配置包含了"<code>FileETag INode MTime Size</code>"而其一个子目录包含了"<code>FileETag -INode</code>"那么这个子目录的设置(并会被其下任何没有进行覆盖的子目录继承)将等价于"<code>FileETag MTime Size</code>"。</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Files" id="Files"><Files></a> <a name="files" id="files">指令</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><Files <var>filename</var>> ... </Files></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>All</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 class="directive"><Files></code>指令提供了基于文件名的访问控制,类似于<code class="directive"><a href="#directory"><Directory></a></code>和<code class="directive"><a href="#location"><Location></a></code>指令。它将配对一个<code></Files></code>指令。在此配置段中定义的指令将作用于其基本名称(不是完整的路径)与指定的文件名相符的对象。<code class="directive"><Files></code>段将根据它们在配置文件中出现的顺序被处理:在<code class="directive"><a href="#directory"><Directory></a></code>段和<code>.htaccess</code>文件被处理之后,但在<code class="directive"><a href="#location"><Location></a></code>段之前。请注意:<code class="directive"><Files></code>能嵌入到<code class="directive"><a href="#directory"><Directory></a></code>段中以限制它们作用的文件系统范围。</p>
<p><var>filename</var>参数应当是一个文件名或是一个包含通配符的字符串,其中"<code>?</code>"匹配任何单个字符,"<code>*</code>"匹配任何字符串序列。在"<code>~</code>"字符之后同样可以使用<a class="glossarylink" href="../glossary.html#regex" title="see glossary">正则表达式</a>。比如:</p>
<div class="example"><p><code>
<Files ~ "\.(gif|jpe?g|png)$">
</code></p></div>
<p>将匹配绝大部分常见的因特网图象格式。然而在Apache1.3及其后继版本中,更推荐使用<code class="directive"><a href="#filesmatch"><F
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -