You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by sl...@apache.org on 2002/05/23 16:23:54 UTC

cvs commit: httpd-2.0/docs/manual/mod allmodules.html.en core.html.en directives.html.en index.html.en mod_access.html.en mod_actions.html.en mod_alias.html.en mod_asis.html.en mod_auth.html.en mod_auth_anon.html.en mod_auth_dbm.html.en mod_auth_digest.html.en mod_autoindex.html.en mod_cache.html.en mod_cern_meta.html.en mod_cgi.html.en mod_cgid.html.en mod_charset_lite.html.en mod_dav.html.en mod_deflate.html.en mod_dir.html.en mod_env.html.en mod_example.html.en mod_expires.html.en mod_ext_filter.html.en mod_file_cache.html.en mod_headers.html.en mod_imap.html.en mod_include.html.en mod_info.html.en mod_isapi.html.en mod_log_config.html.en mod_mime.html.en mod_mime_magic.html.en mod_negotiation.html.en mod_proxy.html.en mod_rewrite.html.en mod_setenvif.html.en mod_so.html.en mod_speling.html.en mod_ssl.html.en mod_status.html.en mod_suexec.html.en mod_unique_id.html.en mod_userdir.html.en mod_usertrack.html.en mod_vhost_alias.html.en mpm_common.html.en mpm_netware.html.en mpm_winnt.html.en perchild.html.en prefork.html.en worker.html.en

slive       02/05/23 07:23:54

  Added:       docs/manual/mod allmodules.html.en core.html.en
                        directives.html.en index.html.en mod_access.html.en
                        mod_actions.html.en mod_alias.html.en
                        mod_asis.html.en mod_auth.html.en
                        mod_auth_anon.html.en mod_auth_dbm.html.en
                        mod_auth_digest.html.en mod_autoindex.html.en
                        mod_cache.html.en mod_cern_meta.html.en
                        mod_cgi.html.en mod_cgid.html.en
                        mod_charset_lite.html.en mod_dav.html.en
                        mod_deflate.html.en mod_dir.html.en mod_env.html.en
                        mod_example.html.en mod_expires.html.en
                        mod_ext_filter.html.en mod_file_cache.html.en
                        mod_headers.html.en mod_imap.html.en
                        mod_include.html.en mod_info.html.en
                        mod_isapi.html.en mod_log_config.html.en
                        mod_mime.html.en mod_mime_magic.html.en
                        mod_negotiation.html.en mod_proxy.html.en
                        mod_rewrite.html.en mod_setenvif.html.en
                        mod_so.html.en mod_speling.html.en mod_ssl.html.en
                        mod_status.html.en mod_suexec.html.en
                        mod_unique_id.html.en mod_userdir.html.en
                        mod_usertrack.html.en mod_vhost_alias.html.en
                        mpm_common.html.en mpm_netware.html.en
                        mpm_winnt.html.en perchild.html.en prefork.html.en
                        worker.html.en
  Log:
  No change here except the filename extensions.  Sorry for the massic commit.
  
  Revision  Changes    Path
  1.1                  httpd-2.0/docs/manual/mod/allmodules.html.en
  
  Index: allmodules.html.en
  ===================================================================
  <modulefilelist>
    <modulefile>core.xml</modulefile>
    <modulefile>mod_access.xml</modulefile>
    <modulefile>mod_actions.xml</modulefile>
    <modulefile>mod_alias.xml</modulefile>
    <modulefile>mod_asis.xml</modulefile>
    <modulefile>mod_auth.xml</modulefile>
    <modulefile>mod_auth_anon.xml</modulefile>
    <modulefile>mod_auth_dbm.xml</modulefile>
    <modulefile>mod_auth_digest.xml</modulefile>
    <modulefile>mod_autoindex.xml</modulefile>
    <modulefile>mod_cache.xml</modulefile>
    <modulefile>mod_cern_meta.xml</modulefile>
    <modulefile>mod_cgi.xml</modulefile>
    <modulefile>mod_cgid.xml</modulefile>
    <modulefile>mod_charset_lite.xml</modulefile>
    <modulefile>mod_dav.xml</modulefile>
    <modulefile>mod_deflate.xml</modulefile>
    <modulefile>mod_dir.xml</modulefile>
    <modulefile>mod_env.xml</modulefile>
    <modulefile>mod_example.xml</modulefile>
    <modulefile>mod_expires.xml</modulefile>
    <modulefile>mod_ext_filter.xml</modulefile>
    <modulefile>mod_file_cache.xml</modulefile>
    <modulefile>mod_headers.xml</modulefile>
    <modulefile>mod_imap.xml</modulefile>
    <modulefile>mod_include.xml</modulefile>
    <modulefile>mod_info.xml</modulefile>
    <modulefile>mod_isapi.xml</modulefile>
    <modulefile>mod_log_config.xml</modulefile>
    <modulefile>mod_mime.xml</modulefile>
    <modulefile>mod_mime_magic.xml</modulefile>
    <modulefile>mod_negotiation.xml</modulefile>
    <modulefile>mod_proxy.xml</modulefile>
    <modulefile>mod_rewrite.xml</modulefile>
    <modulefile>mod_setenvif.xml</modulefile>
    <modulefile>mod_so.xml</modulefile>
    <modulefile>mod_ssl.xml</modulefile>
    <modulefile>mod_speling.xml</modulefile>
    <modulefile>mod_status.xml</modulefile>
    <modulefile>mod_suexec.xml</modulefile>
    <modulefile>mod_unique_id.xml</modulefile>
    <modulefile>mod_userdir.xml</modulefile>
    <modulefile>mod_usertrack.xml</modulefile>
    <modulefile>mod_vhost_alias.xml</modulefile>
    <modulefile>mpm_common.xml</modulefile>
    <modulefile>mpm_netware.xml</modulefile>
    <modulefile>mpm_winnt.xml</modulefile>
    <modulefile>perchild.xml</modulefile>
    <modulefile>prefork.xml</modulefile>
    <modulefile>worker.xml</modulefile>
  </modulefilelist>
  
  
  1.1                  httpd-2.0/docs/manual/mod/core.html.en
  
  Index: core.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>core- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module core</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Core Apache HTTP Server features that are always
  available</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr></table></td></tr></table><h2>Directives</h2><ul><li><a href="#acceptpathinfo">AcceptPathInfo</a></li><li><a href="#accessfilename">AccessFileName</a></li><li><a href="#adddefaultcharset">AddDefaultCharset</a></li><li><a href="#allowoverride">AllowOverride</a></li><li><a href="#authname">AuthName</a></li><li><a href="#authtype">AuthType</a></li><li><a href="#contentdigest">ContentDigest</a></li><li><a href="#defaulttype">DefaultType</a></li><li><a href="#directory">Directory</a></li><li><a href="#directorymatch">DirectoryMatch</a></li><li><a href="#documentroot">DocumentRoot</a></li><li><a href="#enablemmap">EnableMMAP</a></li><li><a href="#errordocument">ErrorDocument</a></li><li><a href="#errorlog">ErrorLog</a></li><li><a href="#fileetag">FileETag</a></li><li><a href="#files">Files</a></li><li><a href="#filesmatch">FilesMatch</a></li><li><a href="#forcetype">ForceType</a></li><li><a href="#hostnamelookups">HostnameLookups</a></li><li><a href="#identitycheck">IdentityCheck</a></li><li><a href="#ifdefine">IfDefine</a></li><li><a href="#ifmodule">IfModule</a></li><li><a href="#include">Include</a></li><li><a href="#keepalive">KeepAlive</a></li><li><a href="#keepalivetimeout">KeepAliveTimeout</a></li><li><a href="#limit">Limit</a></li><li><a href="#limitexcept">LimitExcept</a></li><li><a href="#limitrequestbody">LimitRequestBody</a></li><li><a href="#limitrequestfields">LimitRequestFields</a></li><li><a href="#limitrequestfieldsize">LimitRequestFieldSize</a></li><li><a href="#limitrequestline">LimitRequestLine</a></li><li><a href="#limitxmlrequestbody">LimitXMLRequestBody</a></li><li><a href="#location">Location</a></li><li><a href="#locationmatch">LocationMatch</a></li><li><a href="#loglevel">LogLevel</a></li><li><a href="#maxkeepaliverequests">MaxKeepAliveRequests</a></li><li><a href="#namevirtualhost">NameVirtualHost</a></li><li><a href="#options">Options</a></li><li><a href="#require">Require</a></li><li><a href="#rlimitcpu">RLimitCPU</a></li><li><a href="#rlimitmem">RLimitMEM</a></li><li><a href="#rlimitnproc">RLimitNPROC</a></li><li><a href="#satisfy">Satisfy</a></li><li><a href="#scriptinterpretersource">ScriptInterpreterSource</a></li><li><a href="#serveradmin">ServerAdmin</a></li><li><a href="#serveralias">ServerAlias</a></li><li><a href="#servername">ServerName</a></li><li><a href="#serverpath">ServerPath</a></li><li><a href="#serverroot">ServerRoot</a></li><li><a href="#serversignature">ServerSignature</a></li><li><a href="#servertokens">ServerTokens</a></li><li><a href="#sethandler">SetHandler</a></li><li><a href="#setinputfilter">SetInputFilter</a></li><li><a href="#setoutputfilter">SetOutputFilter</a></li><li><a href="#timeout">TimeOut</a></li><li><a href="#usecanonicalname">UseCanonicalName</a></li><li><a href="#virtualhost">VirtualHost</a></li></ul><hr/><h2><a name="AcceptPathInfo">AcceptPathInfo</a> <a name="acceptpathinfo">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Controls whether requests can contain trailing pathname information</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AcceptPathInfo On|Off|Default</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AcceptPathInfo Default</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in Apache 2.0.30 and later</td></tr></table></td></tr></table>
  
      <p>This directive controls whether requests that contain trailing
      pathname information that follows an actual filename (or
      non-existent file in an existing directory) will be accepted or
      rejected.  The trailing pathname information can be made
      available to scripts in the PATH_INFO environment variable.</p>
  
      <p>For example, assume the location <code>/test/</code> points to
      a directory that contains only the single file
      <code>here.html</code>.  Then requests for
      <code>/test/here.html/more</code> and
      <code>/test/nothere.html/more</code> both collect
      <code>/more</code> as PATH_INFO.</p>
  
      <p>The three possible arguments for the
      <code class="directive">AcceptPathInfo</code> directive are:</p>
      <dl>
      <dt><code>off</code></dt><dd>A request will only be accepted if it
      maps to a literal path that exists.  Therefore a request with
      trailing pathname information after the true filename such as
      <code>/test/here.html/more</code> in the above example will return
      a 404 NOT FOUND error.</dd>
  
      <dt><code>on</code></dt><dd>A request will be accepted if a
      leading path component maps to a file that exists.  The above
      example <code>/test/here.html/more</code> will be accepted if
      <code>/test/here.html</code> maps to a valid file.</dd>
      
      <dt><code>default</code></dt><dd>The treatment of requests with
      trailing pathname information is determined by the <a href="../handler.html">handler</a> responsible for the request.
      The core handler for normal files defaults to rejecting PATH_INFO.
      Handlers that serve scripts, such as <a href="mod_cgi.html">cgi-script</a> and <a href="mod_isapi.html">isapi-isa</a>, generally accept PATH_INFO by
      default.</dd>
      </dl>
  
      <p>The primary purpose of the <code>AcceptPathInfo</code>
      directive is to allow you to override the handler's choice of
      accepting or rejecting PATH_INFO.  This override is required, for
      example, when you use a <a href="../filter.html">filter</a>, such
      as <a href="mod_include.html">INCLUDES</a>, to generate content
      based on PATH_INFO.  The core handler would usually reject the
      request, so you can use the following configuration to enable
      such a script:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  &lt;Files "mypaths.shtml"&gt;<br>
      Options +Includes<br>
      SetOutputFilter INCLUDES<br>
      AcceptPathInfo on<br>
  &lt;/Files&gt;
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="AccessFileName">AccessFileName</a> <a name="accessfilename">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the name of the .htaccess file</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AccessFileName <em>filename</em> [<em>filename</em>] ...</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AccessFileName .htaccess</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>When returning a document to the client the server looks for
      the first existing access control file from this list of names
      in every directory of the path to the document, if access
      control files are enabled for that directory. For example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  AccessFileName .acl
  </code></td></tr></table></blockquote>
  
      <p>before returning the document
      <code>/usr/local/web/index.html</code>, the server will read
      <code>/.acl</code>, <code>/usr/.acl</code>,
      <code>/usr/local/.acl</code> and <code>/usr/local/web/.acl</code>
      for directives, unless they have been disabled with</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  &lt;Directory /&gt;<br>
  &nbsp;&nbsp;AllowOverride None<br>
  &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
  <p><strong>See also </strong></p><ul><li><a href="#allowoverride" class="directive"><code class="directive">AllowOverride</code></a></li><li><a href="../configuring.html">Configuration Files</a></li></ul><hr/><h2><a name="AddDefaultCharset">AddDefaultCharset</a> <a name="adddefaultcharset">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Specifies the default character set to be added for a
  response without an explicit character set</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddDefaultCharset On|Off|<em>charset</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AddDefaultCharset Off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
  
      <p>This directive specifies the name of the character set that
      will be added to any response that does not have any parameter on
      the content type in the HTTP headers. This will override any
      character set specified in the body of the document via a
      <code>META</code> tag. A setting of <code>AddDefaultCharset
      Off</code> disables this
      functionality. <code>AddDefaultCharset On</code> enables
      Apache's internal default charset of <code>iso-8859-1</code> as
      required by the directive. You can also specify an alternate
      <em>charset</em> to be used. For example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AddDefaultCharset utf-8
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="AllowOverride">AllowOverride</a> <a name="allowoverride">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the types of directives that are allowed in
  .htaccess files</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AllowOverride All|None|<em>directive-type</em> [<em>directive-type</em>] ...</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AllowOverride All</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>When the server finds an .htaccess file (as specified by <a href="#accessfilename" class="directive"><code class="directive">AccessFileName</code></a>) it needs to know
      which directives declared in that file can override earlier
      access information.</p>
  
      <p>When this directive is set to <code>None</code>, then
      .htaccess files are completely ignored. In this case, the
      server will not even attempt to read .htaccess files in the
      filesystem.</p>
  
      <p>When this directive is set to <code>All</code>, then any
      directive which has the .htaccess <a href="directive-dict.html#Context">Context</a> is allowed in
      .htaccess files.</p>
  
      <p>The <em>directive-type</em> can be one of the following
      groupings of directives.</p>
  
      <dl>
        <dt>AuthConfig</dt>
  
        <dd>
  
        Allow use of the authorization directives (<a href="mod_auth_dbm.html#authdbmgroupfile" class="directive"><code class="directive">AuthDBMGroupFile</code></a>,
        <a href="mod_auth_dbm.html#authdbmuserfile" class="directive"><code class="directive">AuthDBMUserFile</code></a>,
        <a href="mod_auth.html#authgroupfile" class="directive"><code class="directive">AuthGroupFile</code></a>,
        <a href="#authname" class="directive"><code class="directive">AuthName</code></a>, 
        <a href="#authtype" class="directive"><code class="directive">AuthType</code></a>, <a href="mod_auth.html#authuserfile" class="directive"><code class="directive">AuthUserFile</code></a>, <a href="#require" class="directive"><code class="directive">Require</code></a>, <em>etc.</em>).</dd>
  
        <dt>FileInfo</dt>
  
        <dd>
        Allow use of the directives controlling document types (<a href="#defaulttype" class="directive"><code class="directive">DefaultType</code></a>, <a href="#errordocument" class="directive"><code class="directive">ErrorDocument</code></a>, <a href="#forcetype" class="directive"><code class="directive">ForceType</code></a>, <a href="mod_negotiation.html#languagepriority" class="directive"><code class="directive">LanguagePriority</code></a>,
        <a href="#sethandler" class="directive"><code class="directive">SetHandler</code></a>, <a href="#setinputfilter" class="directive"><code class="directive">SetInputFilter</code></a>, <a href="#setoutputfilter" class="directive"><code class="directive">SetOutputFilter</code></a>, and 
        <code><a href="mod_mime.html">mod_mime</a></code> Add* and Remove*
        directives, <em>etc.</em>).</dd>
  
        <dt>Indexes</dt>
  
        <dd>
        Allow use of the directives controlling directory indexing
        (<a href="mod_autoindex.html#adddescription" class="directive"><code class="directive">AddDescription</code></a>,
        <a href="mod_autoindex.html#addicon" class="directive"><code class="directive">AddIcon</code></a>, <a href="mod_autoindex.html#addiconbyencoding" class="directive"><code class="directive">AddIconByEncoding</code></a>,
        <a href="mod_autoindex.html#addiconbytype" class="directive"><code class="directive">AddIconByType</code></a>,
        <a href="mod_autoindex.html#defaulticon" class="directive"><code class="directive">DefaultIcon</code></a>, <a href="mod_dir.html#directoryindex" class="directive"><code class="directive">DirectoryIndex</code></a>, <a href="mod_autoindex.html#fancyindexing" class="directive"><code class="directive">FancyIndexing</code></a>, <a href="mod_autoindex.html#headername" class="directive"><code class="directive">HeaderName</code></a>, <a href="mod_autoindex.html#indexignore" class="directive"><code class="directive">IndexIgnore</code></a>, <a href="mod_autoindex.html#indexoptions" class="directive"><code class="directive">IndexOptions</code></a>, <a href="mod_autoindex.html#readmename" class="directive"><code class="directive">ReadmeName</code></a>,
        <em>etc.</em>).</dd>
  
        <dt>Limit</dt>
  
        <dd>
        Allow use of the directives controlling host access (<a href="mod_access.html#allow" class="directive"><code class="directive">Allow</code></a>, <a href="mod_access.html#deny" class="directive"><code class="directive">Deny</code></a> and <a href="mod_access.html#order" class="directive"><code class="directive">Order</code></a>).</dd>
  
        <dt>Options</dt>
  
        <dd>
        Allow use of the directives controlling specific directory
        features (<a href="#options" class="directive"><code class="directive">Options</code></a> and
        <a href="mod_include.html#xbithack" class="directive"><code class="directive">XBitHack</code></a>).</dd>
      </dl>
  
      <p>Example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>AllowOverride AuthConfig Indexes</code></td></tr></table></blockquote>
  <p><strong>See also </strong></p><ul><li><a href="#accessfilename" class="directive"><code class="directive">AccessFileName</code></a></li><li><a href="../configuring.html">Configuration Files</a></li></ul><hr/><h2><a name="AuthName">AuthName</a> <a name="authname">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the authorization realm for use in HTTP
  authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthName <em>auth-domain</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive sets the name of the authorization realm for a
      directory. This realm is given to the client so that the user
      knows which username and password to send.
      <code class="directive">AuthName</code> takes a single argument; if the
      realm name contains spaces, it must be enclosed in quotation
      marks.  It must be accompanied by <a href="#authtype" class="directive"><code class="directive">AuthType</code></a> and <a href="#require" class="directive"><code class="directive">Require</code></a> directives, and directives such
      as <a href="mod_auth.html#authuserfile" class="directive"><code class="directive">AuthUserFile</code></a> and
      <a href="mod_auth.html#authgroupfile" class="directive"><code class="directive">AuthGroupFile</code></a> to
      work.</p>
  
     <p>For example:</p>
  
     <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>AuthName "Top Secret"</code></td></tr></table></blockquote>
  
      <p>The string provided for the <code>AuthRealm</code> is what will
      appear in the password dialog provided by most browsers.</p>
  <p><strong>See also </strong></p><ul><li><a href="../howto/auth.html">Authentication, Authorization, and 
      Access Control</a></li></ul><hr/><h2><a name="AuthType">AuthType</a> <a name="authtype">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Selects the type of user authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthType Basic|Digest</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive selects the type of user authentication for a
      directory. Only <code>Basic</code> and <code>Digest</code> are
      currently implemented. 
  
       It must be accompanied by <a href="#authname" class="directive"><code class="directive">AuthName</code></a> and <a href="#require" class="directive"><code class="directive">Require</code></a> directives, and directives such
       as <a href="mod_auth.html#authuserfile" class="directive"><code class="directive">AuthUserFile</code></a> and
       <a href="mod_auth.html#authgroupfile" class="directive"><code class="directive">AuthGroupFile</code></a> to
       work.</p>
  <p><strong>See also </strong></p><ul><li><a href="../howto/auth.html">Authentication, Authorization,
  and Access Control</a></li></ul><hr/><h2><a name="ContentDigest">ContentDigest</a> <a name="contentdigest">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enables the generation of Content-MD5 HTTP Response
  headers</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ContentDigest on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ContentDigest off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Options</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in Apache 1.1 and later</td></tr></table></td></tr></table>
      <p>This directive enables the generation of
      <code>Content-MD5</code> headers as defined in RFC1864
      respectively RFC2068.</p>
  
      <p>MD5 is an algorithm for computing a "message digest"
      (sometimes called "fingerprint") of arbitrary-length data, with
      a high degree of confidence that any alterations in the data
      will be reflected in alterations in the message digest.</p>
  
      <p>The <code>Content-MD5</code> header provides an end-to-end
      message integrity check (MIC) of the entity-body. A proxy or
      client may check this header for detecting accidental
      modification of the entity-body in transit. Example header:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
  </code></td></tr></table></blockquote>
  
      <p>Note that this can cause performance problems on your server
      since the message digest is computed on every request (the
      values are not cached).</p>
  
      <p><code>Content-MD5</code> is only sent for documents served
      by the core, and not by any module. For example, SSI documents,
      output from CGI scripts, and byte range responses do not have
      this header.</p>
  <hr/><h2><a name="DefaultType">DefaultType</a> <a name="defaulttype">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the MIME content-type that will be sent if the
  server cannot determine a type in any other way</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DefaultType <em>MIME-type</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>DefaultType text/plain</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>There will be times when the server is asked to provide a
      document whose type cannot be determined by its MIME types
      mappings.</p>
  
      <p>The server must inform the client of the content-type of the
      document, so in the event of an unknown type it uses the
      <code>DefaultType</code>. For example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        <code>DefaultType image/gif</code>
  </code></td></tr></table></blockquote>
      <p>would be appropriate for a directory which contained many gif
      images with filenames missing the .gif extension.</p>
  
      <p>Note that unlike <a href="#forcetype" class="directive"><code class="directive">ForceType</code></a>, this directive is only
      provides the default mime-type. All other mime-type definitions,
      including filename extensions, that might identify the media type
      will override this default.</p> 
  <hr/><h2><a name="Directory">&lt;Directory&gt;</a> <a name="directory">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enclose a group of directives that apply only to the
  named file-system directory and sub-directories</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;Directory <em>directory-path</em>&gt;
  ... &lt;/Directory&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p><code class="directive">&lt;Directory&gt;</code> and
      <code>&lt;/Directory&gt;</code> are used to enclose a group of
      directives which will apply only to the named directory and
      sub-directories of that directory. Any directive which is allowed
      in a directory context may be used.  <em>Directory-path</em> is
      either the full path to a directory, or a wild-card string. In a
      wild-card string, `?' matches any single character, and `*'
      matches any sequences of characters.  You may
      also use `[]' character ranges like in the shell. Also as of
      Apache 1.3 none of the wildcards match a `/' character, which more
      closely mimics the behavior of Unix shells. Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     &lt;Directory /usr/local/httpd/htdocs&gt;<br>
  &nbsp;&nbsp;Options Indexes FollowSymLinks<br>
     &lt;/Directory&gt;<br>
  </code></td></tr></table></blockquote>
  
      <p>Extended regular
      expressions can also be used, with the addition of the
      <code>~</code> character. For example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     &lt;Directory ~ "^/www/.*/[0-9]{3}"&gt;
  </code></td></tr></table></blockquote>
      <p>would match directories in /www/ that consisted of three
      numbers.</p>
  
      <p>If multiple (non-regular expression) directory sections
      match the directory (or its parents) containing a document,
      then the directives are applied in the order of shortest match
      first, interspersed with the directives from the <a href="#accessfilename">.htaccess</a> files. For example,
      with</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        &lt;Directory /&gt;<br>
         &nbsp;&nbsp;AllowOverride None<br>
         &lt;/Directory&gt;<br>
        <br>
         &lt;Directory /home/*&gt;<br>
         &nbsp;&nbsp;AllowOverride FileInfo<br>
         &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
      <p>for access to the document <code>/home/web/dir/doc.html</code>
      the steps are:</p>
  
      <ul>
        <li>Apply directive <code>AllowOverride None</code>
        (disabling <code>.htaccess</code> files).</li>
  
        <li>Apply directive <code>AllowOverride FileInfo</code> (for
        directory <code>/home/web</code>).</li>
  
        <li>Apply any FileInfo directives in
        <code>/home/web/.htaccess</code></li>
      </ul>
  
      <p>Regular expressions are not considered until after all of the
      normal sections have been applied. Then all of the regular
      expressions are tested in the order they appeared in the
      configuration file. For example, with</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>&lt;Directory ~ abc$&gt;<br>
         ... directives here ...<br>
         &lt;/Directory&gt;<br>
  </code></td></tr></table></blockquote>
  
      <p>The regular expression section won't be considered until after
      all normal &lt;Directory&gt;s and <code>.htaccess</code> files
      have been applied. Then the regular expression will match on
      <code>/home/abc/public_html/abc</code> and be applied.</p>
  
     <p><strong>Note that the default Apache access for
      &lt;Directory /&gt; is <code>Allow from All</code>. This means
      that Apache will serve any file mapped from an URL. It is
      recommended that you change this with a block such
      as</strong></p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
   &lt;Directory /&gt;<br>
       &nbsp;&nbsp;Order Deny,Allow<br>
       &nbsp;&nbsp;Deny from All<br>
   &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
  
      <p><strong>and then override this for directories you
      <em>want</em> accessible. See the <a href="../misc/security_tips.html">Security Tips</a> page for more
      details.</strong></p> 
  
      <p>The directory sections typically occur in
      the access.conf file, but they may appear in any configuration
      file.  <code class="directive">&lt;Directory&gt;</code> directives
      cannot nest, and cannot appear in a <a href="#limit" class="directive"><code class="directive">&lt;Limit&gt;</code></a> or <a href="#limitexcept" class="directive"><code class="directive">&lt;LimitExcept&gt;</code></a> section.</p>
  <p><strong>See also </strong></p><ul><li><a href="../sections.html">How
      Directory, Location and Files sections work</a> for an
      explanation of how these different sections are combined when a
      request is received</li></ul><hr/><h2><a name="DirectoryMatch">&lt;DirectoryMatch&gt;</a> <a name="directorymatch">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enclose a group of directives that apply only to 
  file-system directories that match a regular expression and their
  subdirectories</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;Directory <em>regex</em>&gt;
  ... &lt;/Directory&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p><code class="directive">&lt;DirectoryMatch&gt;</code> and
      <code>&lt;/DirectoryMatch&gt;</code> are used to enclose a group
      of directives which will apply only to the named directory and
      sub-directories of that directory, the same as <a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a>. However, it
      takes as an argument a regular expression. For example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     &lt;DirectoryMatch "^/www/.*/[0-9]{3}"&gt;
  </code></td></tr></table></blockquote>
  
      <p>would match directories in <code>/www/</code> that consisted of three
      numbers.</p>
  <p><strong>See also </strong></p><ul><li><a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a> for
  a description of how regular expressions are mixed in with normal
  <code>&lt;Directory&gt;</code>s</li><li><a href="../sections.html">How Directory, Location and Files sections
  work</a> for an explanation of how these different sections are
  combined when a request is received</li></ul><hr/><h2><a name="DocumentRoot">DocumentRoot</a> <a name="documentroot">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the directory that forms the main document tree visible
  from the web</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DocumentRoot <em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>DocumentRoot /usr/local/apache/htdocs</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive sets the directory from which httpd will
      serve files. Unless matched by a directive like Alias, the
      server appends the path from the requested URL to the document
      root to make the path to the document. Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     DocumentRoot /usr/web
  </code></td></tr></table></blockquote>
      <p>then an access to
      <code>http://www.my.host.com/index.html</code> refers to
      <code>/usr/web/index.html</code>.</p>
  
      <p>The <code class="directive">DocumentRoot</code> should be specified without
      a trailing slash.</p>
  <p><strong>See also </strong></p><ul><li><a href="../urlmapping.html">Mapping URLs to Filesystem
  Location</a></li></ul><hr/><h2><a name="EnableMMAP">EnableMMAP</a> <a name="enablemmap">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Controls whether the httpd uses memory-mapping to read files
  during delivery</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>EnableMMAP on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>EnableMMAP on</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive controls whether the httpd may use memory-mapping
      if it needs to read the contents of a file during delivery.  By default,
      when the handling of a request requires access to the data within a file--
      for example, when delivering a server-parsed file using <code><a href="mod_include.html">mod_include</a></code>--
      Apache memory-maps the file if the OS supports it.
      </p>
      <p>
      This memory-mapping sometimes yields a performance improvement.
      But in some environments, it is better to disable the memory-mapping
      to prevent operational problems:
      </p>
      <ul>
      <li>On some multiprocessor systems, memory-mapping can reduce the
      performance of the httpd.</li>
      <li>With an NFS-mounted <a href="#documentroot" class="directive"><code class="directive">DocumentRoot</code></a>,
      the httpd may crash due tof a segmentation fault if a file is deleted
      or truncated while the httpd has it memory-mapped.</li>
      </ul>
      <p>
      For server configurations that are vulnerable to these problems,
      you should disable memory-mapping of delivered files by specifying:
      </p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     EnableMMAP off
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="ErrorDocument">ErrorDocument</a> <a name="errordocument">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Specifies what the server will return to the client
  in case of an error</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ErrorDocument <em>error-code document</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Quoting syntax for text messages is different in Apache
  2.0</td></tr></table></td></tr></table>
      <p>In the event of a problem or error, Apache can be configured
      to do one of four things,</p>
  
      <ol>
        <li>output a simple hardcoded error message</li>
  
        <li>output a customized message</li>
  
        <li>redirect to a local <em>URL-path</em> to handle the
        problem/error</li>
  
        <li>redirect to an external <em>URL</em> to handle the
        problem/error</li>
      </ol>
  
      <p>The first option is the default, while options 2-4 are
      configured using the <code class="directive">ErrorDocument</code>
      directive, which is followed by the HTTP response code and a URL
      or a message. Apache will sometimes offer additional information
      regarding the problem/error.</p>
  
      <p>URLs can begin with a slash (/) for local URLs, or be a full
      URL which the client can resolve. Alternatively, a message can
      be provided to be displayed by the browser. Examples:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><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></td></tr></table></blockquote>
  
      <p>Note that when you specify an <code class="directive">ErrorDocument</code>
      that points to a remote URL (ie. anything with a method such as
      "http" in front of it), Apache will send a redirect to the
      client to tell it where to find the document, even if the
      document ends up being on the same server. This has several
      implications, the most important being that the client will not
      receive the original error status code, but instead will
      receive a redirect status code. This in turn can confuse web
      robots and other clients which try to determine if a URL is
      valid using the status code. In addition, if you use a remote
      URL in an <code>ErrorDocument 401</code>, the client will not
      know to prompt the user for a password since it will not
      receive the 401 status code. Therefore, <strong>if you use an
      "ErrorDocument 401" directive then it must refer to a local
      document.</strong></p>
  
      <p>Prior to version 2.0, messages were indicated by prefixing
      them with a single unmatched double quote character.</p>
  <p><strong>See also </strong></p><ul><li><a href="../custom-error.html">documentation of
      customizable responses</a></li></ul><hr/><h2><a name="ErrorLog">ErrorLog</a> <a name="errorlog">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the name of the file to which the server
  will log errors</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td> ErrorLog <em>file-path</em>|syslog[:<em>facility</em>]</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ErrorLog logs/error_log (Unix)
  ErrorLog logs/error.log (Windows and OS/2)</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">ErrorLog</code> directive sets the name of
      the file to which the server will log any errors it encounters. If
      the <em>file-path</em> does not begin with a slash (/) then it is
      assumed to be relative to the <a href="#serverroot" class="directive"><code class="directive">ServerRoot</code></a>. If the <em>file-path</em>
      begins with a pipe (|) then it is assumed to be a command to spawn
      to handle the error log.</p>
  
      <p>Using <code>syslog</code> instead of a filename enables logging
      via syslogd(8) if the system supports it. The default is to use
      syslog facility <code>local7</code>, but you can override this by
      using the <code>syslog:</code><em>facility</em> syntax where
      <em>facility</em> can be one of the names usually documented in
      syslog(1).</p>
  
      <p>SECURITY: See the <a href="../misc/security_tips.html#serverroot">security tips</a>
      document for details on why your security could be compromised
      if the directory where logfiles are stored is writable by
      anyone other than the user that starts the server.</p>
  <p><strong>See also </strong></p><ul><li><a href="#loglevel" class="directive"><code class="directive">LogLevel</code></a></li><li><a href="../logs.html">Apache Log Files</a></li></ul><hr/><h2><a name="FileETag">FileETag</a> <a name="fileetag">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures the file attributes used to create the ETag
  HTTP response header</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>FileETag <em>component</em> ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>
      The <code class="directive">FileETag</code> directive configures the file
      attributes that are used to create the ETag (entity tag) response
      header field when the document is based on a file.  (The ETag
      value is used in cache management to save network bandwidth.)  In
      Apache 1.3.22 and earlier, the ETag value was <em>always</em> formed
      from the file's inode, size, and last-modified time (mtime).  The
      FileETag directive allows you to choose which of these -- if any
      -- should be used.  The recognized keywords are:
      </p>
      <dl>
       <dt><strong>INode</strong></dt>
       <dd>The file's i-node number will be included in the calculation</dd>
       <dt><strong>MTime</strong></dt>
       <dd>The date and time the file was last modified will be included</dd>
       <dt><strong>Size</strong></dt>
       <dd>The number of bytes in the file will be included</dd>
       <dt><strong>All</strong></dt>
       <dd>All available fields will be used (equivalent to
        '<code>FileETag&nbsp;INode&nbsp;MTime&nbsp;Size</code>')</dd>
       <dt><strong>None</strong></dt>
       <dd>If a document is file-based, no ETag field will be included in the
        response</dd>
      </dl>
      <p>
      The INode, MTime, and Size keywords may be prefixed with either '+'
      or '-', which allow changes to be made to the default setting
      inherited from a broader scope.  Any keyword appearing without
      such a prefix immediately and completely cancels the inherited
      setting.
      </p>
      <p>
      If a directory's configuration includes
      '<code>FileETag&nbsp;INode&nbsp;MTime&nbsp;Size</code>', and a
      subdirectory's includes '<code>FileETag&nbsp;-INode</code>',
      the setting for that subdirectory (which will be inherited by
      any sub-subdirectories that don't override it) will be equivalent to
      '<code>FileETag&nbsp;MTime&nbsp;Size</code>'.
      </p>
  <hr/><h2><a name="Files">&lt;Files&gt;</a> <a name="files">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Contains that directives that apply to matched
  filenames</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;Files <em>filename</em>&gt; ... &lt;/Files&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">&lt;Files&gt;</code> directive
      provides for access control by filename. It is comparable to the
      <a href="#directory" class="directive"><code class="directive">Directory</code></a>
      directive and <a href="#location" class="directive"><code class="directive">Location</code></a> directives. It should be
      matched with a <code>&lt;/Files&gt;</code> directive. The
      directives given within this section will be applied to any object
      with a basename (last component of filename) matching the
      specified filename. <code class="directive">&lt;Files&gt;</code>
      sections are processed in the order they appear in the
      configuration file, after the <a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a> sections and
      <code>.htaccess</code> files are read, but before <a href="#location" class="directive"><code class="directive">&lt;Location&gt;</code></a> sections. Note
      that <code class="directive">&lt;Files&gt;</code> can be nested
      inside <a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a> sections to restrict the
      portion of the filesystem they apply to.</p>
  
      <p>The <em>filename</em> argument should include a filename, or
      a wild-card string, where `?' matches any single character, and
      `*' matches any sequences of characters. Extended regular
      expressions can also be used, with the addition of the
      <code>~</code> character. For example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     &lt;Files ~ "\.(gif|jpe?g|png)$"&gt;
  </code></td></tr></table></blockquote>
      <p>would match most common Internet graphics formats. In Apache 1.3
      and later, <a href="#filesmatch" class="directive"><code class="directive">&lt;FilesMatch&gt;</code></a> is preferred, however.</p>
  
      <p>Note that unlike <a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a> and <a href="#location" class="directive"><code class="directive">&lt;Location&gt;</code></a> sections, <code class="directive">&lt;Files&gt;</code> sections can be used inside
      .htaccess files. This allows users to control access to their own
      files, at a file-by-file level.</p>
  
  <p><strong>See also </strong></p><ul><li><a href="../sections.html">How
      Directory, Location and Files sections work</a> for an
      explanation of how these different sections are combined when a
      request is received</li></ul><hr/><h2><a name="FilesMatch">&lt;FilesMatch&gt;</a> <a name="filesmatch">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Contains that directives that apply to regular-expression matched
  filenames</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;FilesMatch <em>regex</em>&gt; ... &lt;/FilesMatch&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">&lt;FilesMatch&gt;</code> directive
      provides for access control by filename, just as the <a href="#files" class="directive"><code class="directive">&lt;Files&gt;</code></a> directive
      does. However, it accepts a regular expression. For example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     &lt;FilesMatch "\.(gif|jpe?g|png)$"&gt;
  </code></td></tr></table></blockquote>
  
      <p>would match most common Internet graphics formats.</p>
  <p><strong>See also </strong></p><ul><li><a href="../sections.html">How
      Directory, Location and Files sections work</a> for an
      explanation of how these different sections are combined when a
      request is received</li></ul><hr/><h2><a name="ForceType">ForceType</a> <a name="forcetype">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Forces all matching files to be served with the specified
  MIME content-type</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ForceType <em>mime-type</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Moved to the core in Apache 2.0</td></tr></table></td></tr></table>
      <p>When placed into an <code>.htaccess</code> file or a
      <a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a>, or
      <a href="#location" class="directive"><code class="directive">&lt;Location&gt;</code></a> or 
      <a href="#files" class="directive"><code class="directive">&lt;Files&gt;</code></a>
      section, this directive forces all matching files to be served
      with the content type identification given by
      <em>mime-type</em>. For example, if you had a directory full of
      GIF files, but did not want to label them all with ".gif", you
      might want to use:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      ForceType image/gif
  </code></td></tr></table></blockquote>
  
      <p>Note that unlike <a href="#defaulttype" class="directive"><code class="directive">DefaultType</code></a>,
      this directive overrides all mime-type associations, including
      filename extensions, that might identify the media type.</p>
  <hr/><h2><a name="HostnameLookups">HostnameLookups</a> <a name="hostnamelookups">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enables DNS lookups on client IP addresses</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>HostnameLookups on|off|double</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>HostnameLookups off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive enables DNS lookups so that host names can be
      logged (and passed to CGIs/SSIs in <code>REMOTE_HOST</code>).
      The value <code>double</code> refers to doing double-reverse
      DNS. That is, after a reverse lookup is performed, a forward
      lookup is then performed on that result. At least one of the ip
      addresses in the forward lookup must match the original
      address. (In "tcpwrappers" terminology this is called
      <code>PARANOID</code>.)</p>
  
      <p>Regardless of the setting, when <code><a href="mod_access.html">mod_access</a></code> is
      used for controlling access by hostname, a double reverse lookup
      will be performed.  This is necessary for security. Note that the
      result of this double-reverse isn't generally available unless you
      set <code>HostnameLookups double</code>. For example, if only
      <code>HostnameLookups on</code> and a request is made to an object
      that is protected by hostname restrictions, regardless of whether
      the double-reverse fails or not, CGIs will still be passed the
      single-reverse result in <code>REMOTE_HOST</code>.</p>
  
      <p>The default is off in order to save the network
      traffic for those sites that don't truly need the reverse
      lookups done. It is also better for the end users because they
      don't have to suffer the extra latency that a lookup entails.
      Heavily loaded sites should leave this directive
      <code>off</code>, since DNS lookups can take considerable
      amounts of time. The utility <a href="../programs/logresolve.html">logresolve</a>, provided in
      the <em>/support</em> directory, can be used to look up host
      names from logged IP addresses offline.</p>
  <hr/><h2><a name="IdentityCheck">IdentityCheck</a> <a name="identitycheck">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enables logging of the RFC1413 identity of the remote 
  user</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>IdentityCheck on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>IdentityCheck off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive enables RFC1413-compliant logging of the
      remote user name for each connection, where the client machine
      runs identd or something similar. This information is logged in
      the access log.</p>
  
      <p>The information should not be trusted in any way except for
      rudimentary usage tracking.</p>
  
      <p>Note that this can cause serious latency problems accessing
      your server since every request requires one of these lookups
      to be performed. When firewalls are involved each lookup might
      possibly fail and add 30 seconds of latency to each hit. So in
      general this is not very useful on public servers accessible
      from the Internet.</p>
  <hr/><h2><a name="IfDefine">&lt;IfDefine&gt;</a> <a name="ifdefine">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Encloses directives that will be processed only
  if a test is true at startup</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;IfDefine [!]<em>parameter-name</em>&gt; <em>...</em>
      &lt;/IfDefine&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code>&lt;IfDefine
      <em>test</em>&gt;...&lt;/IfDefine&gt;</code> section is used to
      mark directives that are conditional. The directives within an
      <code class="directive">&lt;IfDefine&gt;</code> section are only
      processed if the <em>test</em> is true. If <em>test</em> is false,
      everything between the start and end markers is ignored.</p>
  
      <p>The <em>test</em> in the <code class="directive">&lt;IfDefine&gt;</code> section directive can be one
      of two forms:</p>
  
      <ul>
        <li><em>parameter-name</em></li>
  
        <li><code>!</code><em>parameter-name</em></li>
      </ul>
  
      <p>In the former case, the directives between the start and end
      markers are only processed if the parameter named
      <em>parameter-name</em> is defined. The second format reverses
      the test, and only processes the directives if
      <em>parameter-name</em> is <strong>not</strong> defined.</p>
  
      <p>The <em>parameter-name</em> argument is a define as given on
      the <code>httpd</code> command line via
      <code>-D</code><em>parameter-</em>, at the time the server was
      started.</p>
  
      <p><code class="directive">&lt;IfDefine&gt;</code> sections are
      nest-able, which can be used to implement simple
      multiple-parameter tests. Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code><pre>
    $ httpd -DReverseProxy ...
  
    # httpd.conf
    &lt;IfDefine ReverseProxy&gt;
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule proxy_module   modules/libproxy.so
    &lt;/IfDefine&gt;
  </pre></code></td></tr></table></blockquote>
  
  <hr/><h2><a name="IfModule">&lt;IfModule&gt;</a> <a name="ifmodule">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Encloses directives that are processed conditional on the
  presence of absence of a specific module</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;IfModule [!]<em>module-name</em>&gt; <em>...</em>
      &lt;/IfModule&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code>&lt;IfModule
      <em>test</em>&gt;...&lt;/IfModule&gt;</code> section is used to
      mark directives that are conditional. The directives within an
      <code class="directive">&lt;IfModule&gt;</code> section are only
      processed if the <em>test</em> is true. If <em>test</em> is false,
      everything between the start and end markers is ignored.</p>
  
      <p>The <em>test</em> in the <code class="directive">&lt;IfModule&gt;</code> section directive can be one
      of two forms:</p>
  
      <ul>
        <li><em>module name</em></li>
  
        <li>!<em>module name</em></li>
      </ul>
  
      <p>In the former case, the directives between the start and end
      markers are only processed if the module named <em>module
      name</em> is included in Apache -- either compiled in or
      dynamically loaded using <a href="mod_so.html#loadmodule" class="directive"><code class="directive">LoadModule</code></a>. The second format
      reverses the test, and only processes the directives if <em>module
      name</em> is <strong>not</strong> included.</p>
  
      <p>The <em>module name</em> argument is the file name of the
      module, at the time it was compiled.
      For example, <code>mod_rewrite.c</code>.</p>
  
      <p><code class="directive">&lt;IfModule&gt;</code> sections are
      nest-able, which can be used to implement simple multiple-module
      tests.</p>
  <hr/><h2><a name="Include">Include</a> <a name="include">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Includes other configuration files from within
  the server configuration files</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Include <em>file-path</em>|<em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive allows inclusion of other configuration files
      from within the server configuration files.</p>
  
      <p>If <code class="directive">Include</code> points to a directory, rather than a
      file, Apache will read all files in that directory, and any
      subdirectory, and parse those as configuration files.</p>
  
      <p>The file path specified may be a fully qualified path (i.e.
      starting with a slash), or may be relative to the 
      <a href="#serverroot" class="directive"><code class="directive">ServerRoot</code></a> directory.</p>
  
      <p>Examples:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
       Include /usr/local/apache/conf/ssl.conf<br>
       Include /usr/local/apache/conf/vhosts/
  </code></td></tr></table></blockquote>
  
       <p>Or, providing paths relative to your <code>ServerRoot</code>
       directory:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
       Include conf/ssl.conf<br>
       Include conf/vhosts/
  </code></td></tr></table></blockquote>
  
       <p>Make sure that an included directory does not contain any stray
       files, such as editor temporary files, for example, as Apache will
       attempt to read them in and use the contents as configuration
       directives, which may cause the server to fail on start up.
       Running <code>apachectl configtest</code> will give you a list of
       the files that are being processed during the configuration
       check:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code><pre>
   root@host# apachectl configtest
    Processing config directory: /usr/local/apache/conf/vhosts
    Processing config file: /usr/local/apache/conf/vhosts/vhost1
    Processing config file: /usr/local/apache/conf/vhosts/vhost2
   Syntax OK
  </pre></code></td></tr></table></blockquote>
  
       <p>This will help in verifying that you are getting only the files
       that you intended as part of your configuration.</p>
  <p><strong>See also </strong></p><ul><li><a href="../programs/apachectl.html">apachectl</a></li></ul><hr/><h2><a name="KeepAlive">KeepAlive</a> <a name="keepalive">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Turns on or off HTTP persistent connections.</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>KeepAlive on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>KeepAlive On</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The Keep-Alive extension to HTTP/1.0 and the persistent
      connection feature of HTTP/1.1 provide long-lived HTTP sessions
      which allow multiple requests to be sent over the same TCP
      connection. In some cases this has been shown to result in an
      almost 50% speedup in latency times for HTML documents with
      many images. To enable Keep-Alive connections in Apache 1.2 and
      later, set <code>KeepAlive On</code>.</p>
  
      <p>For HTTP/1.0 clients, Keep-Alive connections will only be
      used if they are specifically requested by a client. In
      addition, a Keep-Alive connection with an HTTP/1.0 client can
      only be used when the length of the content is known in
      advance. This implies that dynamic content such as CGI output,
      SSI pages, and server-generated directory listings will
      generally not use Keep-Alive connections to HTTP/1.0 clients.
      For HTTP/1.1 clients, persistent connections are the default
      unless otherwise specified. If the client requests it, chunked
      encoding will be used in order to send content of unknown
      length over persistent connections.</p>
  <p><strong>See also </strong></p><ul><li><a href="#maxkeepaliverequests" class="directive"><code class="directive">MaxKeepAliveRequests</code></a></li></ul><hr/><h2><a name="KeepAliveTimeout">KeepAliveTimeout</a> <a name="keepalivetimeout">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the amount of time the server will wait for subsequent
  requests on a persistent connection</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>KeepAliveTimeout <em>seconds</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>KeepAliveTimeout 15</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The number of seconds Apache will wait for a subsequent
      request before closing the connection. Once a request has been
      received, the timeout value specified by the
      <a href="#timeout" class="directive"><code class="directive">Timeout</code></a> directive applies.</p>
  
      <p>Setting <code class="directive">KeepAliveTimeout</code> to a high value
      may cause performance problems in heavily loaded servers. The
      higher the timeout, the more server processes will be kept
      occupied waiting on connections with idle clients.</p>
  <hr/><h2><a name="Limit">&lt;Limit&gt;</a> <a name="limit">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Restrict access controls to only certain HTTP
  methods</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;Limit <em>method</em> [<em>method</em>] ... &gt; ...
      &lt;/Limit&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>Access controls are normally effective for
      <strong>all</strong> access methods, and this is the usual
      desired behavior. <strong>In the general case, access control
      directives should not be placed within a
      <code class="directive">&lt;limit&gt;</code> section.</strong></p>
  
      <p>The purpose of the <code class="directive">&lt;Limit&gt;</code>
      directive is to restrict the effect of the access controls to the
      nominated HTTP methods. For all other methods, the access
      restrictions that are enclosed in the <code>&lt;Limit&gt;</code>
      bracket <strong>will have no effect</strong>. The following
      example applies the access control only to the methods POST, PUT,
      and DELETE, leaving all other methods unprotected:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        <code>&lt;Limit POST PUT DELETE&gt;<br>
         &nbsp;&nbsp;Require valid-user<br>
         &lt;/Limit&gt;</code>
  </code></td></tr></table></blockquote>
      <p>The method names listed can be one or more of: GET, POST, PUT,
      DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH,
      MKCOL, COPY, MOVE, LOCK, and UNLOCK. <strong>The method name is
      case-sensitive.</strong> If GET is used it will also restrict
      HEAD requests.</p>
  <hr/><h2><a name="LimitExcept">&lt;LimitExcept&gt;</a> <a name="limitexcept">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Restrict access controls to all HTTP methods
  except the named ones</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;LimitExcept <em>method</em> [<em>method</em>] ... &gt; ...
      &lt;/LimitExcept&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p><code class="directive">&lt;LimitExcept&gt;</code> and
      <code>&lt;/LimitExcept&gt;</code> are used to enclose
      a group of access control directives which will then apply to any
      HTTP access method <strong>not</strong> listed in the arguments; 
      i.e., it is the opposite of a <a href="#limit" class="directive"><code class="directive">&lt;Limit&gt;</code></a> section and can be used to control
      both standard and nonstandard/unrecognized methods. See the
      documentation for <a href="#limit" class="directive"><code class="directive">&lt;Limit&gt;</code></a> for more details.</p>
  
      <p>For example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;LimitExcept POST GET&gt;<br>
      Require valid-user<br>
      &lt;LimitExcept&gt;
      </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="LimitRequestBody">LimitRequestBody</a> <a name="limitrequestbody">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Restricts the total size of the HTTP request body sent
  from the client</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LimitRequestBody <em>bytes</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>LimitRequestBody 0</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive specifies the number of <em>bytes</em> from 0
      (meaning unlimited) to 2147483647 (2GB) that are allowed in a
      request body. The default value is defined by the compile-time
      constant <code>DEFAULT_LIMIT_REQUEST_BODY</code> (0 as
      distributed).</p>
  
      <p>The <code class="directive">LimitRequestBody</code> directive allows
      the user to set a limit on the allowed size of an HTTP request
      message body within the context in which the directive is given
      (server, per-directory, per-file or per-location). If the client
      request exceeds that limit, the server will return an error
      response instead of servicing the request. The size of a normal
      request message body will vary greatly depending on the nature of
      the resource and the methods allowed on that resource. CGI scripts
      typically use the message body for passing form information to the
      server. Implementations of the PUT method will require a value at
      least as large as any representation that the server wishes to
      accept for that resource.</p>
  
      <p>This directive gives the server administrator greater
      control over abnormal client request behavior, which may be
      useful for avoiding some forms of denial-of-service
      attacks.</p>
  
      <p>If, for example, you are permitting file upload to a particular
      location, and wich to limit the size of the uploaded file to 100K,
      you might use the following directive:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      LimitRequestBody 102400
      </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="LimitRequestFields">LimitRequestFields</a> <a name="limitrequestfields">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Limits the number of HTTP request header fields that 
  will be accepted from the client</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LimitRequestFields <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>LimitRequestFields 100</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p><em>Number</em> is an integer from 0 (meaning unlimited) to
      32767. The default value is defined by the compile-time
      constant <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> (100 as
      distributed).</p>
  
      <p>The <code class="directive">LimitRequestFields</code> directive allows
      the server administrator to modify the limit on the number of
      request header fields allowed in an HTTP request. A server needs
      this value to be larger than the number of fields that a normal
      client request might include. The number of request header fields
      used by a client rarely exceeds 20, but this may vary among
      different client implementations, often depending upon the extent
      to which a user has configured their browser to support detailed
      content negotiation. Optional HTTP extensions are often expressed
      using request header fields.</p>
  
      <p>This directive gives the server administrator greater
      control over abnormal client request behavior, which may be
      useful for avoiding some forms of denial-of-service attacks.
      The value should be increased if normal clients see an error
      response from the server that indicates too many fields were
      sent in the request.</p>
  
      <p>For example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      LimitRequestFields 50
      </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="LimitRequestFieldSize">LimitRequestFieldSize</a> <a name="limitrequestfieldsize">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Limits the size of the HTTP request header allowed from the
  client</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LimitRequestFieldsize <em>bytes</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>LimitRequestFieldsize 8190</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive specifies the number of <em>bytes</em> from 0
      to the value of the compile-time constant
      <code>DEFAULT_LIMIT_REQUEST_FIELDSIZE</code> (8190 as
      distributed) that will be allowed in an HTTP request
      header.</p>
  
      <p>The <code class="directive">LimitRequestFieldsize</code> directive
      allows the server administrator to reduce the limit on the allowed
      size of an HTTP request header field below the normal input buffer
      size compiled with the server. A server needs this value to be
      large enough to hold any one header field from a normal client
      request. The size of a normal request header field will vary
      greatly among different client implementations, often depending
      upon the extent to which a user has configured their browser to
      support detailed content negotiation.</p>
  
      <p>This directive gives the server administrator greater
      control over abnormal client request behavior, which may be
      useful for avoiding some forms of denial-of-service attacks.</p>
  
      <p>For example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      LimitRequestFieldSize 16380
      </code></td></tr></table></blockquote>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5">Under normal conditions, the value should not be changed from
      the default.</td></tr></table></blockquote>
  
  <hr/><h2><a name="LimitRequestLine">LimitRequestLine</a> <a name="limitrequestline">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Limit the size of the HTTP request line that will be accepted
  from the client</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LimitRequestLine <em>bytes</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>LimitRequestLine 8190</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive sets the number of <em>bytes</em> from 0 to
      the value of the compile-time constant
      <code>DEFAULT_LIMIT_REQUEST_LINE</code> (8190 as distributed)
      that will be allowed on the HTTP request-line.</p>
  
      <p>The <code class="directive">LimitRequestLine</code> directive allows
      the server administrator to reduce the limit on the allowed size
      of a client's HTTP request-line below the normal input buffer size
      compiled with the server. Since the request-line consists of the
      HTTP method, URI, and protocol version, the
      <code class="directive">LimitRequestLine</code> directive places a
      restriction on the length of a request-URI allowed for a request
      on the server. A server needs this value to be large enough to
      hold any of its resource names, including any information that
      might be passed in the query part of a GET request.</p>
  
      <p>This directive gives the server administrator greater
      control over abnormal client request behavior, which may be
      useful for avoiding some forms of denial-of-service attacks.</p>
  
      <p>For example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      LimitRequestLine 16380
      </code></td></tr></table></blockquote>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5">Under normal conditions, the value should not be changed from
      the default.</td></tr></table></blockquote>
  <hr/><h2><a name="LimitXMLRequestBody">LimitXMLRequestBody</a> <a name="limitxmlrequestbody">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Limits the size of an XML-based request body</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LimitXMLRequestBody <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>LimitXMLRequestBody 1000000</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>Limit (in bytes) on maximum size of an XML-based request
      body. A value of <code>0</code> will disable any checking.</p>
  
      <p>Example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      LimitXMLRequestBody 0
      </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="Location">&lt;Location&gt;</a> <a name="location">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Applies the enclosed directives only to matching
  URLs</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;Location
      URL-path|URL&gt; ... &lt;/Location&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">&lt;Location&gt;</code> directive
      provides for access control by URL. It is similar to the
      <a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a>
      directive, and starts a subsection which is terminated with a
      <code>&lt;/Location&gt;</code> directive. <code class="directive">&lt;Location&gt;</code> sections are processed in the
      order they appear in the configuration file, after the <a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a> sections and
      <code>.htaccess</code> files are read, and after the <a href="#files" class="directive"><code class="directive">&lt;Files&gt;</code></a> sections.</p>
  
      <p>Note that URLs do not have to line up with the filesystem at
      all, it should be emphasized that &lt;Location&gt; operates
      completely outside the filesystem.</p>
  
      <p>For all origin (non-proxy) requests, the URL to be matched is a
      URL-path of the form <code>/path/</code>.  No scheme, hostname,
      port, or query string may be included.  For proxy requests, the
      URL to be matched is of the form
      <code>scheme://servername/path</code>, and you must include the
      prefix.</p>
  
      <p>The URL may use wildcards In a wild-card string, `?' matches
      any single character, and `*' matches any sequences of
      characters.</p>
  
      <p>Extended regular
      expressions can also be used, with the addition of the
      <code>~</code> character. For example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     &lt;Location ~ "/(extra|special)/data"&gt;
  </code></td></tr></table></blockquote>
  
      <p>would match URLs that contained the substring "/extra/data" or
      "/special/data". In Apache 1.3 and above, a new directive
      <a href="#locationmatch" class="directive"><code class="directive">&lt;LocationMatch&gt;</code></a>
      exists which behaves identical to the regex version of
      <code class="directive">&lt;Location&gt;</code>.</p>
  
      <p>The <code class="directive">&lt;Location&gt;</code>
      functionality is especially useful when combined with the
      <a href="#sethandler" class="directive"><code class="directive">SetHandler</code></a>
      directive. For example, to enable status requests, but allow them
      only from browsers at foo.com, you might use:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;Location /status&gt;<br>
      SetHandler server-status<br>
      Order Deny,Allow<br>
      Deny from all<br>
      Allow from .foo.com<br>
      &lt;/Location&gt;
  </code></td></tr></table></blockquote>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note about / (slash)</strong></p> <p>The slash character has
  special meaning depending on where in a URL it appears. People may be
  used to its behavior in the filesystem where multiple adjacent slashes
  are frequently collapsed to a single slash (<em>i.e.</em>,
  <code>/home///foo</code> is the same as <code>/home/foo</code>). In
  URL-space this is not necessarily true. The <a href="#locationmatch" class="directive"><code class="directive">&lt;LocationMatch&gt;</code></a> directive and the regex
  version of <code class="directive">&lt;Location&gt;</code> require you
  to explicitly specify multiple slashes if that is your intention.  For
  example, <code>&lt;LocationMatch ^/abc&gt;</code> would match the
  request URL <code>/abc</code> but not the request URL
  <code>//abc</code>. The (non-regex) <code class="directive">&lt;Location&gt;</code> directive behaves similarly when
  used for proxy requests. But when (non-regex) <code class="directive">&lt;Location&gt;</code> is used for non-proxy requests it
  will implicitly match multiple slashes with a single slash. For
  example, if you specify <code>&lt;Location /abc/def&gt;</code> and the
  request is to <code>/abc//def</code> then it will match.</p>
  </td></tr></table></blockquote>
  <p><strong>See also </strong></p><ul><li><a href="../sections.html">How
      Directory, Location and Files sections work</a> for an
      explanation of how these different sections are combined when a
      request is received</li></ul><hr/><h2><a name="LocationMatch">&lt;LocationMatch&gt;</a> <a name="locationmatch">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Applies the enclosed directives only to regular-expression 
  matching URLs</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;LocationMatch
      <em>regex</em>&gt; ... &lt;/Location&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">&lt;LocationMatch&gt;</code> directive
      provides for access control by URL, in an identical manner to
      <a href="#location" class="directive"><code class="directive">&lt;Location&gt;</code></a>. However, it takes a regular
      expression as an argument instead of a simple string.  For
      example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     &lt;LocationMatch "/(extra|special)/data"&gt;
  </code></td></tr></table></blockquote>
  
      <p>would match URLs that contained the substring "/extra/data"
      or "/special/data".</p>
  <p><strong>See also </strong></p><ul><li><a href="../sections.html">How
      Directory, Location and Files sections work</a> for an
      explanation of how these different sections are combined when a
      request is received</li></ul><hr/><h2><a name="LogLevel">LogLevel</a> <a name="loglevel">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Controls the verbosity of the ErrorLog</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LogLevel <em>level</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>LogLevel warn</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p><code class="directive">LogLevel</code> adjusts the verbosity of the
      messages recorded in the error logs (see <a href="#errorlog" class="directive"><code class="directive">ErrorLog</code></a> directive). The following
      <em>level</em>s are available, in order of decreasing
      significance:</p>
  
      <table border="1">
        <tr>
          <th><strong>Level</strong> </th>
  
          <th><strong>Description</strong> </th>
  
          <th><strong>Example</strong> </th>
        </tr>
  
        <tr>
          <td><code>emerg</code> </td>
  
          <td>Emergencies - system is unusable.</td>
  
          <td>"Child cannot open lock file. Exiting"</td>
        </tr>
  
        <tr>
          <td><code>alert</code> </td>
  
          <td>Action must be taken immediately.</td>
  
          <td>"getpwuid: couldn't determine user name from uid"</td>
        </tr>
  
        <tr>
          <td><code>crit</code> </td>
  
          <td>Critical Conditions.</td>
  
          <td>"socket: Failed to get a socket, exiting child"</td>
        </tr>
  
        <tr>
          <td><code>error</code> </td>
  
          <td>Error conditions.</td>
  
          <td>"Premature end of script headers"</td>
        </tr>
  
        <tr>
          <td><code>warn</code> </td>
  
          <td>Warning conditions.</td>
  
          <td>"child process 1234 did not exit, sending another
          SIGHUP"</td>
        </tr>
  
        <tr>
          <td><code>notice</code> </td>
  
          <td>Normal but significant condition.</td>
  
          <td>"httpd: caught SIGBUS, attempting to dump core in
          ..."</td>
        </tr>
  
        <tr>
          <td><code>info</code> </td>
  
          <td>Informational.</td>
  
          <td>"Server seems busy, (you may need to increase
          StartServers, or Min/MaxSpareServers)..."</td>
        </tr>
  
        <tr>
          <td><code>debug</code> </td>
  
          <td>Debug-level messages</td>
  
          <td>"Opening config file ..."</td>
        </tr>
      </table>
  
      <p>When a particular level is specified, messages from all
      other levels of higher significance will be reported as well.
      <em>E.g.</em>, when <code>LogLevel info</code> is specified,
      then messages with log levels of <code>notice</code> and
      <code>warn</code> will also be posted.</p>
  
      <p>Using a level of at least <code>crit</code> is
      recommended.</p>
  
      <p>For example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>LogLevel notice</code></td></tr></table></blockquote>
  
  <hr/><h2><a name="MaxKeepAliveRequests">MaxKeepAliveRequests</a> <a name="maxkeepaliverequests">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the number of requests allowed on a persistent 
  connection</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MaxKeepAliveRequests <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MaxKeepAliveRequests 100</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">MaxKeepAliveRequests</code> directive
      limits the number of requests allowed per connection when
      <a href="#keepalive" class="directive"><code class="directive">KeepAlive</code></a> is on. If it is
      set to "<code>0</code>", unlimited requests will be allowed. We
      recommend that this setting be kept to a high value for maximum
      server performance.</p>
  
      <p>For example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>MaxKeepAliveRequests 500</code></td></tr></table></blockquote>
  <hr/><h2><a name="NameVirtualHost">NameVirtualHost</a> <a name="namevirtualhost">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures an IP address for name-virtual
  hosting</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>NameVirtualHost <em>addr</em>[:<em>port</em>]</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">NameVirtualHost</code> directive is a
      required directive if you want to configure <a href="../vhosts/">name-based virtual hosts</a>.</p>
  
      <p>Although <em>addr</em> can be hostname it is recommended
      that you always use an IP address, <em>e.g.</em></p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>NameVirtualHost 111.22.33.44</code></td></tr></table></blockquote>
  
      <p>With the <code class="directive">NameVirtualHost</code> directive you
      specify the IP address on which the server will receive requests
      for the name-based virtual hosts. This will usually be the address
      to which your name-based virtual host names resolve. In cases
      where a firewall or other proxy receives the requests and forwards
      them on a different IP address to the server, you must specify the
      IP address of the physical interface on the machine which will be
      servicing the requests. If you have multiple name-based hosts on
      multiple addresses, repeat the directive for each address.</p>
  
      <p>Note: the "main server" and any _default_ servers will
      <strong>never</strong> be served for a request to a
      <code class="directive">NameVirtualHost</code> IP Address (unless for some
      reason you specify <code class="directive">NameVirtualHost</code> but then
      don't define any VirtualHosts for that address).</p>
  
      <p>Optionally you can specify a port number on which the
      name-based virtual hosts should be used, <em>e.g.</em></p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>NameVirtualHost 111.22.33.44:8080</code></td></tr></table></blockquote>
  
       <p>IPv6 addresses must be enclosed in square brackets, as shown
       in the following example:</p>
   
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>NameVirtualHost [fe80::a00:20ff:fea7:ccea]:8080</code></td></tr></table></blockquote>
  
  <p><strong>See also </strong></p><ul><li>See also: <a href="../vhosts/">Virtual Hosts
  documentation</a></li></ul><hr/><h2><a name="Options">Options</a> <a name="options">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures what features are available in a particular
  directory</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Options
      [+|-]<em>option</em> [[+|-]<em>option</em>] ...</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Options All</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Options</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">Options</code> directive controls which
      server features are available in a particular directory.</p>
  
      <p><em>option</em> can be set to <code>None</code>, in which
      case none of the extra features are enabled, or one or more of
      the following:</p>
  
      <dl>
        <dt>All</dt>
  
        <dd>All options except for MultiViews. This is the default
        setting.</dd>
  
        <dt>ExecCGI</dt>
  
        <dd>
        Execution of CGI scripts is permitted.</dd>
  
        <dt>FollowSymLinks</dt>
  
        <dd>
  
        The server will follow symbolic links in this directory.<br>
        <strong>Note</strong>: even though the server follows the
        symlink it does <em>not</em> change the pathname used to match
        against <a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a> sections.<br>
        <strong>Note</strong>: this option gets ignored if set inside a
        <a href="#location" class="directive"><code class="directive">&lt;Location&gt;</code></a>
        section.</dd>
  
        <dt>Includes</dt>
  
        <dd>
        Server-side includes are permitted.</dd>
  
        <dt>IncludesNOEXEC</dt>
  
        <dd>
  
        Server-side includes are permitted, but the #exec command and
        #exec CGI are disabled. It is still possible to #include
        virtual CGI scripts from ScriptAliase'd directories.</dd>
  
        <dt>Indexes</dt>
  
        <dd>
        If a URL which maps to a directory is requested, and the
        there is no DirectoryIndex (<em>e.g.</em>, index.html) in
        that directory, then the server will return a formatted
        listing of the directory.</dd>
  
        <dt>MultiViews</dt>
  
        <dd>
        <a href="../content-negotiation.html">Content negotiated</a>
        MultiViews are allowed.</dd>
  
        <dt>SymLinksIfOwnerMatch</dt>
  
        <dd>
  
        The server will only follow symbolic links for which the target
        file or directory is owned by the same user id as the link.<br> <strong>Note</strong>: this option gets ignored if set inside
        a <a href="#location" class="directive"><code class="directive">&lt;Location&gt;</code></a>
        section.</dd>
      </dl>
      <p>Normally, if multiple <code class="directive">Options</code> could apply to a
      directory, then the most specific one is taken complete; the
      options are not merged. However if <em>all</em> the options on
      the <code class="directive">Options</code> directive are preceded by a + or -
      symbol, the options are merged. Any options preceded by a + are
      added to the options currently in force, and any options
      preceded by a - are removed from the options currently in
      force. </p>
  
      <p>For example, without any + and - symbols:</p>
  
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>&lt;Directory /web/docs&gt;<br>
         Options Indexes FollowSymLinks<br>
         &lt;/Directory&gt;<br>
         &lt;Directory /web/docs/spec&gt;<br>
         Options Includes<br>
         &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
      <p>then only <code>Includes</code> will be set for the
      /web/docs/spec directory. However if the second
      <code class="directive">Options</code> directive uses the + and - symbols:</p> 
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        &lt;Directory /web/docs&gt;<br>
         Options Indexes FollowSymLinks<br>
         &lt;/Directory&gt;<br>
         &lt;Directory /web/docs/spec&gt;<br>
         Options +Includes -Indexes<br>
         &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
      <p>then the options <code>FollowSymLinks</code> and
      <code>Includes</code> are set for the /web/docs/spec directory.</p>
      
  
      <p><strong>Note:</strong> Using <code>-IncludesNOEXEC</code> or
      <code>-Includes</code> disables server-side includes completely
      regardless of the previous setting.</p>
  
      <p>The default in the absence of any other settings is
      <code>All</code>.</p>
  <hr/><h2><a name="Require">Require</a> <a name="require">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Selects which authenticated users can access
  a resource</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Require <em>entity-name</em> [<em>entity-name</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive selects which authenticated users can access
      a directory. The allowed syntaxes are:</p>
  
      <ul>
        <li>
          Require user <em>userid</em> [<em>userid</em>] ... 
  
          <p>Only the named users can access the directory.</p>
        </li>
  
        <li>
          Require group <em>group-name</em> [<em>group-name</em>] ...
          
  
          <p>Only users in the named groups can access the
          directory.</p>
        </li>
  
        <li>
          Require valid-user 
  
          <p>All valid users can access the directory.</p>
        </li>
      </ul>
  
      <p><code class="directive">Require</code> must be accompanied by
      <a href="#authname" class="directive"><code class="directive">AuthName</code></a> and <a href="#authtype" class="directive"><code class="directive">AuthType</code></a> directives, and directives such
      as <a href="mod_auth.html#authuserfile" class="directive"><code class="directive">AuthUserFile</code></a>
      and <a href="mod_auth.html#authgroupfile" class="directive"><code class="directive">AuthGroupFile</code></a> (to
      define users and groups) in order to work correctly. Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
         AuthType Basic<br>
         AuthName "Restricted Directory"<br>
         AuthUserFile /web/users<br>
         AuthGroupFile /web/groups<br>
         Require group admin<br>
  </code></td></tr></table></blockquote>
  
      <p>Access controls which are applied in this way are effective for
      <strong>all</strong> methods. <strong>This is what is normally
      desired.</strong> If you wish to apply access controls only to
      specific methods, while leaving other methods unprotected, then
      place the <code class="directive">Require</code> statement into a
      <a href="#limit" class="directive"><code class="directive">&lt;Limit&gt;</code></a>
      section.</p>
  <p><strong>See also </strong></p><ul><li><a href="#satisfy" class="directive"><code class="directive">Satisfy</code></a></li><li><code><a href="mod_access.html">mod_access</a></code></li></ul><hr/><h2><a name="RLimitCPU">RLimitCPU</a> <a name="rlimitcpu">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Limits the CPU consumption of processes launched
  by Apache children</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RLimitCPU <em>number</em>|max [<em>number</em>|max]</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Unset; uses operating system defaults</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Moved in version 2.0 to
      the MPMs</td></tr></table></td></tr></table>
      <p>Takes 1 or 2 parameters. The first parameter sets the soft
      resource limit for all processes and the second parameter sets
      the maximum resource limit. Either parameter can be a number,
      or <em>max</em> to indicate to the server that the limit should
      be set to the maximum allowed by the operating system
      configuration. Raising the maximum resource limit requires that
      the server is running as root, or in the initial startup
      phase.</p>
  
      <p>This applies to processes forked off from Apache children
      servicing requests, not the Apache children themselves. This
      includes CGI scripts and SSI exec commands, but not any
      processes forked off from the Apache parent such as piped
      logs.</p>
  
      <p>CPU resource limits are expressed in seconds per
      process.</p>
  <p><strong>See also </strong></p><ul><li><a href="#rlimitmem" class="directive"><code class="directive">RLimitMEM</code></a></li><li><a href="#rlimitnproc" class="directive"><code class="directive">RLimitNPROC</code></a></li></ul><hr/><h2><a name="RLimitMEM">RLimitMEM</a> <a name="rlimitmem">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Limits the memory consumption of processes launched
  by Apache children</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RLimitMEM <em>number</em>|max [<em>number</em>|max]</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Unset; uses operating system defaults</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Moved in version 2.0 to the MPMs.</td></tr></table></td></tr></table>
      <p>Takes 1 or 2 parameters. The first parameter sets the soft
      resource limit for all processes and the second parameter sets
      the maximum resource limit. Either parameter can be a number,
      or <em>max</em> to indicate to the server that the limit should
      be set to the maximum allowed by the operating system
      configuration. Raising the maximum resource limit requires that
      the server is running as root, or in the initial startup
      phase.</p>
  
      <p>This applies to processes forked off from Apache children
      servicing requests, not the Apache children themselves. This
      includes CGI scripts and SSI exec commands, but not any
      processes forked off from the Apache parent such as piped
      logs.</p>
  
      <p>Memory resource limits are expressed in bytes per
      process.</p>
  <p><strong>See also </strong></p><ul><li><a href="#rlimitcpu" class="directive"><code class="directive">RLimitCPU</code></a></li><li><a href="#rlimitnproc" class="directive"><code class="directive">RLimitNPROC</code></a></li></ul><hr/><h2><a name="RLimitNPROC">RLimitNPROC</a> <a name="rlimitnproc">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Limits the number of processes that can be launched by 
  processes launched by Apache children</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RLimitNPROC <em>number</em>|max [<em>number</em>|max]</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Unset; uses operating system defaults</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Moved in version 2.0 to the MPMs.</td></tr></table></td></tr></table>
      <p>Takes 1 or 2 parameters. The first parameter sets the soft
      resource limit for all processes and the second parameter sets
      the maximum resource limit. Either parameter can be a number,
      or <code>max</code> to indicate to the server that the limit
      should be set to the maximum allowed by the operating system
      configuration. Raising the maximum resource limit requires that
      the server is running as root, or in the initial startup
      phase.</p>
  
      <p>This applies to processes forked off from Apache children
      servicing requests, not the Apache children themselves. This
      includes CGI scripts and SSI exec commands, but not any
      processes forked off from the Apache parent such as piped
      logs.</p>
  
      <p>Process limits control the number of processes per user.</p>
  
      <p>Note: If CGI processes are <strong>not</strong> running
      under userids other than the web server userid, this directive
      will limit the number of processes that the server itself can
      create. Evidence of this situation will be indicated by
      <strong><em>cannot fork</em></strong> messages in the
      error_log.</p>
  <p><strong>See also </strong></p><ul><li><a href="#rlimitmem" class="directive"><code class="directive">RLimitMEM</code></a></li><li><a href="#rlimitcpu" class="directive"><code class="directive">RLimitCPU</code></a></li></ul><hr/><h2><a name="Satisfy">Satisfy</a> <a name="satisfy">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures how host-level access control and user authentication
  interact</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Satisfy any|all</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Satisfy all</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>Access policy if both <a href="#allow" class="directive"><code class="directive">Allow</code></a> and <a href="#require" class="directive"><code class="directive">Require</code></a> used. The parameter can be
      either <em>'all'</em> or <em>'any'</em>. This directive is only
      useful if access to a particular area is being restricted by both
      username/password <em>and</em> client host address. In this case
      the default behavior ("all") is to require that the client passes
      the address access restriction <em>and</em> enters a valid
      username and password. With the "any" option the client will be
      granted access if they either pass the host restriction or enter a
      valid username and password. This can be used to password restrict
      an area, but to let clients from particular addresses in without
      prompting for a password.</p>
  
      <p>For example, if you wanted to let people on your network have
      unrestricted access to a portion of your website, but require that
      people outside of your network provide a password, you could use a
      configuration similar to the following:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      Require valid-user<br>
      Allow from 192.168.1<br>
      Satisfy any
      </code></td></tr></table></blockquote>
     
  <p><strong>See also </strong></p><ul><li><a href="mod_access.html#allow" class="directive"><code class="directive">Allow</code></a></li><li><a href="#require" class="directive"><code class="directive">Require</code></a></li></ul><hr/><h2><a name="ScriptInterpreterSource">ScriptInterpreterSource</a> <a name="scriptinterpretersource">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Controls how the interpreter for CGI scripts is
  located</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ScriptInterpreterSource registry|script</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ScriptInterpreterSource script</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Win32 only</td></tr></table></td></tr></table>
      <p>This directive is used to control how Apache finds the
      interpreter used to run CGI scripts. The default technique is to
      use the interpreter pointed to by the #! line in the
      script. Setting <code>ScriptInterpreterSource registry</code> will
      cause the Windows Registry to be searched using the script file
      extension (e.g., .pl) as a search key.</p>
  <hr/><h2><a name="ServerAdmin">ServerAdmin</a> <a name="serveradmin">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the email address that the server includes in error
  messages sent to the client</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ServerAdmin <em>email-address</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">ServerAdmin</code> sets the e-mail address
      that the server includes in any error messages it returns to the
      client.</p>
  
      <p>It may be worth setting up a dedicated address for this,
      <em>e.g.</em></p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>ServerAdmin www-admin@foo.bar.com</code></td></tr></table></blockquote>
      <p>as users do not always mention that they are talking about the
      server!</p>
  <hr/><h2><a name="ServerAlias">ServerAlias</a> <a name="serveralias">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets alternate names for a host used when matching requests
  to name-virtual hosts</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ServerAlias <em>hostname</em> [<em>hostname</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">ServerAlias</code> directive sets the
      alternate names for a host, for use with <a href="../vhosts/name-based.html">name-based virtual hosts</a>.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;VirtualHost *&gt;<br>
      ServerName server.domain.com<br>
      ServerAlias server server2.domain.com server2<br>
      ...<br>
      &lt;/VirtualHost&gt;
  </code></td></tr></table></blockquote>
  <p><strong>See also </strong></p><ul><li><a href="../vhosts/">Apache Virtual Host documentation</a></li></ul><hr/><h2><a name="ServerName">ServerName</a> <a name="servername">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the hostname and port that the server uses to identify
  itself</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ServerName <em>fully-qualified-domain-name[:port]</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>In version 2.0, this
       directive supersedes the functionality of the Port
       directive from version 1.3.</td></tr></table></td></tr></table>
      <p>The <code class="directive">ServerName</code> directive sets the hostname and
      port that the server uses to identify itself.  This is used when
      creating redirection URLs.  For example, if the name of the
      machine hosting the webserver is <code>simple.example.com</code>,
      but the machine also has the DNS alias <code>www.example.com</code>
      and you wish the webserver to be so identified, the following
      directive should be used:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>ServerName www.example.com:80</code></td></tr></table></blockquote>
  
      <p>If no <code class="directive">ServerName</code> is specified, then the
      server attempts to deduce the hostname by performing a reverse
      lookup on the IP address.  If no port is specified in the
      servername, then the server will use the port from the incoming
      request.  For optimal reliability and predictability, you should
      specify an explicit hostname and port using the
      <code class="directive">ServerName</code> directive.</p>
  
      <p>If you are using <a href="../vhosts/name-based.html">name-based virtual hosts</a>,
      the <code class="directive">ServerName</code> inside a
      <a href="#virtualhost" class="directive"><code class="directive">&lt;VirtualHost&gt;</code></a>
      section specifies what hostname must appear in the request's
      <code>Host:</code> header to match this virtual host.</p>
  
      <p>See the description of the
      <a href="#usecanonicalname" class="directive"><code class="directive">UseCanonicalName</code></a> directive for
      settings which determine whether self-referential URL's (e.g., by the
      <code><a href="mod_dir.html">mod_dir</a></code> module) will refer to the
      specified port, or to the port number given in the client's request.
      </p>
  <p><strong>See also </strong></p><ul><li><a href="../dns-caveats.html">DNS Issues</a></li><li><a href="../vhosts/">Apache virtual host
      documentation</a></li><li><a href="#usecanonicalname" class="directive"><code class="directive">UseCanonicalName</code></a></li><li><a href="#namevirtualhost" class="directive"><code class="directive">NameVirtualHost</code></a></li><li><a href="#serveralias" class="directive"><code class="directive">ServerAlias</code></a></li></ul><hr/><h2><a name="ServerPath">ServerPath</a> <a name="serverpath">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the legacy URL pathname for a name-virtual host that
  is accessed by an incompatible browser</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ServerPath <em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">ServerPath</code> directive sets the legacy
      URL pathname for a host, for use with <a href="../vhosts/">name-based virtual hosts</a>.</p>
  <p><strong>See also </strong></p><ul><li><a href="../vhosts/">Apache Virtual Host documentation</a></li></ul><hr/><h2><a name="ServerRoot">ServerRoot</a> <a name="serverroot">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the base directory for the server installation</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ServerRoot <em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ServerRoot /usr/local/apache</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">ServerRoot</code> directive sets the
      directory in which the server lives. Typically it will contain the
      subdirectories <code>conf/</code> and <code>logs/</code>. Relative
      paths for other configuration files are taken as relative to this
      directory.</p>
  <p><strong>See also </strong></p><ul><li><a href="../invoking.html">the <code>-d</code>
      option to <code>httpd</code></a></li><li><a href="../misc/security_tips.html#serverroot">the
      security tips</a> for information on how to properly set
      permissions on the ServerRoot</li></ul><hr/><h2><a name="ServerSignature">ServerSignature</a> <a name="serversignature">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures the footer on server-generated documents</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ServerSignature On|Off|EMail</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ServerSignature Off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">ServerSignature</code> directive allows the
      configuration of a trailing footer line under server-generated
      documents (error messages, mod_proxy ftp directory listings,
      mod_info output, ...). The reason why you would want to enable
      such a footer line is that in a chain of proxies, the user often
      has no possibility to tell which of the chained servers actually
      produced a returned error message.<br> The <code>Off</code>
      setting, which is the default, suppresses the error line (and is
      therefore compatible with the behavior of Apache-1.2 and
      below). The <code>On</code> setting simply adds a line with the
      server version number and <a href="#servername" class="directive"><code class="directive">ServerName</code></a> of the serving virtual host,
      and the <code>EMail</code> setting additionally creates a
      "mailto:" reference to the <a href="#serveradmin" class="directive"><code class="directive">ServerAdmin</code></a> of the referenced
      document.</p>
  <hr/><h2><a name="ServerTokens">ServerTokens</a> <a name="servertokens">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures the Server HTTP response header</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ServerTokens Minimal|ProductOnly|OS|Full</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ServerTokens Full</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>This directive controls whether <code>Server</code> response
      header field which is sent back to clients includes a
      description of the generic OS-type of the server as well as
      information about compiled-in modules.</p>
  
      <dl>
        <dt><code>ServerTokens Prod[uctOnly]</code></dt>
  
        <dd>Server sends (<em>e.g.</em>): <code>Server:
        Apache</code></dd>
  
        <dt><code>ServerTokens Min[imal]</code></dt>
  
        <dd>Server sends (<em>e.g.</em>): <code>Server:
        Apache/1.3.0</code></dd>
  
        <dt><code>ServerTokens OS</code></dt>
  
        <dd>Server sends (<em>e.g.</em>): <code>Server: Apache/1.3.0
        (Unix)</code></dd>
  
        <dt><code>ServerTokens Full</code> (or not specified)</dt>
  
        <dd>Server sends (<em>e.g.</em>): <code>Server: Apache/1.3.0
        (Unix) PHP/3.0 MyMod/1.2</code></dd>
      </dl>
  
      <p>This setting applies to the entire server, and cannot be
      enabled or disabled on a virtualhost-by-virtualhost basis.</p>
  <hr/><h2><a name="SetHandler">SetHandler</a> <a name="sethandler">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Forces all matching files to be processed by a
  handler</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SetHandler <em>handler-name</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Moved into the core in Apache 2.0</td></tr></table></td></tr></table>
      <p>When placed into an <code>.htaccess</code> file or a
      <a href="#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a> or 
      <a href="#location" class="directive"><code class="directive">&lt;Location&gt;</code></a>
      section, this directive forces all matching files to be parsed
      through the <a href="../handler.html">handler</a> given by
      <em>handler-name</em>. For example, if you had a directory you
      wanted to be parsed entirely as imagemap rule files, regardless
      of extension, you might put the following into an
      <code>.htaccess</code> file in that directory:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      SetHandler imap-file
  </code></td></tr></table></blockquote>
  
      <p>Another example: if you wanted to have the server display a
      status report whenever a URL of
      <code>http://servername/status</code> was called, you might put
      the following into httpd.conf:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;Location /status&gt;<br>
      SetHandler server-status<br>
      &lt;/Location&gt;
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SetInputFilter">SetInputFilter</a> <a name="setinputfilter">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the filters that will process client requests and POST
  input</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SetInputFilter <em>filter</em>[<em>;filter</em>...]</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">SetInputFilter</code> directive sets the
      filter or filters which will process client requests and POST
      input when they are received by the server. This is in addition to
      any filters defined elsewhere, including the
      <a href="mod_mime.html#addinputfilter" class="directive"><code class="directive">AddInputFilter</code></a>
      directive.</p>
  
      <p>If more than one filter is specified, they must be separated
      by semicolons in the order in which they should process the
      content.</p>
  <p><strong>See also </strong></p><ul><li><a href="../filter.html">Filters</a> documentation</li></ul><hr/><h2><a name="SetOutputFilter">SetOutputFilter</a> <a name="setoutputfilter">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the filters that will process responses from the
  server</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SetOutputFilter <em>filter</em> [<em>filter</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">SetOutputFilter</code> directive sets the filters
      which will process responses from the server before they are
      sent to the client. This is in addition to any filters defined
      elsewhere, including the
      <a href="mod_mime.html#addoutputfilter" class="directive"><code class="directive">AddOutputFilter</code></a>
      directive.</p>
  
      <p>For example, the following configuration will process all files
      in the <code>/www/data/</code> directory for server-side
      includes.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  &lt;Directory /www/data/&gt;<br>
  &nbsp;&nbsp;SetOutputFilter INCLUDES<br>
  &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
  
      <p>If more than one filter is specified, they must be separated
      by semicolons in the order in which they should process the
      content.</p>
  <p><strong>See also </strong></p><ul><li><a href="../filter.html">Filters</a> documentation</li></ul><hr/><h2><a name="TimeOut">TimeOut</a> <a name="timeout">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Defines the amount of time the server will wait for
  certain events before failing a request</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>TimeOut <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>TimeOut 300</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>The <code class="directive">TimeOut</code> directive currently defines
      the amount of time Apache will wait for three things:</p>
  
      <ol>
        <li>The total amount of time it takes to receive a GET
        request.</li>
  
        <li>The amount of time between receipt of TCP packets on a
        POST or PUT request.</li>
  
        <li>The amount of time between ACKs on transmissions of TCP
        packets in responses.</li>
      </ol>
      
      <p>We plan on making these separately configurable at some point
      down the road. The timer used to default to 1200 before 1.2,
      but has been lowered to 300 which is still far more than
      necessary in most situations. It is not set any lower by
      default because there may still be odd places in the code where
      the timer is not reset when a packet is sent. </p>
  <hr/><h2><a name="UseCanonicalName">UseCanonicalName</a> <a name="usecanonicalname">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures how the server determines its own name and
  port</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>UseCanonicalName on|off|dns</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>UseCanonicalName on</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Options</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p>In many situations Apache has to construct a
      <em>self-referential</em> URL. That is, a URL which refers back to
      the same server. With <code>UseCanonicalName on</code> Apache will
      use the hostname and port specified in the <a href="#servername" class="directive"><code class="directive">ServerName</code></a> directive to construct a canonical
      name for the server. This name is used in all self-referential
      URLs, and for the values of <code>SERVER_NAME</code> and
      <code>SERVER_PORT</code> in CGIs.</p>
  
      <p>With <code>UseCanonicalName off</code> Apache will form
      self-referential URLs using the hostname and port supplied by
      the client if any are supplied (otherwise it will use the
      canonical name). These values are the same that are used to
      implement <a href="../vhosts/name-based.html">name based
      virtual hosts</a>, and are available with the same clients. The
      CGI variables <code>SERVER_NAME</code> and
      <code>SERVER_PORT</code> will be constructed from the client
      supplied values as well.</p>
  
      <p>An example where this may be useful is on an intranet server
      where you have users connecting to the machine using short
      names such as <code>www</code>. You'll notice that if the users
      type a shortname, and a URL which is a directory, such as
      <code>http://www/splat</code>, <em>without the trailing
      slash</em> then Apache will redirect them to
      <code>http://www.domain.com/splat/</code>. If you have
      authentication enabled, this will cause the user to have to
      reauthenticate twice (once for <code>www</code> and once again
      for <code>www.domain.com</code>). But if
      <code class="directive">UseCanonicalName</code> is set off, then Apache will
      redirect to <code>http://www/splat/</code>.</p>
  
      <p>There is a third option, <code>UseCanonicalName DNS</code>,
      which is intended for use with mass IP-based virtual hosting to
      support ancient clients that do not provide a
      <code>Host:</code> header. With this option Apache does a
      reverse DNS lookup on the server IP address that the client
      connected to in order to work out self-referential URLs.</p>
  
      <p><strong>Warning:</strong> if CGIs make assumptions about the
      values of <code>SERVER_NAME</code> they may be broken by this
      option. The client is essentially free to give whatever value
      they want as a hostname. But if the CGI is only using
      <code>SERVER_NAME</code> to construct self-referential URLs
      then it should be just fine.</p>
  <p><strong>See also </strong></p><ul><li><a href="#servername" class="directive"><code class="directive">ServerName</code></a></li><li><a href="mpm_common.html#listen" class="directive"><code class="directive">Listen</code></a></li></ul><hr/><h2><a name="VirtualHost">&lt;VirtualHost&gt;</a> <a name="virtualhost">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Contains directives that apply only to a specific
  hostname or IP address</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>&lt;VirtualHost
      <em>addr</em>[:<em>port</em>] [<em>addr</em>[:<em>port</em>]]
      ...&gt; ... &lt;/VirtualHost&gt;</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Core</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>core</td></tr></table></td></tr></table>
      <p><code class="directive">&lt;VirtualHost&gt;</code> and
      <code>&lt;/VirtualHost&gt;</code> are used to enclose a group of
      directives which will apply only to a particular virtual host. Any
      directive which is allowed in a virtual host context may be
      used. When the server receives a request for a document on a
      particular virtual host, it uses the configuration directives
      enclosed in the <code class="directive">&lt;VirtualHost&gt;</code>
      section. <em>Addr</em> can be</p>
  
      <ul>
        <li>The IP address of the virtual host</li>
  
        <li>A fully qualified domain name for the IP address of the
        virtual host.</li>
      </ul>
      
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
         &lt;VirtualHost 10.1.2.3&gt;<br>
         ServerAdmin webmaster@host.foo.com<br>
         DocumentRoot /www/docs/host.foo.com<br>
         ServerName host.foo.com<br>
         ErrorLog logs/host.foo.com-error_log<br>
         TransferLog logs/host.foo.com-access_log<br>
         &lt;/VirtualHost&gt;
  </code></td></tr></table></blockquote>
  
   
       <p>IPv6 addresses must be specified in square brackets because
       the optional port number could not be determined otherwise.  An
       IPv6 example is shown below:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>     
  &lt;VirtualHost [fe80::a00:20ff:fea7:ccea]&gt;<br>
          ServerAdmin webmaster@host.foo.com<br>
          DocumentRoot /www/docs/host.foo.com<br>
          ServerName host.foo.com<br>
         ErrorLog logs/host.foo.com-error_log<br>
          TransferLog logs/host.foo.com-access_log<br>
          &lt;/VirtualHost&gt;
  </code></td></tr></table></blockquote>  
  
      <p>Each Virtual Host must correspond to a different IP address,
      different port number or a different host name for the server,
      in the former case the server machine must be configured to
      accept IP packets for multiple addresses. (If the machine does
      not have multiple network interfaces, then this can be
      accomplished with the <code>ifconfig alias</code> command (if
      your OS supports it), or with kernel patches like <a href="../misc/vif-info.html">VIF</a> (for SunOS(TM) 4.1.x)).</p>
  
      <p>The special name <code>_default_</code> can be specified in
      which case this virtual host will match any IP address that is
      not explicitly listed in another virtual host. In the absence
      of any _default_ virtual host the "main" server config,
      consisting of all those definitions outside any VirtualHost
      section, is used when no match occurs.</p>
  
      <p>You can specify a <code>:port</code> to change the port that is
      matched. If unspecified then it defaults to the same port as the
      most recent <a href="mpm_common.html#listen" class="directive"><code class="directive">Listen</code></a>
      statement of the main server. You may also specify <code>:*</code>
      to match all ports on that address. (This is recommended when used
      with <code>_default_</code>.)</p>
  
      <p><strong>SECURITY</strong>: See the <a href="../misc/security_tips.html">security tips</a> document
      for details on why your security could be compromised if the
      directory where logfiles are stored is writable by anyone other
      than the user that starts the server.</p>
  
      <p><strong>NOTE</strong>: The use of <code class="directive">&lt;VirtualHost&gt;</code> does <strong>not</strong>
      affect what addresses Apache listens on.  You may need to ensure
      that Apache is listening on the correct addresses using <a href="mpm_common.html#listen" class="directive"><code class="directive">Listen</code></a>.</p>
  <p><strong>See also </strong></p><ul><li><a href="../vhosts/">Apache Virtual Host documentation</a></li><li><a href="../dns-caveats.html">Warnings about DNS and
      Apache</a></li><li><a href="../bind.html">Setting
      which addresses and ports Apache uses</a></li><li><a href="../sections.html">How
      Directory, Location and Files sections work</a> for an
      explanation of how these different sections are combined when a
      request is received</li></ul><hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/directives.html.en
  
  Index: directives.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><title>Directive Index- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Directive Index</h1>
      <p>
        Each Apache directive available in the standard Apache
        distribution is listed here. They are described using a
        consistent format, and there is <a href="directive-dict.html" rel="Glossary">a dictionary</a> of the terms used in their
        descriptions available.
      </p>
    <ul><li>AcceptMutex: </li><li><a href="prefork.html#acceptmutex">AcceptMutex</a></li><li>AcceptPathInfo: </li><li><a href="core.html#acceptpathinfo">AcceptPathInfo</a></li><li>AccessFileName: </li><li><a href="core.html#accessfilename">AccessFileName</a></li><li>Action: </li><li><a href="mod_actions.html#action">Action</a></li><li>AddAlt: </li><li><a href="mod_autoindex.html#addalt">AddAlt</a></li><li>AddAltByEncoding: </li><li><a href="mod_autoindex.html#addaltbyencoding">AddAltByEncoding</a></li><li>AddAltByType: </li><li><a href="mod_autoindex.html#addaltbytype">AddAltByType</a></li><li>AddCharset: </li><li><a href="mod_mime.html#addcharset">AddCharset</a></li><li>AddDefaultCharset: </li><li><a href="core.html#adddefaultcharset">AddDefaultCharset</a></li><li>AddDescription: </li><li><a href="mod_autoindex.html#adddescription">AddDescription</a></li><li>AddEncoding: </li><li><a href="mod_mime.html#addencoding">AddEncoding</a></li><li>AddHandler: </li><li><a href="mod_mime.html#addhandler">AddHandler</a></li><li>AddIcon: </li><li><a href="mod_autoindex.html#addicon">AddIcon</a></li><li>AddIconByEncoding: </li><li><a href="mod_autoindex.html#addiconbyencoding">AddIconByEncoding</a></li><li>AddIconByType: </li><li><a href="mod_autoindex.html#addiconbytype">AddIconByType</a></li><li>AddInputFilter: </li><li><a href="mod_mime.html#addinputfilter">AddInputFilter</a></li><li>AddLanguage: </li><li><a href="mod_mime.html#addlanguage">AddLanguage</a></li><li>AddModuleInfo: </li><li><a href="mod_info.html#addmoduleinfo">AddModuleInfo</a></li><li>AddOutputFilter: </li><li><a href="mod_mime.html#addoutputfilter">AddOutputFilter</a></li><li>AddType: </li><li><a href="mod_mime.html#addtype">AddType</a></li><li>Alias: </li><li><a href="mod_alias.html#alias">Alias</a></li><li>AliasMatch: </li><li><a href="mod_alias.html#aliasmatch">AliasMatch</a></li><li>Allow: </li><li><a href="mod_access.html#allow">Allow</a></li><li>AllowCONNECT: </li><li><a href="mod_proxy.html#allowconnect">AllowCONNECT</a></li><li>AllowOverride: </li><li><a href="core.html#allowoverride">AllowOverride</a></li><li>Anonymous: </li><li><a href="mod_auth_anon.html#anonymous">Anonymous</a></li><li>Anonymous_Authoritative: </li><li><a href="mod_auth_anon.html#anonymous_authoritative">Anonymous_Authoritative</a></li><li>Anonymous_LogEmail: </li><li><a href="mod_auth_anon.html#anonymous_logemail">Anonymous_LogEmail</a></li><li>Anonymous_MustGiveEmail: </li><li><a href="mod_auth_anon.html#anonymous_mustgiveemail">Anonymous_MustGiveEmail</a></li><li>Anonymous_NoUserID: </li><li><a href="mod_auth_anon.html#anonymous_nouserid">Anonymous_NoUserID</a></li><li>Anonymous_VerifyEmail: </li><li><a href="mod_auth_anon.html#anonymous_verifyemail">Anonymous_VerifyEmail</a></li><li>AssignUserId: </li><li><a href="perchild.html#assignuserid">AssignUserId</a></li><li>AuthAuthoritative: </li><li><a href="mod_auth.html#authauthoritative">AuthAuthoritative</a></li><li>AuthDBMAuthoritative: </li><li><a href="mod_auth_dbm.html#authdbmauthoritative">AuthDBMAuthoritative</a></li><li>AuthDBMGroupFile: </li><li><a href="mod_auth_dbm.html#authdbmgroupfile">AuthDBMGroupFile</a></li><li>AuthDBMType: </li><li><a href="mod_auth_dbm.html#authdbmtype">AuthDBMType</a></li><li>AuthDBMUserFile: </li><li><a href="mod_auth_dbm.html#authdbmuserfile">AuthDBMUserFile</a></li><li>AuthDigestAlgorithm: </li><li><a href="mod_auth_digest.html#authdigestalgorithm">AuthDigestAlgorithm</a></li><li>AuthDigestDomain: </li><li><a href="mod_auth_digest.html#authdigestdomain">AuthDigestDomain</a></li><li>AuthDigestFile: </li><li><a href="mod_auth_digest.html#authdigestfile">AuthDigestFile</a></li><li>AuthDigestGroupFile: </li><li><a href="mod_auth_digest.html#authdigestgroupfile">AuthDigestGroupFile</a></li><li>AuthDigestNcCheck: </li><li><a href="mod_auth_digest.html#authdigestnccheck">AuthDigestNcCheck</a></li><li>AuthDigestNonceFormat: </li><li><a href="mod_auth_digest.html#authdigestnonceformat">AuthDigestNonceFormat</a></li><li>AuthDigestNonceLifetime: </li><li><a href="mod_auth_digest.html#authdigestnoncelifetime">AuthDigestNonceLifetime</a></li><li>AuthDigestQop: </li><li><a href="mod_auth_digest.html#authdigestqop">AuthDigestQop</a></li><li>AuthGroupFile: </li><li><a href="mod_auth.html#authgroupfile">AuthGroupFile</a></li><li>AuthName: </li><li><a href="core.html#authname">AuthName</a></li><li>AuthType: </li><li><a href="core.html#authtype">AuthType</a></li><li>AuthUserFile: </li><li><a href="mod_auth.html#authuserfile">AuthUserFile</a></li><li>BrowserMatch: </li><li><a href="mod_setenvif.html#browsermatch">BrowserMatch</a></li><li>BrowserMatchNoCase: </li><li><a href="mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></li><li>CacheDefaultExpire: </li><li><a href="mod_cache.html#cachedefaultexpire">CacheDefaultExpire</a></li><li>CacheDisable: </li><li><a href="mod_cache.html#cachedisable">CacheDisable</a></li><li>CacheEnable: </li><li><a href="mod_cache.html#cacheenable">CacheEnable</a></li><li>CacheFile: </li><li><a href="mod_file_cache.html#cachefile">CacheFile</a></li><li>CacheIgnoreCacheControl: </li><li><a href="mod_cache.html#cacheignorecachecontrol">CacheIgnoreCacheControl</a></li><li>CacheIgnoreNoLastMod: </li><li><a href="mod_cache.html#cacheignorenolastmod">CacheIgnoreNoLastMod</a></li><li>CacheLastModifiedFactor: </li><li><a href="mod_cache.html#cachelastmodifiedfactor">CacheLastModifiedFactor</a></li><li>CacheMaxExpire: </li><li><a href="mod_cache.html#cachemaxexpire">CacheMaxExpire</a></li><li>CacheNegotiatedDocs: </li><li><a href="mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></li><li>CacheOn: </li><li><a href="mod_cache.html#cacheon">CacheOn</a></li><li>CharsetDefault: </li><li><a href="mod_charset_lite.html#charsetdefault">CharsetDefault</a></li><li>CharsetOptions: </li><li><a href="mod_charset_lite.html#charsetoptions">CharsetOptions</a></li><li>CharsetSourceEnc: </li><li><a href="mod_charset_lite.html#charsetsourceenc">CharsetSourceEnc</a></li><li>CheckSpelling: </li><li><a href="mod_speling.html#checkspelling">CheckSpelling</a></li><li>ChildPerUserId: </li><li><a href="perchild.html#childperuserid">ChildPerUserId</a></li><li>ContentDigest: </li><li><a href="core.html#contentdigest">ContentDigest</a></li><li>CookieDomain: </li><li><a href="mod_usertrack.html#cookiedomain">CookieDomain</a></li><li>CookieExpires: </li><li><a href="mod_usertrack.html#cookieexpires">CookieExpires</a></li><li>CookieLog: </li><li><a href="mod_log_config.html#cookielog">CookieLog</a></li><li>CookieName: </li><li><a href="mod_usertrack.html#cookiename">CookieName</a></li><li>CookieStyle: </li><li><a href="mod_usertrack.html#cookiestyle">CookieStyle</a></li><li>CookieTracking: </li><li><a href="mod_usertrack.html#cookietracking">CookieTracking</a></li><li>CoreDumpDirectory: mpm_common</li><li>CoreDumpDirectory: mpm_common</li><li>CoreDumpDirectory: mpm_common</li><li>CoreDumpDirectory: mpm_common</li><li>CoreDumpDirectory: </li><li><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li><li>CustomLog: </li><li><a href="mod_log_config.html#customlog">CustomLog</a></li><li>Dav: </li><li><a href="mod_dav.html#dav">Dav</a></li><li>DavDepthInfinity: </li><li><a href="mod_dav.html#davdepthinfinity">DavDepthInfinity</a></li><li>DavLockDB: </li><li><a href="mod_dav.html#davlockdb">DavLockDB</a></li><li>DavMinTimeout: </li><li><a href="mod_dav.html#davmintimeout">DavMinTimeout</a></li><li>DefaultIcon: </li><li><a href="mod_autoindex.html#defaulticon">DefaultIcon</a></li><li>DefaultLanguage: </li><li><a href="mod_mime.html#defaultlanguage">DefaultLanguage</a></li><li>DefaultType: </li><li><a href="core.html#defaulttype">DefaultType</a></li><li>DeflateBufferSize: </li><li><a href="mod_deflate.html#deflatebuffersize">DeflateBufferSize</a></li><li>DeflateFilterNote: </li><li><a href="mod_deflate.html#deflatefilternote">DeflateFilterNote</a></li><li>DeflateMemLevel: </li><li><a href="mod_deflate.html#deflatememlevel">DeflateMemLevel</a></li><li>DeflateWindowSize: </li><li><a href="mod_deflate.html#deflatewindowsize">DeflateWindowSize</a></li><li>Deny: </li><li><a href="mod_access.html#deny">Deny</a></li><li>Directory: </li><li><a href="core.html#directory">Directory</a></li><li>DirectoryIndex: </li><li><a href="mod_dir.html#directoryindex">DirectoryIndex</a></li><li>DirectoryMatch: </li><li><a href="core.html#directorymatch">DirectoryMatch</a></li><li>DocumentRoot: </li><li><a href="core.html#documentroot">DocumentRoot</a></li><li>EnableMMAP: </li><li><a href="core.html#enablemmap">EnableMMAP</a></li><li>ErrorDocument: </li><li><a href="core.html#errordocument">ErrorDocument</a></li><li>ErrorLog: </li><li><a href="core.html#errorlog">ErrorLog</a></li><li>Example: </li><li><a href="mod_example.html#example">Example</a></li><li>ExpiresActive: </li><li><a href="mod_expires.html#expiresactive">ExpiresActive</a></li><li>ExpiresByType: </li><li><a href="mod_expires.html#expiresbytype">ExpiresByType</a></li><li>ExpiresDefault: </li><li><a href="mod_expires.html#expiresdefault">ExpiresDefault</a></li><li>ExtendedStatus: </li><li><a href="mod_status.html#extendedstatus">ExtendedStatus</a></li><li>ExtFilterDefine: </li><li><a href="mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></li><li>ExtFilterOptions: </li><li><a href="mod_ext_filter.html#extfilteroptions">ExtFilterOptions</a></li><li>FileETag: </li><li><a href="core.html#fileetag">FileETag</a></li><li>Files: </li><li><a href="core.html#files">Files</a></li><li>FilesMatch: </li><li><a href="core.html#filesmatch">FilesMatch</a></li><li>ForceLanguagePriority: </li><li><a href="mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority</a></li><li>ForceType: </li><li><a href="core.html#forcetype">ForceType</a></li><li>Group: mpm_common</li><li>Group: mpm_common</li><li>Group: </li><li><a href="mpm_common.html#group">Group</a></li><li>Header: </li><li><a href="mod_headers.html#header">Header</a></li><li>HeaderName: </li><li><a href="mod_autoindex.html#headername">HeaderName</a></li><li>HostnameLookups: </li><li><a href="core.html#hostnamelookups">HostnameLookups</a></li><li>IdentityCheck: </li><li><a href="core.html#identitycheck">IdentityCheck</a></li><li>IfDefine: </li><li><a href="core.html#ifdefine">IfDefine</a></li><li>IfModule: </li><li><a href="core.html#ifmodule">IfModule</a></li><li>ImapBase: </li><li><a href="mod_imap.html#imapbase">ImapBase</a></li><li>ImapDefault: </li><li><a href="mod_imap.html#imapdefault">ImapDefault</a></li><li>ImapMenu: </li><li><a href="mod_imap.html#imapmenu">ImapMenu</a></li><li>Include: </li><li><a href="core.html#include">Include</a></li><li>IndexIgnore: </li><li><a href="mod_autoindex.html#indexignore">IndexIgnore</a></li><li>IndexOptions: </li><li><a href="mod_autoindex.html#indexoptions">IndexOptions</a></li><li>IndexOrderDefault: </li><li><a href="mod_autoindex.html#indexorderdefault">IndexOrderDefault</a></li><li>ISAPIAppendLogToErrors: </li><li><a href="mod_isapi.html#isapiappendlogtoerrors">ISAPIAppendLogToErrors</a></li><li>ISAPIAppendLogToQuery: </li><li><a href="mod_isapi.html#isapiappendlogtoquery">ISAPIAppendLogToQuery</a></li><li>ISAPIFileChache: </li><li><a href="mod_isapi.html#isapifilechache">ISAPIFileChache</a></li><li>ISAPILogNotSupported: </li><li><a href="mod_isapi.html#isapilognotsupported">ISAPILogNotSupported</a></li><li>ISAPIReadAheadBuffer: </li><li><a href="mod_isapi.html#isapireadaheadbuffer">ISAPIReadAheadBuffer</a></li><li>KeepAlive: </li><li><a href="core.html#keepalive">KeepAlive</a></li><li>KeepAliveTimeout: </li><li><a href="core.html#keepalivetimeout">KeepAliveTimeout</a></li><li>LanguagePriority: </li><li><a href="mod_negotiation.html#languagepriority">LanguagePriority</a></li><li>Limit: </li><li><a href="core.html#limit">Limit</a></li><li>LimitExcept: </li><li><a href="core.html#limitexcept">LimitExcept</a></li><li>LimitRequestBody: </li><li><a href="core.html#limitrequestbody">LimitRequestBody</a></li><li>LimitRequestFields: </li><li><a href="core.html#limitrequestfields">LimitRequestFields</a></li><li>LimitRequestFieldSize: </li><li><a href="core.html#limitrequestfieldsize">LimitRequestFieldSize</a></li><li>LimitRequestLine: </li><li><a href="core.html#limitrequestline">LimitRequestLine</a></li><li>LimitXMLRequestBody: </li><li><a href="core.html#limitxmlrequestbody">LimitXMLRequestBody</a></li><li>Listen: mpm_common</li><li>Listen: mpm_common</li><li>Listen: mpm_common</li><li>Listen: mpm_common</li><li>Listen: mpm_common</li><li>Listen: </li><li><a href="mpm_common.html#listen">Listen</a></li><li>ListenBacklog: mpm_common</li><li>ListenBacklog: mpm_common</li><li>ListenBacklog: mpm_common</li><li>ListenBacklog: mpm_common</li><li>ListenBacklog: mpm_common</li><li>ListenBackLog: </li><li><a href="mpm_common.html#listenbacklog">ListenBackLog</a></li><li>LoadFile: </li><li><a href="mod_so.html#loadfile">LoadFile</a></li><li>LoadModule: </li><li><a href="mod_so.html#loadmodule">LoadModule</a></li><li>Location: </li><li><a href="core.html#location">Location</a></li><li>LocationMatch: </li><li><a href="core.html#locationmatch">LocationMatch</a></li><li>LockFile: mpm_common</li><li>LockFile: mpm_common</li><li>LockFile: mpm_common</li><li>LockFile: </li><li><a href="mpm_common.html#lockfile">LockFile</a></li><li>LogFormat: </li><li><a href="mod_log_config.html#logformat">LogFormat</a></li><li>LogLevel: </li><li><a href="core.html#loglevel">LogLevel</a></li><li>MaxClients: mpm_common</li><li>MaxClients: </li><li><a href="mpm_common.html#maxclients">MaxClients</a></li><li>MaxKeepAliveRequests: </li><li><a href="core.html#maxkeepaliverequests">MaxKeepAliveRequests</a></li><li>MaxRequestsPerChild: mpm_common</li><li>MaxRequestsPerChild: mpm_common</li><li>MaxRequestsPerChild: mpm_common</li><li>MaxRequestsPerChild: mpm_common</li><li>MaxRequestsPerChild: mpm_common</li><li>MaxRequestsPerChild: </li><li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li><li>MaxSpareServers: mpm_common</li><li>MaxSpareServers: </li><li><a href="prefork.html#maxspareservers">MaxSpareServers</a></li><li>MaxSpareThreads: mpm_common</li><li>MaxSpareThreads: mpm_common</li><li>MaxSpareThreads: </li><li><a href="mpm_netware.html#maxsparethreads">MaxSpareThreads</a></li><li>MaxSpareThreads: </li><li><a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li><li>MaxThreads: </li><li><a href="mpm_netware.html#maxthreads">MaxThreads</a></li><li>MaxThreadsPerChild: mpm_common</li><li>MaxThreadsPerChild: </li><li><a href="mpm_common.html#maxthreadsperchild">MaxThreadsPerChild</a></li><li>MetaDir: </li><li><a href="mod_cern_meta.html#metadir">MetaDir</a></li><li>MetaFiles: </li><li><a href="mod_cern_meta.html#metafiles">MetaFiles</a></li><li>MetaSuffix: </li><li><a href="mod_cern_meta.html#metasuffix">MetaSuffix</a></li><li>MimeMagicFile: </li><li><a href="mod_mime_magic.html#mimemagicfile">MimeMagicFile</a></li><li>MinSpareServers: mpm_common</li><li>MinSpareServers: </li><li><a href="prefork.html#minspareservers">MinSpareServers</a></li><li>MinSpareThreads: mpm_common</li><li>MinSpareThreads: mpm_common</li><li>MinSpareThreads: </li><li><a href="mpm_netware.html#minsparethreads">MinSpareThreads</a></li><li>MinSpareThreads: </li><li><a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li><li>MMapFile: </li><li><a href="mod_file_cache.html#mmapfile">MMapFile</a></li><li>MultiviewsMatch: </li><li><a href="mod_mime.html#multiviewsmatch">MultiviewsMatch</a></li><li>NameVirtualHost: </li><li><a href="core.html#namevirtualhost">NameVirtualHost</a></li><li>NoProxy: </li><li><a href="mod_proxy.html#noproxy">NoProxy</a></li><li>NumServers: mpm_common</li><li>NumServers: </li><li><a href="mpm_common.html#numservers">NumServers</a></li><li>Options: </li><li><a href="core.html#options">Options</a></li><li>Order: </li><li><a href="mod_access.html#order">Order</a></li><li>PassEnv: </li><li><a href="mod_env.html#passenv">PassEnv</a></li><li>PidFile: mpm_common</li><li>PidFile: mpm_common</li><li>PidFile: mpm_common</li><li>PidFile: mpm_common</li><li>PidFile: </li><li><a href="mpm_common.html#pidfile">PidFile</a></li><li>ProxyBlock: </li><li><a href="mod_proxy.html#proxyblock">ProxyBlock</a></li><li>ProxyDomain: </li><li><a href="mod_proxy.html#proxydomain">ProxyDomain</a></li><li>ProxyErrorOverride: </li><li><a href="mod_proxy.html#proxyerroroverride">ProxyErrorOverride</a></li><li>ProxyMaxForwards: </li><li><a href="mod_proxy.html#proxymaxforwards">ProxyMaxForwards</a></li><li>ProxyPass: </li><li><a href="mod_proxy.html#proxypass">ProxyPass</a></li><li>ProxyPassReverse: </li><li><a href="mod_proxy.html#proxypassreverse">ProxyPassReverse</a></li><li>ProxyPreserveHost: </li><li><a href="mod_proxy.html#proxypreservehost">ProxyPreserveHost</a></li><li>ProxyReceiveBufferSize: </li><li><a href="mod_proxy.html#proxyreceivebuffersize">ProxyReceiveBufferSize</a></li><li>ProxyRemote: </li><li><a href="mod_proxy.html#proxyremote">ProxyRemote</a></li><li>ProxyRequests: </li><li><a href="mod_proxy.html#proxyrequests">ProxyRequests</a></li><li>ProxyTimeout: </li><li><a href="mod_proxy.html#proxytimeout">ProxyTimeout</a></li><li>ProxyVia: </li><li><a href="mod_proxy.html#proxyvia">ProxyVia</a></li><li>ReadmeName: </li><li><a href="mod_autoindex.html#readmename">ReadmeName</a></li><li>Redirect: </li><li><a href="mod_alias.html#redirect">Redirect</a></li><li>RedirectMatch: </li><li><a href="mod_alias.html#redirectmatch">RedirectMatch</a></li><li>RedirectPermanent: </li><li><a href="mod_alias.html#redirectpermanent">RedirectPermanent</a></li><li>RedirectTemp: </li><li><a href="mod_alias.html#redirecttemp">RedirectTemp</a></li><li>RemoveCharset: </li><li><a href="mod_mime.html#removecharset">RemoveCharset</a></li><li>RemoveEncoding: </li><li><a href="mod_mime.html#removeencoding">RemoveEncoding</a></li><li>RemoveHandler: </li><li><a href="mod_mime.html#removehandler">RemoveHandler</a></li><li>RemoveInputFilter: </li><li><a href="mod_mime.html#removeinputfilter">RemoveInputFilter</a></li><li>RemoveLanguage: </li><li><a href="mod_mime.html#removelanguage">RemoveLanguage</a></li><li>RemoveOutputFilter: </li><li><a href="mod_mime.html#removeoutputfilter">RemoveOutputFilter</a></li><li>RemoveType: </li><li><a href="mod_mime.html#removetype">RemoveType</a></li><li>RequestHeader: </li><li><a href="mod_headers.html#requestheader">RequestHeader</a></li><li>Require: </li><li><a href="core.html#require">Require</a></li><li>RewriteBase: </li><li><a href="mod_rewrite.html#rewritebase">RewriteBase</a></li><li>RewriteCond: </li><li><a href="mod_rewrite.html#rewritecond">RewriteCond</a></li><li>RewriteEngine: </li><li><a href="mod_rewrite.html#rewriteengine">RewriteEngine</a></li><li>RewriteLock: </li><li><a href="mod_rewrite.html#rewritelock">RewriteLock</a></li><li>RewriteLog: </li><li><a href="mod_rewrite.html#rewritelog">RewriteLog</a></li><li>RewriteLogLevel: </li><li><a href="mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></li><li>RewriteMap: </li><li><a href="mod_rewrite.html#rewritemap">RewriteMap</a></li><li>RewriteOptions: </li><li><a href="mod_rewrite.html#rewriteoptions">RewriteOptions</a></li><li>RewriteRule: </li><li><a href="mod_rewrite.html#rewriterule">RewriteRule</a></li><li>RLimitCPU: </li><li><a href="core.html#rlimitcpu">RLimitCPU</a></li><li>RLimitMEM: </li><li><a href="core.html#rlimitmem">RLimitMEM</a></li><li>RLimitNPROC: </li><li><a href="core.html#rlimitnproc">RLimitNPROC</a></li><li>Satisfy: </li><li><a href="core.html#satisfy">Satisfy</a></li><li>ScoreBoardFile: mpm_common</li><li>ScoreBoardFile: mpm_common</li><li>ScoreBoardFile: mpm_common</li><li>ScoreBoardFile: </li><li><a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li><li>Script: </li><li><a href="mod_actions.html#script">Script</a></li><li>ScriptAlias: </li><li><a href="mod_alias.html#scriptalias">ScriptAlias</a></li><li>ScriptAliasMatch: </li><li><a href="mod_alias.html#scriptaliasmatch">ScriptAliasMatch</a></li><li>ScriptInterpreterSource: </li><li><a href="core.html#scriptinterpretersource">ScriptInterpreterSource</a></li><li>ScriptLog: mod_cgi</li><li>ScriptLog: </li><li><a href="mod_cgi.html#scriptlog">ScriptLog</a></li><li>ScriptLogBuffer: mod_cgi</li><li>ScriptLogBuffer: </li><li><a href="mod_cgi.html#scriptlogbuffer">ScriptLogBuffer</a></li><li>ScriptLogLength: mod_cgi</li><li>ScriptLogLength: </li><li><a href="mod_cgi.html#scriptloglength">ScriptLogLength</a></li><li>ScriptSock: </li><li><a href="mod_cgid.html#scriptsock">ScriptSock</a></li><li>SendBufferSize: mpm_common</li><li>SendBufferSize: mpm_common</li><li>SendBufferSize: mpm_common</li><li>SendBufferSize: mpm_common</li><li>SendBufferSize: mpm_common</li><li>SendBufferSize: </li><li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li><li>ServerAdmin: </li><li><a href="core.html#serveradmin">ServerAdmin</a></li><li>ServerAlias: </li><li><a href="core.html#serveralias">ServerAlias</a></li><li>ServerLimit: mpm_common</li><li>ServerLimit: mpm_common</li><li>ServerLimit: </li><li><a href="mpm_common.html#serverlimit">ServerLimit</a></li><li>ServerName: </li><li><a href="core.html#servername">ServerName</a></li><li>ServerPath: </li><li><a href="core.html#serverpath">ServerPath</a></li><li>ServerRoot: </li><li><a href="core.html#serverroot">ServerRoot</a></li><li>ServerSignature: </li><li><a href="core.html#serversignature">ServerSignature</a></li><li>ServerTokens: </li><li><a href="core.html#servertokens">ServerTokens</a></li><li>SetEnv: </li><li><a href="mod_env.html#setenv">SetEnv</a></li><li>SetEnvIf: </li><li><a href="mod_setenvif.html#setenvif">SetEnvIf</a></li><li>SetEnvIfNoCase: </li><li><a href="mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></li><li>SetHandler: </li><li><a href="core.html#sethandler">SetHandler</a></li><li>SetInputFilter: </li><li><a href="core.html#setinputfilter">SetInputFilter</a></li><li>SetOutputFilter: </li><li><a href="core.html#setoutputfilter">SetOutputFilter</a></li><li>SSIEndTag: </li><li><a href="mod_include.html#ssiendtag">SSIEndTag</a></li><li>SSIErrorMsg: </li><li><a href="mod_include.html#ssierrormsg">SSIErrorMsg</a></li><li>SSIStartTag: </li><li><a href="mod_include.html#ssistarttag">SSIStartTag</a></li><li>SSITimeFormat: </li><li><a href="mod_include.html#ssitimeformat">SSITimeFormat</a></li><li>SSIUndefinedEcho: </li><li><a href="mod_include.html#ssiundefinedecho">SSIUndefinedEcho</a></li><li>SSLCACertificateFile: </li><li><a href="mod_ssl.html#sslcacertificatefile">SSLCACertificateFile</a></li><li>SSLCACertificatePath: </li><li><a href="mod_ssl.html#sslcacertificatepath">SSLCACertificatePath</a></li><li>SSLCARevocationFile: </li><li><a href="mod_ssl.html#sslcarevocationfile">SSLCARevocationFile</a></li><li>SSLCARevocationPath: </li><li><a href="mod_ssl.html#sslcarevocationpath">SSLCARevocationPath</a></li><li>SSLCertificateChainFile: </li><li><a href="mod_ssl.html#sslcertificatechainfile">SSLCertificateChainFile</a></li><li>SSLCertificateFile: </li><li><a href="mod_ssl.html#sslcertificatefile">SSLCertificateFile</a></li><li>SSLCertificateKeyFile: </li><li><a href="mod_ssl.html#sslcertificatekeyfile">SSLCertificateKeyFile</a></li><li>SSLCipherSuite: </li><li><a href="mod_ssl.html#sslciphersuite">SSLCipherSuite</a></li><li>SSLEngine: </li><li><a href="mod_ssl.html#sslengine">SSLEngine</a></li><li>SSLMutex: </li><li><a href="mod_ssl.html#sslmutex">SSLMutex</a></li><li>SSLOptions: </li><li><a href="mod_ssl.html#ssloptions">SSLOptions</a></li><li>SSLPassPhraseDialog: </li><li><a href="mod_ssl.html#sslpassphrasedialog">SSLPassPhraseDialog</a></li><li>SSLProtocol: </li><li><a href="mod_ssl.html#sslprotocol">SSLProtocol</a></li><li>SSLRandomSeed: </li><li><a href="mod_ssl.html#sslrandomseed">SSLRandomSeed</a></li><li>SSLRequire: </li><li><a href="mod_ssl.html#sslrequire">SSLRequire</a></li><li>SSLRequireSSL: </li><li><a href="mod_ssl.html#sslrequiressl">SSLRequireSSL</a></li><li>SSLSessionCache: </li><li><a href="mod_ssl.html#sslsessioncache">SSLSessionCache</a></li><li>SSLSessionCacheTimeout: </li><li><a href="mod_ssl.html#sslsessioncachetimeout">SSLSessionCacheTimeout</a></li><li>SSLVerifyClient: </li><li><a href="mod_ssl.html#sslverifyclient">SSLVerifyClient</a></li><li>SSLVerifyDepth: </li><li><a href="mod_ssl.html#sslverifydepth">SSLVerifyDepth</a></li><li>StartServers: mpm_common</li><li>StartServers: mpm_common</li><li>StartServers: </li><li><a href="mpm_common.html#startservers">StartServers</a></li><li>StartThreads: mpm_common</li><li>StartThreads: </li><li><a href="mpm_netware.html#startthreads">StartThreads</a></li><li>StartThreads: </li><li><a href="mpm_common.html#startthreads">StartThreads</a></li><li>SuexecUserGroup: </li><li><a href="mod_suexec.html#suexecusergroup">SuexecUserGroup</a></li><li>ThreadLimit: mpm_common</li><li>ThreadLimit: </li><li><a href="mpm_common.html#threadlimit">ThreadLimit</a></li><li>ThreadsPerChild: mpm_common</li><li>ThreadsPerChild: mpm_common</li><li>ThreadsPerChild: </li><li><a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li><li>ThreadStackSize: </li><li><a href="mpm_netware.html#threadstacksize">ThreadStackSize</a></li><li>TimeOut: </li><li><a href="core.html#timeout">TimeOut</a></li><li>TransferLog: </li><li><a href="mod_log_config.html#transferlog">TransferLog</a></li><li>TypesConfig: </li><li><a href="mod_mime.html#typesconfig">TypesConfig</a></li><li>UnsetEnv: </li><li><a href="mod_env.html#unsetenv">UnsetEnv</a></li><li>UseCanonicalName: </li><li><a href="core.html#usecanonicalname">UseCanonicalName</a></li><li>User: mpm_common</li><li>User: mpm_common</li><li>User: mpm_common</li><li>User: </li><li><a href="mpm_common.html#user">User</a></li><li>UserDir: </li><li><a href="mod_userdir.html#userdir">UserDir</a></li><li>VirtualDocumentRoot: </li><li><a href="mod_vhost_alias.html#virtualdocumentroot">VirtualDocumentRoot</a></li><li>VirtualDocumentRootIP: </li><li><a href="mod_vhost_alias.html#virtualdocumentrootip">VirtualDocumentRootIP</a></li><li>VirtualHost: </li><li><a href="core.html#virtualhost">VirtualHost</a></li><li>VirtualScriptAlias: </li><li><a href="mod_vhost_alias.html#virtualscriptalias">VirtualScriptAlias</a></li><li>VirtualScriptAliasIP: </li><li><a href="mod_vhost_alias.html#virtualscriptaliasip">VirtualScriptAliasIP</a></li><li>XBitHack: </li><li><a href="mod_include.html#xbithack">XBitHack</a></li></ul></blockquote><hr/><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/index.html.en
  
  Index: index.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><title>Module Index- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Module Index</h1>
      <p>
        Below is a list of all of the modules that come as part of
        the Apache distribution.  See also the complete
        alphabetical list of <a href="directives.html">all Apache
        directives</a>.
      </p>
    <h2>Core Features and Multi-Processing Modules</h2><dl><dt><a href="core.html">core</a></dt><dd>Core Apache HTTP Server features that are always
  available</dd><dt><a href="mpm_common.html">mpm_common</a></dt><dd>A collection of directives that are implemented by
  more than one multi-processing module (MPM)</dd><dt><a href="mpm_netware.html">mpm_netware</a></dt><dd>Multi-Processing Module implementing an exclusively threaded web
      server optimized for Novell NetWare</dd><dt><a href="mpm_winnt.html">mpm_winnt</a></dt><dd>This Multi-Processing Module is optimized for Windows
      NT.</dd><dt><a href="perchild.html">perchild</a></dt><dd>Multi-Processing Module allowing for daemon processes
      serving requests to be assigned a variety of different
      userids</dd><dt><a href="prefork.html">prefork</a></dt><dd>Implements a non-threaded, pre-forking web server</dd><dt><a href="worker.html">worker</a></dt><dd>Multi-Processing Module implementing a hybrid
      multi-threaded multi-process web server</dd></dl><h2>Other Modules</h2><dl><dt><a href="mod_access.html">mod_access</a></dt><dd>Provides access control based on client hostname, IP
  address, or other characteristics of the client request.</dd><dt><a href="mod_actions.html">mod_actions</a></dt><dd>This module provides for executing CGI scripts based on
  media type or request method.</dd><dt><a href="mod_alias.html">mod_alias</a></dt><dd>Provides for mapping different parts of the host
      filesystem in the document tree and for URL redirection</dd><dt><a href="mod_asis.html">mod_asis</a></dt><dd>Sends files that contain their own
  HTTP headers</dd><dt><a href="mod_auth.html">mod_auth</a></dt><dd>User authentication using text files</dd><dt><a href="mod_auth_anon.html">mod_auth_anon</a></dt><dd>Allows "anonymous" user access to authenticated
      areas</dd><dt><a href="mod_auth_dbm.html">mod_auth_dbm</a></dt><dd>Provides for user authentication using DBM
      files</dd><dt><a href="mod_auth_digest.html">mod_auth_digest</a></dt><dd>User authentication using MD5
      Digest Authentication.</dd><dt><a href="mod_autoindex.html">mod_autoindex</a></dt><dd>Generates directory indexes,
      automatically, similar to the Unix <em>ls</em> command or the
      Win32 <em>dir</em> shell command</dd><dt><a href="mod_cache.html">mod_cache</a></dt><dd>Content cache keyed to URIs</dd><dt><a href="mod_cern_meta.html">mod_cern_meta</a></dt><dd>CERN httpd metafile semantics</dd><dt><a href="mod_cgi.html">mod_cgi</a></dt><dd>Execution of CGI scripts</dd><dt><a href="mod_cgid.html">mod_cgid</a></dt><dd>Execution of CGI scripts using an
      external CGI daemon</dd><dt><a href="mod_charset_lite.html">mod_charset_lite</a></dt><dd>Specify character set translation or recoding</dd><dt><a href="mod_dav.html">mod_dav</a></dt><dd>Distributed Authoring and Versioning
  (<a href="http://www.webdav.org/">WebDAV</a>) functionality</dd><dt><a href="mod_deflate.html">mod_deflate</a></dt><dd>Compress content before
      it is delivered to the client</dd><dt><a href="mod_dir.html">mod_dir</a></dt><dd>Provides for "trailing slash" redirects and
      serving directory index files</dd><dt><a href="mod_env.html">mod_env</a></dt><dd>Modifies the environment which is
      passed to CGI scripts and SSI pages</dd><dt><a href="mod_example.html">mod_example</a></dt><dd>Illustrates the Apache module API</dd><dt><a href="mod_expires.html">mod_expires</a></dt><dd>Generation of
      <code>Expires</code> HTTP headers according to user-specified
      criteria</dd><dt><a href="mod_ext_filter.html">mod_ext_filter</a></dt><dd>Pass the response body
      through an external program before delivery to the
      client</dd><dt><a href="mod_file_cache.html">mod_file_cache</a></dt><dd>Caches a static list of files in memory</dd><dt><a href="mod_headers.html">mod_headers</a></dt><dd>Customization of HTTP request
      and response headers</dd><dt><a href="mod_imap.html">mod_imap</a></dt><dd>Server-side imagemap processing</dd><dt><a href="mod_include.html">mod_include</a></dt><dd>Server-parsed html documents (Server Side Includes)</dd><dt><a href="mod_info.html">mod_info</a></dt><dd>Provides a comprehensive overview of the server
  configuration</dd><dt><a href="mod_isapi.html">mod_isapi</a></dt><dd>ISAPI Extensions within Apache for Windows</dd><dt><a href="mod_log_config.html">mod_log_config</a></dt><dd>Logging of the requests made to the server</dd><dt><a href="mod_mime.html">mod_mime</a></dt><dd>Associates the requested filename's extensions
      with the file's behavior (handlers and filters)
      and content (mime-type, language, character set and
      encoding)</dd><dt><a href="mod_mime_magic.html">mod_mime_magic</a></dt><dd>Determines the MIME type of a file
      by looking at a few bytes of its contents</dd><dt><a href="mod_negotiation.html">mod_negotiation</a></dt><dd>Provides for <a href="../content-negotiation.html">content negotiation</a></dd><dt><a href="mod_proxy.html">mod_proxy</a></dt><dd>HTTP/1.1 proxy/gateway server</dd><dt><a href="mod_rewrite.html">mod_rewrite</a></dt><dd>Provides a rule-based rewriting engine to rewrite requested
  URLs on the fly</dd><dt><a href="mod_setenvif.html">mod_setenvif</a></dt><dd>Allows the setting of environment variables based
  on characteristics of the request</dd><dt><a href="mod_so.html">mod_so</a></dt><dd>
   This module provides for loading of executable code and
   modules into the server at start-up or restart time.
  </dd><dt><a href="mod_speling.html">mod_speling</a></dt><dd>Attempts to correct mistaken URLs that
  users might have entered by ignoring capitalization and by
  allowing up to one misspelling</dd><dt><a href="mod_ssl.html">mod_ssl</a></dt><dd>Strong cryptography using the Secure Sockets
  Layer (SSL) and Transport Layer Security (TLS) protocols</dd><dt><a href="mod_status.html">mod_status</a></dt><dd>Provides information on server activity and
  performance</dd><dt><a href="mod_suexec.html">mod_suexec</a></dt><dd>Allows CGI scripts to run as a specified user
  and Group</dd><dt><a href="mod_unique_id.html">mod_unique_id</a></dt><dd>Provides an environment variable with a unique
  identifier for each request</dd><dt><a href="mod_userdir.html">mod_userdir</a></dt><dd>Provides for user-specific
  directories</dd><dt><a href="mod_usertrack.html">mod_usertrack</a></dt><dd>
      This module uses cookies to provide for a
      <em>clickstream</em> log of user activity on a site.
  </dd><dt><a href="mod_vhost_alias.html">mod_vhost_alias</a></dt><dd>Provides for <a href="../vhosts/mass.html">dynamically configured mass virtual
  hosting</a></dd></dl></blockquote><hr/><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_access.html.en
  
  Index: mod_access.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_access- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_access</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides access control based on client hostname, IP
  address, or other characteristics of the client request.</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>access_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>The directives provided by mod_access are used in <a href="core.html#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a>, <a href="core.html#files" class="directive"><code class="directive">&lt;Files&gt;</code></a>, and <a href="core.html#location" class="directive"><code class="directive">&lt;Location&gt;</code></a> sections as well as
      <code><a href="core.html#accessfilename">.htaccess</a></code>
      files to control access to particular parts of the server. Access
      can be controlled based on the client hostname, IP address, or
      other characteristics of the client request, as captured in <a href="../env.html">environment variables</a>. The <a href="#allow" class="directive"><code class="directive">Allow</code></a> and <a href="#deny" class="directive"><code class="directive">Deny</code></a> directives are used to
      specify which clients are or are not allowed access to the server,
      while the <a href="#order" class="directive"><code class="directive">Order</code></a>
      directive sets the default access state, and configures how the
      <a href="#allow" class="directive"><code class="directive">Allow</code></a> and <a href="#deny" class="directive"><code class="directive">Deny</code></a> directives interact with each
      other.</p>
  
      <p>Both host-based access restrictions and password-based
      authentication may be implemented simultaneously. In that case,
      the <a href="core.html#satisfy" class="directive"><code class="directive">Satisfy</code></a> directive is used
      to determine how the two sets of restrictions interact.</p>
  
      <p>In general, access restriction directives apply to all
      access methods (<code>GET</code>, <code>PUT</code>,
      <code>POST</code>, etc). This is the desired behavior in most
      cases. However, it is possible to restrict some methods, while
      leaving other methods unrestricted, by enclosing the directives
      in a <a href="core.html#limit" class="directive"><code class="directive">&lt;Limit&gt;</code></a> section.</p>
  <h2>Directives</h2><ul><li><a href="#allow">Allow</a></li><li><a href="#deny">Deny</a></li><li><a href="#order">Order</a></li></ul><p><strong>See also </strong></p><ul><li><a href="core.html#satisfy" class="directive"><code class="directive">Satisfy</code></a></li><li><a href="core.html#require" class="directive"><code class="directive">Require</code></a></li></ul><hr/><h2><a name="Allow">Allow</a> <a name="allow">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Controls which hosts can access an area of the
  server</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td> Allow from
      all|<em>host</em>|env=<em>env-variable</em>
      [<em>host</em>|env=<em>env-variable</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Limit</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_access</td></tr></table></td></tr></table>
  
      <p>The <code class="directive">Allow</code> directive affects which hosts can
      access an area of the server. Access can be controlled by
      hostname, IP Address, IP Address range, or by other
      characteristics of the client request captured in environment
      variables.</p>
  
      <p>The first argument to this directive is always
      <code>from</code>. The subsequent arguments can take three
      different forms. If <code>Allow from all</code> is specified, then
      all hosts are allowed access, subject to the configuration of the
      <a href="#deny" class="directive"><code class="directive">Deny</code></a> and <a href="#order" class="directive"><code class="directive">Order</code></a> directives as discussed
      below. To allow only particular hosts or groups of hosts to access
      the server, the <em>host</em> can be specified in any of the
      following formats:</p>
  
      <dl>
        <dt>A (partial) domain-name</dt>
  
        <dd>Example: <code>Allow from apache.org</code><br>
         Hosts whose names match, or end in, this string are allowed
        access. Only complete components are matched, so the above
        example will match <code>foo.apache.org</code> but it will
        not match <code>fooapache.org</code>. This configuration will
        cause the server to perform a reverse DNS lookup on the
        client IP address, regardless of the setting of the <a href="core.html#hostnamelookups" class="directive"><code class="directive">HostnameLookups</code></a>
        directive.</dd>
  
        <dt>A full IP address</dt>
  
        <dd>Example: <code>Allow from 10.1.2.3</code><br>
         An IP address of a host allowed access</dd>
  
        <dt>A partial IP address</dt>
  
        <dd>Example: <code>Allow from 10.1</code><br>
         The first 1 to 3 bytes of an IP address, for subnet
        restriction.</dd>
  
        <dt>A network/netmask pair</dt>
  
        <dd>Example: <code>Allow from
        10.1.0.0/255.255.0.0</code><br>
         A network a.b.c.d, and a netmask w.x.y.z. For more
        fine-grained subnet restriction.</dd>
  
        <dt>A network/nnn CIDR specification</dt>
  
        <dd>Example: <code>Allow from 10.1.0.0/16</code><br>
         Similar to the previous case, except the netmask consists of
        nnn high-order 1 bits.</dd>
      </dl>
  
      <p>Note that the last three examples above match exactly the
      same set of hosts.</p>
  
      <p>IPv6 addresses and IPv6 subnets can be specified as shown
      below:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
         Allow from fe80::a00:20ff:fea7:ccea<br>
         Allow from fe80::a00:20ff:fea7:ccea/10
      </code></td></tr></table></blockquote>
  
      <p>The third format of the arguments to the
      <code class="directive">Allow</code> directive allows access to the server
      to be controlled based on the existence of an <a href="../env.html">environment variable</a>. When <code>Allow from
      env=</code><em>env-variable</em> is specified, then the request is
      allowed access if the environment variable <em>env-variable</em>
      exists. The server provides the ability to set environment
      variables in a flexible way based on characteristics of the client
      request using the directives provided by
      <code><a href="mod_setenvif.html">mod_setenvif</a></code>.  Therefore, this directive can be
      used to allow access based on such factors as the clients
      <code>User-Agent</code> (browser type), <code>Referer</code>, or
      other HTTP request header fields.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example:</strong></p><code>
  
  SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in<br>
  &lt;Directory /docroot&gt;<br>
  &nbsp;&nbsp;    Order Deny,Allow<br>
  &nbsp;&nbsp;    Deny from all<br>
  &nbsp;&nbsp;    Allow from env=let_me_in<br>
  &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
  
      <p>In this case, browsers with a user-agent string beginning
      with <code>KnockKnock/2.0</code> will be allowed access, and all
      others will be denied.</p>
  <hr/><h2><a name="Deny">Deny</a> <a name="deny">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Controls which hosts are denied access to the
  server</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td> Deny from
      all|<em>host</em>|env=<em>env-variable</em>
      [<em>host</em>|env=<em>env-variable</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Limit</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_access</td></tr></table></td></tr></table>
      <p>This directive allows access to the server to be restricted
      based on hostname, IP address, or environment variables. The
      arguments for the <code class="directive">Deny</code> directive are
      identical to the arguments for the <a href="#allow" class="directive"><code class="directive">Allow</code></a> directive.</p>
  <hr/><h2><a name="Order">Order</a> <a name="order">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Controls the default access state and the order in which
  Allow and Deny are
  evaluated.</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td> Order <em>ordering</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Order Deny,Allow</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Limit</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_access</td></tr></table></td></tr></table>
  
      <p>The <code class="directive">Order</code> directive controls the default
      access state and the order in which <a href="#allow" class="directive"><code class="directive">Allow</code></a> and <a href="#deny" class="directive"><code class="directive">Deny</code></a> directives are evaluated.
      <em>Ordering</em> is one of</p>
  
      <dl>
        <dt>Deny,Allow</dt>
  
        <dd>The <a href="#deny" class="directive"><code class="directive">Deny</code></a> directives
        are evaluated before the <a href="#allow" class="directive"><code class="directive">Allow</code></a> directives. Access is
        allowed by default.  Any client which does not match a
        <a href="#deny" class="directive"><code class="directive">Deny</code></a> directive or does
        match an <a href="#allow" class="directive"><code class="directive">Allow</code></a>
        directive will be allowed access to the server.</dd>
  
        <dt>Allow,Deny</dt>
  
        <dd>The <a href="#allow" class="directive"><code class="directive">Allow</code></a>
        directives are evaluated before the <a href="#deny" class="directive"><code class="directive">Deny</code></a> directives. Access is denied
        by default. Any client which does not match an <a href="#allow" class="directive"><code class="directive">Allow</code></a> directive or does match a
        <a href="#deny" class="directive"><code class="directive">Deny</code></a> directive will be
        denied access to the server.</dd>
  
        <dt>Mutual-failure</dt>
  
        <dd>Only those hosts which appear on the <a href="#allow" class="directive"><code class="directive">Allow</code></a> list and do not appear on
        the <a href="#deny" class="directive"><code class="directive">Deny</code></a> list are
        granted access. This ordering has the same effect as <code>Order
        Allow,Deny</code> and is deprecated in favor of that
        configuration.</dd>
      </dl>
  
      <p>Keywords may only be separated by a comma; no whitespace is
      allowed between them. Note that in all cases every <a href="#allow" class="directive"><code class="directive">Allow</code></a> and <a href="#deny" class="directive"><code class="directive">Deny</code></a> statement is evaluated.</p>
  
      <p>In the following example, all hosts in the apache.org domain
      are allowed access; all other hosts are denied access.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        Order Deny,Allow<br>
        Deny from all<br>
        Allow from apache.org<br>
  </code></td></tr></table></blockquote>
  
      <p>In the next example, all hosts in the apache.org domain are
      allowed access, except for the hosts which are in the
      foo.apache.org subdomain, who are denied access. All hosts not
      in the apache.org domain are denied access because the default
      state is to deny access to the server.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
         Order Allow,Deny<br>
         Allow from apache.org<br>
         Deny from foo.apache.org<br>
  </code></td></tr></table></blockquote>
  
      <p>On the other hand, if the <code>Order</code> in the last
      example is changed to <code>Deny,Allow</code>, all hosts will
      be allowed access. This happens because, regardless of the
      actual ordering of the directives in the configuration file,
      the <code>Allow from apache.org</code> will be evaluated last
      and will override the <code>Deny from foo.apache.org</code>.
      All hosts not in the <code>apache.org</code> domain will also
      be allowed access because the default state will change to
      <em>allow</em>.</p>
  
      <p>The presence of an <code>Order</code> directive can affect
      access to a part of the server even in the absence of accompanying
      <a href="#allow" class="directive"><code class="directive">Allow</code></a> and <a href="#deny" class="directive"><code class="directive">Deny</code></a> directives because of its effect
      on the default access state.  For example,</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        &lt;Directory /www&gt;<br>
        &nbsp;&nbsp;Order Allow,Deny<br>
        &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
  
      <p>will deny all access to the <code>/www</code> directory
      because the default access state will be set to
      <em>deny</em>.</p>
  
      <p>The <code class="directive">Order</code> directive controls the order of access
      directive processing only within each phase of the server's
      configuration processing. This implies, for example, that an
      <a href="#allow" class="directive"><code class="directive">Allow</code></a> or <a href="#deny" class="directive"><code class="directive">Deny</code></a> directive occurring in a
      <a href="core.html#location" class="directive"><code class="directive">&lt;Location&gt;</code></a> section will
      always be evaluated after an <a href="#allow" class="directive"><code class="directive">Allow</code></a> or <a href="#deny" class="directive"><code class="directive">Deny</code></a> directive occurring in a
      <a href="core.html#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a> section or
      <code>.htaccess</code> file, regardless of the setting of the
      <code class="directive">Order</code> directive. For details on the merging
      of configuration sections, see the documentation on <a href="../sections.html">How Directory, Location and Files sections
      work</a>.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_actions.html.en
  
  Index: mod_actions.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_actions- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_actions</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>This module provides for executing CGI scripts based on
  media type or request method.</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>actions_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module has two directives. The <a href="#action" class="directive"><code class="directive">Action</code></a> directive lets you run CGI
      scripts whenever a file of a certain type is requested. The
      <a href="#script" class="directive"><code class="directive">Script</code></a> directive lets
      you run CGI scripts whenever a particular method is used in a
      request. This makes it much easier to execute scripts that process
      files.</p>
  <h2>Directives</h2><ul><li><a href="#action">Action</a></li><li><a href="#script">Script</a></li></ul><hr/><h2><a name="Action">Action</a> <a name="action">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Activates a CGI script for a particular handler or
  content-type</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Action <em>action-type cgi-script</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_actions</td></tr></table></td></tr></table>
      <p>This directive adds an action, which will activate
      <em>cgi-script</em> when <em>action-type</em> is triggered by the
      request.  The <em>cgi-script</em> is the URL-path to a resource
      that has been designated as a CGI script using <a href="mod_alias.html#scriptaliase" class="directive"><code class="directive">ScriptAliase</code></a> or <a href="mod_mime.html#addhandler" class="directive"><code class="directive">AddHandler</code></a>.  The
      <em>action-type</em> can be either a <a href="../handler.html">handler</a> or a MIME content type. It
      sends the URL and file path of the requested document using the
      standard CGI PATH_INFO and PATH_TRANSLATED environment
      variables.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Examples</strong></p><code>
  
  
      # Requests for files of a particular type:<br>
      Action image/gif /cgi-bin/images.cgi<br>
  <br>
      # Files of a particular file extension<br>
      AddHandler my-file-type .xyz<br>
      Action my-file-type /cgi-bin/program.cgi<br>
  </code></td></tr></table></blockquote>
  
      <p>In the first example, requests for files with a MIME content
      type of <code>image/gif</code> will instead be handled by the
      specified cgi script <code>/cgi-bin/images.cgi</code>.</p>
  
      <p>In the second example, requests for files with a file extension of
      <code>.xyz</code> are handled instead by the specified cgi script 
      <code>/cgi-bin/program.cgi</code>.</p>
  <p><strong>See also </strong></p><ul><li><a href="mod_mime.html#addhandler" class="directive"><code class="directive">AddHandler</code></a></li></ul><hr/><h2><a name="Script">Script</a> <a name="script">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Activates a CGI script for a particular request
  method.</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td> Script <em>method cgi-script</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_actions</td></tr></table></td></tr></table>
      <p>This directive adds an action, which will activate
      <em>cgi-script</em> when a file is requested using the method of
      <em>method</em>. The <em>cgi-script</em> is the URL-path to a
      resource that has been designated as a CGI script using <a href="mod_alias.html#scriptaliase" class="directive"><code class="directive">ScriptAliase</code></a> or <a href="mod_mime.html#addhandler" class="directive"><code class="directive">AddHandler</code></a>.  The URL and
      file path of the requested document is sent using the standard CGI
      PATH_INFO and PATH_TRANSLATED environment variables.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">
        Any arbitrary method name may be used. <strong>Method names are
        case-sensitive</strong>, so <code>Script&nbsp;PUT</code> and
        <code>Script&nbsp;put</code> have two entirely different
        effects.
  </td></tr></table></blockquote>
  
      <p>Note that the Script command defines default actions only.
      If a CGI script is called, or some other resource that is
      capable of handling the requested method internally, it will do
      so. Also note that Script with a method of <code>GET</code>
      will only be called if there are query arguments present
      (<em>e.g.</em>, foo.html?hi). Otherwise, the request will
      proceed normally.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Examples</strong></p><code>
  
      # For &lt;ISINDEX&gt;-style searching<br>
      Script GET /cgi-bin/search<br>
      # A CGI PUT handler<br>
      Script PUT /~bob/put.cgi<br>
  </code></td></tr></table></blockquote>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_alias.html.en
  
  Index: mod_alias.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_alias- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_alias</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides for mapping different parts of the host
      filesystem in the document tree and for URL redirection</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>alias_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>The directives contained in this module allow for manipulation
      and control of URLs as requests arrive at the server. The
      <a href="#alias" class="directive"><code class="directive">Alias</code></a> and <a href="#scriptalias" class="directive"><code class="directive">ScriptAlias</code></a> directives are used to
      map between URLs and filesystem paths.  This allows for content
      which is not directly under the <a href="core.html#documentroot" class="directive"><code class="directive">DocumentRoot</code></a> served as part of the web
      document tree. The <a href="#scriptalias" class="directive"><code class="directive">ScriptAlias</code></a> directive has the
      additional effect of marking the target directory as containing
      only CGI scripts.</p>
  
      <p>The <a href="#redirect" class="directive"><code class="directive">Redirect</code></a>
      directives are used to instruct clients to make a new request with
      a different URL. They are often used when a resource has moved to
      a new location.</p>
  <h2>Directives</h2><ul><li><a href="#alias">Alias</a></li><li><a href="#aliasmatch">AliasMatch</a></li><li><a href="#redirect">Redirect</a></li><li><a href="#redirectmatch">RedirectMatch</a></li><li><a href="#redirectpermanent">RedirectPermanent</a></li><li><a href="#redirecttemp">RedirectTemp</a></li><li><a href="#scriptalias">ScriptAlias</a></li><li><a href="#scriptaliasmatch">ScriptAliasMatch</a></li></ul><p><strong>See also </strong></p><ul><li><code><a href="mod_rewrite.html">mod_rewrite</a></code></li><li><a href="../urlmapping.html">Mapping URLs to the filesystem</a></li></ul><hr/><h2><a name="Alias">Alias</a> <a name="alias">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps URLs to filesystem locations</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td> Alias <em>URL-path
      file-path</em>|<em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_alias</td></tr></table></td></tr></table>
  
      <p>The <code class="directive">Alias</code> directive allows documents to
      be stored in the local filesystem other than under the 
      <a href="core.html#documentroot" class="directive"><code class="directive">DocumentRoot</code></a>. URLs with a
      (%-decoded) path beginning with <em>url-path</em> will be mapped
      to local files beginning with <em>directory-filename</em>.</p>
  
      <p>Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>Alias /image /ftp/pub/image</code></td></tr></table></blockquote>
  
      <p>A request for http://myserver/image/foo.gif would cause the
      server to return the file /ftp/pub/image/foo.gif.</p>
  
      <p>Note that if you include a trailing / on the
      <em>url-path</em> then the server will require a trailing / in
      order to expand the alias. That is, if you use <code>Alias
      /icons/ /usr/local/apache/icons/</code> then the url
      <code>/icons</code> will not be aliased.</p>
  
      <p>Note that you may need to specify additional <a href="core.html#<directory>" class="directive"><code class="directive">&lt;Directory&gt;</code></a> sections which cover
      the <em>destination</em> of aliases.  Aliasing occurs before
      <a href="core.html#<directory>" class="directive"><code class="directive">&lt;Directory&gt;</code></a> sections
      are checked, so only the destination of aliases are affected.
      (Note however <a href="core.html#<location>" class="directive"><code class="directive">&lt;Location&gt;</code></a>
      sections are run through once before aliases are performed, so
      they will apply.)</p>
  
  <hr/><h2><a name="AliasMatch">AliasMatch</a> <a name="aliasmatch">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps URLs to filesystem locations using regular 
  expressions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AliasMatch <em>regex
      file-path</em>|<em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_alias</td></tr></table></td></tr></table>
      <p>This directive is equivalent to <a href="#alias" class="directive"><code class="directive">Alias</code></a>, but makes use of standard
      regular expressions, instead of simple prefix matching. The
      supplied regular expression is matched against the URL-path, and
      if it matches, the server will substitute any parenthesized
      matches into the given string and use it as a filename. For
      example, to activate the <code>/icons</code> directory, one might
      use:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AliasMatch ^/icons(.*) /usr/local/apache/icons$1
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="Redirect">Redirect</a> <a name="redirect">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sends an external redirect asking the client to fetch
  a different URL</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Redirect [<em>status</em>] <em>URL-path URL</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_alias</td></tr></table></td></tr></table>
      <p>The Redirect directive maps an old URL into a new one. The
      new URL is returned to the client which attempts to fetch it
      again with the new address. <em>URL-path</em> a (%-decoded)
      path; any requests for documents beginning with this path will
      be returned a redirect error to a new (%-encoded) URL beginning
      with <em>URL</em>.</p>
  
      <p>Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>Redirect /service http://foo2.bar.com/service</code></td></tr></table></blockquote>
  
      <p>If the client requests http://myserver/service/foo.txt, it
      will be told to access http://foo2.bar.com/service/foo.txt
      instead.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note</strong></p> <p>Redirect directives take precedence over
  Alias and ScriptAlias directives, irrespective of their ordering in
  the configuration file. Also, <em>URL-path</em> must be an absolute
  path, not a relative path, even when used with .htaccess files or
  inside of <a href="core.html#<directory>" class="directive"><code class="directive">&lt;Directory&gt;</code></a>
  sections.</p></td></tr></table></blockquote>
  
      <p>If no <em>status</em> argument is given, the redirect will
      be "temporary" (HTTP status 302). This indicates to the client
      that the resource has moved temporarily. The <em>status</em>
      argument can be used to return other HTTP status codes:</p>
  
      <dl>
        <dt>permanent</dt>
  
        <dd>Returns a permanent redirect status (301) indicating that
        the resource has moved permanently.</dd>
  
        <dt>temp</dt>
  
        <dd>Returns a temporary redirect status (302). This is the
        default.</dd>
  
        <dt>seeother</dt>
  
        <dd>Returns a "See Other" status (303) indicating that the
        resource has been replaced.</dd>
  
        <dt>gone</dt>
  
        <dd>Returns a "Gone" status (410) indicating that the
        resource has been permanently removed. When this status is
        used the <em>url</em> argument should be omitted.</dd>
      </dl>
  
      <p>Other status codes can be returned by giving the numeric
      status code as the value of <em>status</em>. If the status is
      between 300 and 399, the <em>url</em> argument must be present,
      otherwise it must be omitted. Note that the status must be
      known to the Apache code (see the function
      <code>send_error_response</code> in http_protocol.c).</p>
  
      <p>Example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
          Redirect permanent /one http://example.com/two<br>
          Redirect 303 /three http://example.com/other
      </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="RedirectMatch">RedirectMatch</a> <a name="redirectmatch">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sends an external redirect asking the client to fetch
  a different URL based on a regular expression match of the 
  current URL</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RedirectMatch [<em>status</em>] <em>regex URL</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_alias</td></tr></table></td></tr></table>
      <p>This directive is equivalent to <a href="#redirect" class="directive"><code class="directive">Redirect</code></a>, but makes use of standard
      regular expressions, instead of simple prefix matching. The
      supplied regular expression is matched against the URL-path, and
      if it matches, the server will substitute any parenthesized
      matches into the given string and use it as a filename. For
      example, to redirect all GIF files to like-named JPEG files on
      another server, one might use:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="RedirectPermanent">RedirectPermanent</a> <a name="redirectpermanent">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sends an external permanent redirect asking the client to fetch
  a different URL</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RedirectPermanent <em>URL-path URL</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_alias</td></tr></table></td></tr></table>
      <p>This directive makes the client know that the Redirect is
      permanent (status 301). Exactly equivalent to <code>Redirect
      permanent</code>.</p>
  <hr/><h2><a name="RedirectTemp">RedirectTemp</a> <a name="redirecttemp">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sends an external temporary redirect asking the client to fetch
  a different URL</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RedirectTemp <em>URL-path URL</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_alias</td></tr></table></td></tr></table>
      <p>This directive makes the client know that the Redirect is
      only temporary (status 302). Exactly equivalent to
      <code>Redirect temp</code>.</p>
  <hr/><h2><a name="ScriptAlias">ScriptAlias</a> <a name="scriptalias">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps a URL to a filesystem location and designates the
  target as a CGI script</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ScriptAlias 
  <em>URL-path file-path</em>|<em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_alias</td></tr></table></td></tr></table>
      <p>The <code class="directive">ScriptAlias</code> directive has the same
      behavior as the <a href="#alias" class="directive"><code class="directive">Alias</code></a>
      directive, except that in addition it marks the target directory
      as containing CGI scripts that will be processed by <code><a href="mod_cgi.html">mod_cgi</a></code>'s cgi-script handler. URLs with a
      (%-decoded) path beginning with <em>URL-path</em> will be mapped
      to scripts beginning with the second argument which is a full
      pathname in the local filesystem.</p>
  
      <p>Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>ScriptAlias /cgi-bin/ /web/cgi-bin/</code></td></tr></table></blockquote>
  
      <p>A request for <code>http://myserver/cgi-bin/foo</code> would cause the
      server to run the script <code>/web/cgi-bin/foo</code>.</p>
  <hr/><h2><a name="ScriptAliasMatch">ScriptAliasMatch</a> <a name="scriptaliasmatch">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps a URL to a filesystem location using a regular expression
  and designates the target as a CGI script</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ScriptAliasMatch
  <em>regex file-path</em>|<em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_alias</td></tr></table></td></tr></table>
      <p>This directive is equivalent to <a href="#scriptalias" class="directive"><code class="directive">ScriptAlias</code></a>, but makes use of standard
      regular expressions, instead of simple prefix matching. The
      supplied regular expression is matched against the URL-path,
      and if it matches, the server will substitute any parenthesized
      matches into the given string and use it as a filename. For
      example, to activate the standard <code>/cgi-bin</code>, one
      might use:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
  </code></td></tr></table></blockquote>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_asis.html.en
  
  Index: mod_asis.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_asis- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_asis</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Sends files that contain their own
  HTTP headers</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>asis_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module provides the handler <code>send-as-is</code>
      which causes Apache to send the document without adding most of
      the usual HTTP headers.</p>
  
      <p>This can be used to send any kind of data from the server,
      including redirects and other special HTTP responses, without
      requiring a cgi-script or an nph script.</p>
  
      <p>For historical reasons, this module will also process any
      file with the mime type <code>httpd/send-as-is</code>.</p>
  <h2>Directives</h2><p/><h2>Usage</h2>
  
      <p>In the server configuration file, associate files with the
      <code>send-as-is</code> handler <em>e.g.</em></p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>AddHandler send-as-is asis</code></td></tr></table></blockquote>
  
      <p>The contents of any file with a <code>.asis</code> extension
      will then be sent by Apache to the client with almost no
      changes. Clients will need HTTP headers to be attached, so do
      not forget them. A Status: header is also required; the data
      should be the 3-digit HTTP response code, followed by a textual
      message.</p>
  
      <p>Here's an example of a file whose contents are sent <em>as
      is</em> so as to tell the client that a file has
      redirected.</p>
  
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>Status: 301 Now where did I leave that URL<br>
         Location: http://xyz.abc.com/foo/bar.html<br>
         Content-type: text/html<br>
        <br>
         &lt;HTML&gt;<br>
         &lt;HEAD&gt;<br>
         &lt;TITLE&gt;Lame excuses'R'us&lt;/TITLE&gt;<br>
         &lt;/HEAD&gt;<br>
         &lt;BODY&gt;<br>
         &lt;H1&gt;Fred's exceptionally wonderful page has moved
        to<br>
         &lt;A
        HREF="http://xyz.abc.com/foo/bar.html"&gt;Joe's&lt;/A&gt;
        site.<br>
         &lt;/H1&gt;<br>
         &lt;/BODY&gt;<br>
         &lt;/HTML&gt;
  </code></td></tr></table></blockquote>
  
      <p>Notes: the server always adds a Date: and Server: header to
      the data returned to the client, so these should not be
      included in the file. The server does <em>not</em> add a
      Last-Modified header; it probably should. </p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_auth.html.en
  
  Index: mod_auth.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_auth- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_auth</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>User authentication using text files</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>auth_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
      <p>This module allows the use of HTTP Basic Authentication to
      restrict access by looking up users in plain text password and
      group files. Similar functionality and greater scalability is
      provided by <code><a href="mod_auth_dbm.html">mod_auth_dbm</a></code>.  HTTP Digest
      Authentication is provided by
      <code><a href="mod_auth_digest.html">mod_auth_digest</a></code>.</p>
  
  <h2>Directives</h2><ul><li><a href="#authauthoritative">AuthAuthoritative</a></li><li><a href="#authgroupfile">AuthGroupFile</a></li><li><a href="#authuserfile">AuthUserFile</a></li></ul><p><strong>See also </strong></p><ul><li><a href="core.html#require" class="directive"><code class="directive">Require</code></a></li><li><a href="core.html#satisfy" class="directive"><code class="directive">Satisfy</code></a></li><li><a href="core.html#authname" class="directive"><code class="directive">AuthName</code></a></li><li><a href="core.html#authtype" class="directive"><code class="directive">AuthType</code></a></li></ul><hr/><h2><a name="AuthAuthoritative">AuthAuthoritative</a> <a name="authauthoritative">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets whether authorization and authentication are
  passed to lower level modules</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthAuthoritative on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AuthAuthoritative on</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth</td></tr></table></td></tr></table>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">This information has not been updated for Apache 2.0, which
  uses a different system for module ordering.</td></tr></table></blockquote>
  
      <p>Setting the <code class="directive">AuthAuthoritative</code> directive
      explicitly to <strong>'off'</strong> allows for both
      authentication and authorization to be passed on to lower level
      modules (as defined in the <code>Configuration</code> and
      <code>modules.c</code> files) if there is <strong>no
      userID</strong> or <strong>rule</strong> matching the supplied
      userID. If there is a userID and/or rule specified; the usual
      password and access checks will be applied and a failure will give
      an Authorization Required reply.</p>
  
      <p>So if a userID appears in the database of more than one module;
      or if a valid <a href="core.html#require" class="directive"><code class="directive">Require</code></a>
      directive applies to more than one module; then the first module
      will verify the credentials; and no access is passed on;
      regardless of the AuthAuthoritative setting.</p>
  
      <p>A common use for this is in conjunction with one of the
      database modules; such as <code><a href="auth_dbm.html">auth_dbm</a></code>,
      <code>mod_auth_msql</code>, and <code><a href="mod_auth_anon.html">mod_auth_anon</a></code>.
      These modules supply the bulk of the user credential checking; but
      a few (administrator) related accesses fall through to a lower
      level with a well protected <a href="#authuserfile" class="directive"><code class="directive">AuthUserFile</code></a>.</p>
  
      <p>By default; control is not passed on; and an unknown userID or
      rule will result in an Authorization Required reply. Not setting
      it thus keeps the system secure; and forces an NCSA compliant
      behaviour.</p>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Security</strong></p> Do consider the implications of
      allowing a user to allow fall-through in his .htaccess file; and
      verify that this is really what you want; Generally it is easier
      to just secure a single .htpasswd file, than it is to secure a
      database such as mSQL. Make sure that the <a href="#authuserfile" class="directive"><code class="directive">AuthUserFile</code></a> is stored outside the
      document tree of the web-server; do <em>not</em> put it in the
      directory that it protects. Otherwise, clients will be able to
      download the <a href="#authuserfile" class="directive"><code class="directive">AuthUserFile</code></a>.
      </td></tr></table></blockquote>
  <hr/><h2><a name="AuthGroupFile">AuthGroupFile</a> <a name="authgroupfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the name of a text file containing the list
  of user groups for authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthGroupFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthGroupFile</code> directive sets the
      name of a textual file containing the list of user groups for user
      authentication.  <em>File-path</em> is the path to the group
      file. If it is not absolute (<em>i.e.</em>, if it doesn't begin
      with a slash), it is treated as relative to the <a href="core.html#serverroot" class="directive"><code class="directive">ServerRoot</code></a>.</p>
  
      <p>Each line of the group file contains a groupname followed by a
      colon, followed by the member usernames separated by spaces.
      Example:</p> 
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>mygroup: bob joe anne</code></td></tr></table></blockquote> 
  
      <p>Note that searching large text files is <em>very</em>
      inefficient; <a href="mod_auth_dbm.html#authdbmgroupfile" class="directive"><code class="directive">AuthDBMGroupFile</code></a> should be used
      instead.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Security</strong></p>
      <p>Make sure that the AuthGroupFile is stored outside
      the document tree of the web-server; do <em>not</em> put it in
      the directory that it protects. Otherwise, clients will be able
      to download the AuthGroupFile.</p>
  </td></tr></table></blockquote>
  <hr/><h2><a name="AuthUserFile">AuthUserFile</a> <a name="authuserfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the name of a text file containing the list of users and
  passwords for authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthUserFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthUserFile</code> directive sets the name
      of a textual file containing the list of users and passwords for
      user authentication. <em>File-path</em> is the path to the user
      file. If it is not absolute (<em>i.e.</em>, if it doesn't begin
      with a slash), it is treated as relative to the <a href="core.html#serverroot" class="directive"><code class="directive">ServerRoot</code></a>.</p>
  
      <p>Each line of the user file file contains a username followed by
      a colon, followed by the <code>crypt()</code> encrypted
      password. The behavior of multiple occurrences of the same user is
      undefined.</p>
  
      <p>The utility <a href="../programs/htpasswd.html">htpasswd</a>
      which is installed as part of the binary distribution, or which
      can be found in <code>src/support</code>, is used to maintain
      this password file. See the <code>man</code> page for more
      details. In short:</p>
  
      <p>Create a password file 'Filename' with 'username' as the
      initial ID. It will prompt for the password:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>htpasswd -c Filename username</code></td></tr></table></blockquote>
  
  <p>Adds or modifies in password file 'Filename' the 'username':</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>htpasswd Filename username2</code></td></tr></table></blockquote>
  
      <p>Note that searching large text files is <em>very</em>
      inefficient; <a href="mod_auth_dbm.html#authdbmuserfile" class="directive"><code class="directive">AuthDBMUserFile</code></a> should be used
      instead.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Security</strong></p><p>Make sure that the AuthUserFile is
  stored outside the document tree of the web-server; do <em>not</em>
  put it in the directory that it protects. Otherwise, clients will be
  able to download the AuthUserFile.</p></td></tr></table></blockquote>
  
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_auth_anon.html.en
  
  Index: mod_auth_anon.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_auth_anon- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_auth_anon</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Allows "anonymous" user access to authenticated
      areas</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>auth_anon_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module does access control in a manner similar to
      anonymous-ftp sites; <em>i.e.</em> have a 'magic' user id
      'anonymous' and the email address as a password. These email
      addresses can be logged.</p>
  
      <p>Combined with other (database) access control methods, this
      allows for effective user tracking and customization according
      to a user profile while still keeping the site open for
      'unregistered' users. One advantage of using Auth-based user
      tracking is that, unlike magic-cookies and funny URL
      pre/postfixes, it is completely browser independent and it
      allows users to share URLs.</p>
  <h2>Directives</h2><ul><li><a href="#anonymous">Anonymous</a></li><li><a href="#anonymous_authoritative">Anonymous_Authoritative</a></li><li><a href="#anonymous_logemail">Anonymous_LogEmail</a></li><li><a href="#anonymous_mustgiveemail">Anonymous_MustGiveEmail</a></li><li><a href="#anonymous_nouserid">Anonymous_NoUserID</a></li><li><a href="#anonymous_verifyemail">Anonymous_VerifyEmail</a></li></ul><h2>Example</h2>
  
      <p>The example below (when combined with the Auth directives of a
      htpasswd-file based (or GDM, mSQL <em>etc.</em>) base access
      control system allows users in as 'guests' with the following
      properties:</p>
  
      <ul>
        <li>It insists that the user enters a userId.
        (<code>Anonymous_NoUserId</code>)</li>
  
        <li>It insists that the user enters a password.
        (<code>Anonymous_MustGiveEmail</code>)</li>
  
        <li>The password entered must be a valid email address, ie.
        contain at least one '@' and a '.'.
        (<code>Anonymous_VerifyEmail</code>)</li>
  
        <li>The userID must be one of <code>anonymous guest www test
        welcome</code> and comparison is <strong>not</strong> case
        sensitive.</li>
  
        <li>And the Email addresses entered in the passwd field are
        logged to the error log file
        (<code>Anonymous_LogEmail</code>)</li>
      </ul>
  
      <p>Excerpt of httpd.conf:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
         Anonymous_NoUserId off<br>
         Anonymous_MustGiveEmail on<br>
         Anonymous_VerifyEmail on<br>
         Anonymous_LogEmail on<br>
         Anonymous anonymous guest www test welcome<br>
  <br>
        AuthName "Use 'anonymous' &amp; Email address for
        guest entry"<br>
        AuthType basic<br>
  <br>
         # An
        AuthUserFile/AuthDBUserFile/AuthDBMUserFile<br>
         # directive must be specified, or use<br>
         # Anonymous_Authoritative for public access.<br>
         # In the .htaccess for the public directory, add:<br>
         &lt;Files *&gt;<br>
         Order Deny,Allow<br>
         Allow from all<br>
  <br>
         Require valid-user<br>
         &lt;/Files&gt;<br>
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="Anonymous">Anonymous</a> <a name="anonymous">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Specifies userIDs that areallowed access without
  password verification</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Anonymous <em>user</em> [<em>user</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_anon</td></tr></table></td></tr></table>
      <p>A list of one or more 'magic' userIDs which are allowed
      access without password verification. The userIDs are space
      separated. It is possible to use the ' and " quotes to allow a
      space in a userID as well as the \ escape character.</p>
  
      <p>Please note that the comparison is
      <strong>case-IN-sensitive</strong>.<br>
       I strongly suggest that the magic username
      '<code>anonymous</code>' is always one of the allowed
      userIDs.</p>
  
      <p>Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>Anonymous anonymous "Not Registered" 'I don\'t know'</code></td></tr></table></blockquote>
  
      <p>This would allow the user to enter without password
      verification by using the userId's 'anonymous',
      'AnonyMous','Not Registered' and 'I Don't Know'.</p>
  <hr/><h2><a name="Anonymous_Authoritative">Anonymous_Authoritative</a> <a name="anonymous_authoritative">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures if authorization will fall-through
  to other methods</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Anonymous_Authoritative on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Anonymous_Authoritative off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_anon</td></tr></table></td></tr></table>
      <p>When set 'on', there is no fall-through to other authorization
      methods. So if a userID does not match the values specified in the
      <a href="#anonymous" class="directive"><code class="directive">Anonymous</code></a> directive,
      access is denied.</p>
  
      <p>Be sure you know what you are doing when you decide to
      switch it on. And remember that it is the linking order of the
      modules (in the Configuration / Make file) which details the
      order in which the Authorization modules are queried.</p>
  <hr/><h2><a name="Anonymous_LogEmail">Anonymous_LogEmail</a> <a name="anonymous_logemail">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets whether the password entered will be logged in the
  error log</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Anonymous_LogEmail on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Anonymous_LogEmail on</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_anon</td></tr></table></td></tr></table>
      <p>When set <code>on</code>, the default, the 'password' entered
      (which hopefully contains a sensible email address) is logged in
      the error log.</p>
  <hr/><h2><a name="Anonymous_MustGiveEmail">Anonymous_MustGiveEmail</a> <a name="anonymous_mustgiveemail">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Specifies whether blank passwords are allowed</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Anonymous_MustGiveEmail on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Anonymous_MustGiveEmail on</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_anon</td></tr></table></td></tr></table>
      <p>Specifies whether the user must specify an email address as
      the password. This prohibits blank passwords.</p>
  <hr/><h2><a name="Anonymous_NoUserID">Anonymous_NoUserID</a> <a name="anonymous_nouserid">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets whether the userID field may be empty</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Anonymous_NoUserID on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Anonymous_NoUserID off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_anon</td></tr></table></td></tr></table>
      <p>When set <code>on</code>, users can leave the userID (and
      perhaps the password field) empty. This can be very convenient for
      MS-Explorer users who can just hit return or click directly on the
      OK button; which seems a natural reaction.</p>
  <hr/><h2><a name="Anonymous_VerifyEmail">Anonymous_VerifyEmail</a> <a name="anonymous_verifyemail">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets whether to check the password field for a correctly
  formatted email address</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Anonymous_VerifyEmail on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Anonymous_VerifyEmail off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_anon</td></tr></table></td></tr></table>
      <p>When set <code>on</code> the 'password' entered is checked for
      at least one '@' and a '.' to encourage users to enter valid email
      addresses (see the above <a href="#auth_logemail" class="directive"><code class="directive">Auth_LogEmail</code></a>).</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_auth_dbm.html.en
  
  Index: mod_auth_dbm.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_auth_dbm- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_auth_dbm</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides for user authentication using DBM
      files</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>auth_dbm_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module provides for HTTP Basic Authentication, where
      the usernames and passwords are stored in DBM type database
      files. It is an alternative to the plain text password files
      provided by <code><a href="mod_auth.html">mod_auth</a></code>.</p>
  <h2>Directives</h2><ul><li><a href="#authdbmauthoritative">AuthDBMAuthoritative</a></li><li><a href="#authdbmgroupfile">AuthDBMGroupFile</a></li><li><a href="#authdbmtype">AuthDBMType</a></li><li><a href="#authdbmuserfile">AuthDBMUserFile</a></li></ul><p><strong>See also </strong></p><ul><li><a href="core.html#authname" class="directive"><code class="directive">AuthName</code></a></li><li><a href="core.html#authtype" class="directive"><code class="directive">AuthType</code></a></li><li><a href="core.html#require" class="directive"><code class="directive">Require</code></a></li><li><a href="core.html#satisfy" class="directive"><code class="directive">Satisfy</code></a></li></ul><hr/><h2><a name="AuthDBMAuthoritative">AuthDBMAuthoritative</a> <a name="authdbmauthoritative">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets whether authentication and authorization will be
  passwed on to lower level modules</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDBMAuthoritative on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AuthDBMAuthoritative on</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_dbm</td></tr></table></td></tr></table>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">This information has not been updated to take into account the
  new module ordering techniques in Apache 2.0</td></tr></table></blockquote>
  
      <p>Setting the <code class="directive">AuthDBMAuthoritative</code>
      directive explicitly to <strong>'off'</strong> allows for both
      authentication and authorization to be passed on to lower level
      modules (as defined in the <code>Configuration</code> and
      <code>modules.c</code> file if there is <strong>no userID</strong>
      or <strong>rule</strong> matching the supplied userID. If there is
      a userID and/or rule specified; the usual password and access
      checks will be applied and a failure will give an Authorization
      Required reply.</p>
  
      <p>So if a userID appears in the database of more than one module;
      or if a valid <a href="core.html#require" class="directive"><code class="directive">Require</code></a>
      directive applies to more than one module; then the first module
      will verify the credentials; and no access is passed on;
      regardless of the <code class="directive">AuthAuthoritative</code> setting.</p>
  
      <p>A common use for this is in conjunction with one of the
      basic auth modules; such as <code><a href="mod_auth.html">mod_auth</a></code>. Whereas this
      DBM module supplies the bulk of the user credential checking; a
      few (administrator) related accesses fall through to a lower
      level with a well protected .htpasswd file.</p>
  
      <p>By default, control is not passed on and an unknown userID
      or rule will result in an Authorization Required reply. Not
      setting it thus keeps the system secure and forces an NCSA
      compliant behaviour.</p>
  
      <p>Security: Do consider the implications of allowing a user to
      allow fall-through in his .htaccess file; and verify that this
      is really what you want; Generally it is easier to just secure
      a single .htpasswd file, than it is to secure a database which
      might have more access interfaces.</p>
  <hr/><h2><a name="AuthDBMGroupFile">AuthDBMGroupFile</a> <a name="authdbmgroupfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the name of the database file containing the list
  of user groups for authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDBMGroupFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_dbm</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthDBMGroupFile</code> directive sets the
      name of a DBM file containing the list of user groups for user
      authentication.  <em>File-path</em> is the absolute path to the
      group file.</p>
  
      <p>The group file is keyed on the username. The value for a
      user is a comma-separated list of the groups to which the users
      belongs. There must be no whitespace within the value, and it
      must never contain any colons.</p>
  
      <p>Security: make sure that the
      <code class="directive">AuthDBMGroupFile</code> is stored outside the
      document tree of the web-server; do <em>not</em> put it in the
      directory that it protects. Otherwise, clients will be able to
      download the <code class="directive">AuthDBMGroupFile</code> unless
      otherwise protected.</p>
  
      <p>Combining Group and Password DBM files: In some cases it is
      easier to manage a single database which contains both the
      password and group details for each user. This simplifies any
      support programs that need to be written: they now only have to
      deal with writing to and locking a single DBM file. This can be
      accomplished by first setting the group and password files to
      point to the same DBM:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  AuthDBMGroupFile /www/userbase<br>
  AuthDBMUserFile /www/userbase
  </code></td></tr></table></blockquote>
  
      <p>The key for the single DBM is the username. The value consists
      of</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>Unix Crypt-ed Password : List of Groups [ : (ignored)
        ]</code></td></tr></table></blockquote>
  
      <p>The password section contains the Unix <code>crypt()</code>
      password as before. This is followed by a colon and the comma
      separated list of groups. Other data may optionally be left in the
      DBM file after another colon; it is ignored by the authentication
      module. This is what www.telescope.org uses for its combined
      password and group database.</p>
  <hr/><h2><a name="AuthDBMType">AuthDBMType</a> <a name="authdbmtype">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the type of database file that is used to
  store passwords</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDBMType default|SDBM|GDBM|DB</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AuthDBMType default</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_dbm</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in version 2.0.30 and later.</td></tr></table></td></tr></table>
  
  <p>Sets the type of database file that is used to store the passwords.
  The default database type is determined at compile time.  The
  availability of other types of database files also depends on
  compile-time settings.</p>
  
  <p>It is crucial that whatever program you use to create your password
  files is configured to use the same type of database.</p>
  <hr/><h2><a name="AuthDBMUserFile">AuthDBMUserFile</a> <a name="authdbmuserfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets thename of a database file containing the list of users and
  passwords for authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDBMUserFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_dbm</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthDBMUserFile</code> directive sets the
      name of a DBM file containing the list of users and passwords for
      user authentication. <em>File-path</em> is the absolute path to
      the user file.</p>
  
      <p>The user file is keyed on the username. The value for a user is
      the <code>crypt()</code> encrypted password, optionally followed
      by a colon and arbitrary data. The colon and the data following it
      will be ignored by the server.</p>
  
      <p>Security: make sure that the
      <code class="directive">AuthDBMUserFile</code> is stored outside the
      document tree of the web-server; do <em>not</em> put it in the
      directory that it protects. Otherwise, clients will be able to
      download the <code class="directive">AuthDBMUserFile</code>.</p>
  
      <p>Important compatibility note: The implementation of
      "dbmopen" in the apache modules reads the string length of the
      hashed values from the DBM data structures, rather than relying
      upon the string being NULL-appended. Some applications, such as
      the Netscape web server, rely upon the string being
      NULL-appended, so if you are having trouble using DBM files
      interchangeably between applications this may be a part of the
      problem.</p>
  
      <p>A perl script called
      <a href="../programs/dbmmanage.html">dbmmanage</a> is included with
      Apache. This program can be used to create and update DBM
      format password files for use with this module.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_auth_digest.html.en
  
  Index: mod_auth_digest.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_auth_digest- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_auth_digest</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>User authentication using MD5
      Digest Authentication.</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>auth_digest_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module implements HTTP Digest Authentication.  However, it
      has not been extensively tested and is therefore marked
      experimental.</p>
  <h2>Directives</h2><ul><li><a href="#authdigestalgorithm">AuthDigestAlgorithm</a></li><li><a href="#authdigestdomain">AuthDigestDomain</a></li><li><a href="#authdigestfile">AuthDigestFile</a></li><li><a href="#authdigestgroupfile">AuthDigestGroupFile</a></li><li><a href="#authdigestnccheck">AuthDigestNcCheck</a></li><li><a href="#authdigestnonceformat">AuthDigestNonceFormat</a></li><li><a href="#authdigestnoncelifetime">AuthDigestNonceLifetime</a></li><li><a href="#authdigestqop">AuthDigestQop</a></li></ul><p><strong>See also </strong></p><ul><li><a href="core.html#authname" class="directive"><code class="directive">AuthName</code></a></li><li><a href="core.html#authtype" class="directive"><code class="directive">AuthType</code></a></li><li><a href="core.html#require" class="directive"><code class="directive">Require</code></a></li><li><a href="core.html#satisfy" class="directive"><code class="directive">Satisfy</code></a></li></ul><h2>Using Digest Authentication</h2>
  
      <p>Using MD5 Digest authentication is very simple. Simply set
      up authentication normally, using "AuthType Digest" and
      "AuthDigestFile" instead of the normal "AuthType Basic" and
      "AuthUserFile"; also, replace any "AuthGroupFile" with
      "AuthDigestGroupFile". Then add a "AuthDigestDomain" directive
      containing at least the root URI(s) for this protection space.
      Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    &lt;Location /private/&gt;<br>
    AuthType Digest<br>
    AuthName "private area"<br>
    AuthDigestDomain /private/ http://mirror.my.dom/private2/<br>
    AuthDigestFile /web/auth/.digest_pw<br>
    Require valid-user<br>
    &lt;/Location&gt;
  </code></td></tr></table></blockquote>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note</strong></p>
      <p>MD5 authentication provides a more
      secure password system than Basic authentication, but only
      works with supporting browsers. As of this writing (October 2001),
      the only major browsers which support digest authentication are
      <a href="http://www.opera.com/">Opera 4.0</a>,
      <a href="http://www.microsoft.com/windows/ie/">MS Internet
      Explorer 5.0</a> and <a href="http://www.w3.org/Amaya/">Amaya</a>.
      Therefore, we do not yet recommend using this feature on a large
      Internet site. However, for personal and intra-net use, where
      browser users can be controlled, it is ideal.</p>
  </td></tr></table></blockquote>
  <hr/><h2><a name="AuthDigestAlgorithm">AuthDigestAlgorithm</a> <a name="authdigestalgorithm">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Selects the algorithm used to calculate the challenge and
  response hases in digest authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDigestAlgorithm MD5|MD5-sess</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AuthDigestAlgorithm MD5</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_digest</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthDigestAlgorithm</code> directive
      selects the algorithm used to calculate the challenge and response
      hashes.</p>
  
      <p><strong><em>MD5-sess</em> is not correctly implemented
      yet</strong>. 
      </p>
  <hr/><h2><a name="AuthDigestDomain">AuthDigestDomain</a> <a name="authdigestdomain">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>URIs that are in the same protection space for digest
  authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDigestDomain <em>URI</em> [<em>URI</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_digest</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthDigestDomain</code> directive allows
      you to specify one or more URIs which are in the same protection
      space (i.e. use the same realm and username/password info). The
      specified URIs are prefixes, i.e. the client will assume that all
      URIs "below" these are also protected by the same
      username/password. The URIs may be either absolute URIs
      (i.e. inluding a scheme, host, port, etc) or relative URIs.</p>
  
      <p>This directive <em>should</em> always be specified and
      contain at least the (set of) root URI(s) for this space.
      Omitting to do so will cause the client to send the
      Authorization header for <em>every request</em> sent to this
      server. Apart from increasing the size of the request, it may
      also have a detrimental effect on performance if
      "AuthDigestNcCheck" is on.</p>
  
      <p>The URIs specified can also point to different servers, in
      which case clients (which understand this) will then share
      username/password info across multiple servers without
      prompting the user each time. </p>
  <hr/><h2><a name="AuthDigestFile">AuthDigestFile</a> <a name="authdigestfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Location of the text file containing the list
  of users and encoded passwords for digest authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDigestFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_digest</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthDigestFile</code> directive sets the
      name of a textual file containing the list of users and encoded
      passwords for digest authentication. <em>File-path</em> is the
      absolute path to the user file.</p>
  
      <p>The digest file uses a special format. Files in this format
      can be created using the <a href="../programs/htdigest.html">htdigest</a> utility found in
      the support/ subdirectory of the Apache distribution.</p>
  <hr/><h2><a name="AuthDigestGroupFile">AuthDigestGroupFile</a> <a name="authdigestgroupfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Name of the text file containing the list of groups
  for digest authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDigestGroupFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_digest</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthDigestGroupFile</code> directive sets
      the name of a textual file containing the list of groups and their
      members (user names). <em>File-path</em> is the absolute path to
      the group file.</p>
  
      <p>Each line of the group file contains a groupname followed by
      a colon, followed by the member usernames separated by spaces.
      Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>mygroup: bob joe anne</code></td></tr></table></blockquote>
  
      <p>Note that searching large text files is <em>very</em>
      inefficient.</p>
  
      <p>Security: make sure that the AuthGroupFile is stored outside
      the document tree of the web-server; do <em>not</em> put it in
      the directory that it protects. Otherwise, clients will be able
      to download the AuthGroupFile.</p>
  <hr/><h2><a name="AuthDigestNcCheck">AuthDigestNcCheck</a> <a name="authdigestnccheck">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enables or disables checking of the nonce-count sent by the
  server</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDigestNcCheck On|Off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AuthDigestNcCheck Off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_digest</td></tr></table></td></tr></table>
      <p><strong>Not implemented yet.</strong> 
      </p>
  <hr/><h2><a name="AuthDigestNonceFormat">AuthDigestNonceFormat</a> <a name="authdigestnonceformat">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Determines how the nonce is generated</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>???</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>???</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_digest</td></tr></table></td></tr></table>
      <p><strong>Not implemented yet.</strong> 
      </p>
  <hr/><h2><a name="AuthDigestNonceLifetime">AuthDigestNonceLifetime</a> <a name="authdigestnoncelifetime">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>How long the server nonce is valid</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDigestNonceLifetime <em>seconds</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AuthDigestNonceLifetime 300</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_digest</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthDigestNonceLifetime</code> directive
      controls how long the server nonce is valid. When the client
      contacts the server using an expired nonce the server will send
      back a 401 with <code>stale=true</code>. If <em>seconds</em> is
      greater than 0 then it specifies the amount of time for which the
      nonce is valid; this should probably never be set to less than 10
      seconds. If <em>seconds</em> is less than 0 then the nonce never
      expires. 
      </p>
  <hr/><h2><a name="AuthDigestQop">AuthDigestQop</a> <a name="authdigestqop">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Determines the quality-of-protection to use in digest
  authentication</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AuthDigestQop none|auth|auth-int [auth|auth-int]</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AuthDigestQop auth</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_auth_digest</td></tr></table></td></tr></table>
      <p>The <code class="directive">AuthDigestQop</code> directive determines
      the quality-of-protection to use. <em>auth</em> will only do
      authentication (username/password); <em>auth-int</em> is
      authentication plus integrity checking (an MD5 hash of the entity
      is also computed and checked); <em>none</em> will cause the module
      to use the old RFC-2069 digest algorithm (which does not include
      integrity checking). Both <em>auth</em> and <em>auth-int</em> may
      be specified, in which the case the browser will choose which of
      these to use. <em>none</em> should only be used if the browser for
      some reason does not like the challenge it receives otherwise.</p>
  
      <p><strong><em>auth-int</em> is not implemented
      yet</strong>.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_autoindex.html.en
  
  Index: mod_autoindex.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_autoindex- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_autoindex</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Generates directory indexes,
      automatically, similar to the Unix <em>ls</em> command or the
      Win32 <em>dir</em> shell command</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>autoindex_module</td></tr></table></td></tr></table><h2>Summary</h2> 
        <p>The index of a directory can come from one of two
        sources:</p>
  
      <ul>
        <li>A file written by the user, typically called
        <code>index.html</code>. The <a href="mod_dir.html#directoryindex" class="directive"><code class="directive">DirectoryIndex</code></a> directive sets the
        name of this file. This is controlled by
        <code><a href="mod_dir.html">mod_dir</a></code>.</li>
  
        <li>Otherwise, a listing generated by the server. The other
        directives control the format of this listing. The <a href="#addicon" class="directive"><code class="directive">AddIcon</code></a>, <a href="#addiconbyencoding" class="directive"><code class="directive">AddIconByEncoding</code></a> and
        <a href="#addiconbytype" class="directive"><code class="directive">AddIconByType</code></a> are
        used to set a list of icons to display for various file types;
        for each file listed, the first icon listed that matches the
        file is displayed. These are controlled by
        <code><a href="mod_autoindex.html">mod_autoindex</a></code>.</li>
      </ul>
      <p>The two functions are separated so that you can completely
      remove (or replace) automatic index generation should you want
      to.</p> 
  
      <p>Automatic index generation is enabled with using
      <code>Options +Indexes</code>. See the 
      <a href="core.html#options" class="directive"><code class="directive">Options</code></a> directive for
      more details.</p>
  
      <p>If the <a href="autoindex.html#fancyindexing" class="directive"><code class="directive">FancyIndexing</code></a>
      option is given with the <a href="autoindex.html#indexoptions" class="directive"><code class="directive">IndexOptions</code></a> directive,
      the column headers are links that control the order of the
      display. If you select a header link, the listing will be
      regenerated, sorted by the values in that column. Selecting the
      same header repeatedly toggles between ascending and descending
      order. These column header links are suppressed with
      <a href="autoindex.html#indexoptions" class="directive"><code class="directive">IndexOptions</code></a> directive's
      <code>SuppressColumnSorting</code> option.</p>
  
      <p>Note that when the display is sorted by "Size", it's the
      <em>actual</em> size of the files that's used, not the
      displayed value - so a 1010-byte file will always be displayed
      before a 1011-byte file (if in ascending order) even though
      they both are shown as "1K".</p>
  <h2>Directives</h2><ul><li><a href="#addalt">AddAlt</a></li><li><a href="#addaltbyencoding">AddAltByEncoding</a></li><li><a href="#addaltbytype">AddAltByType</a></li><li><a href="#adddescription">AddDescription</a></li><li><a href="#addicon">AddIcon</a></li><li><a href="#addiconbyencoding">AddIconByEncoding</a></li><li><a href="#addiconbytype">AddIconByType</a></li><li><a href="#defaulticon">DefaultIcon</a></li><li><a href="#headername">HeaderName</a></li><li><a href="#indexignore">IndexIgnore</a></li><li><a href="#indexoptions">IndexOptions</a></li><li><a href="#indexorderdefault">IndexOrderDefault</a></li><li><a href="#readmename">ReadmeName</a></li></ul><h2>Autoindex Request Query Arguments</h2>
  
      <p>Apache 2.0.23 reorganized the Query Arguments for Column
      Sorting, and introduced an entire group of new query options.
      To effectively eliminate all client control over the output,
      the <code><a href="#indexoptions:ignoreclient">IndexOptions
      IgnoreClient</a></code> option was introduced.</p>
  
      <p>The column sorting headers themselves are self-referencing
      hyperlinks that add the sort query options shown below. Any
      option below may be added to any request for the directory
      resource.</p>
  
      <ul>
        <li><code>C=N</code> sorts the directory by file name</li>
  
        <li><code>C=M</code> sorts the directory by last-modified
        date, then file name</li>
  
        <li><code>C=S</code> sorts the directory by size, then file
        name</li>
  
        <li><code>C=D</code> sorts the directory by description, then
        file name<br>
         &nbsp;</li>
  
        <li><code>O=A</code> sorts the listing in Ascending
        Order</li>
  
        <li><code>O=D</code> sorts the listing in Descending
        Order<br>
         &nbsp;</li>
  
        <li><code>F=0</code> formats the listing as a simple list
        (not FancyIndexed)</li>
  
        <li><code>F=1</code> formats the listing as a FancyIndexed
        list</li>
  
        <li><code>F=2</code> formats the listing as an HTMLTable
        FancyIndexed list<br>
         &nbsp;</li>
  
        <li><code>V=0</code> disables version sorting</li>
  
        <li><code>V=1</code> enables version sorting<br>
         &nbsp;</li>
  
        <li><code>P=<em>pattern</em></code> lists only files matching
        the given <em>pattern</em></li>
      </ul>
  
      <p>Note that the 'P'attern query argument is tested
      <em>after</em> the usual IndexIgnore directives are processed,
      and all file names are still subjected to the same criteria as
      any other autoindex listing. The Query Arguments parser in
      mod_autoindex will stop abruptly when an unrecognized option is
      encountered. The Query Arguments must be well formed, according
      to the table above.</p>
  
      <p>The simple example below, which can be clipped and saved in
      a header.html file, illustrates these query options. Note that
      the unknown "X" argument, for the submit button, is listed last
      to assure the arguments are all parsed before mod_autoindex
      encounters the X=Go input.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  &lt;FORM METHOD="GET"&gt;<br>
  &nbsp;&nbsp;Show me a &lt;SELECT NAME="F"&gt;<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="0"&gt; Plain list <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="1" SELECTED&gt; Fancy list<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="2"&gt; Table list<br>
  &nbsp;&nbsp;&lt;/SELECT&gt;<br>
  &nbsp;&nbsp;Sorted by &lt;SELECT NAME="C"&gt;<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="N" SELECTED&gt; Name<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="M"&gt; Date Modified<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="S"&gt; Size<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="D"&gt; Description<br>
  &nbsp;&nbsp;&lt;/SELECT&gt;<br>
  &nbsp;&nbsp;&lt;SELECT NAME="O"&gt;<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="A" SELECTED&gt; Ascending<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="D"&gt; Descending<br>
  &nbsp;&nbsp;&lt;/SELECT&gt;<br>
  &nbsp;&nbsp;&lt;SELECT NAME="V"&gt;<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="0" SELECTED&gt; in Normal order<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&lt;OPTION VALUE="1"&gt; in Version order<br>
  &nbsp;&nbsp;&lt;/SELECT&gt;<br>
  &nbsp;&nbsp;Matching &lt;INPUT TYPE="text" NAME="P" VALUE="*"&gt;<br>
  &nbsp;&nbsp;&lt;INPUT TYPE="submit" NAME="X" VALUE="Go"&gt;<br>
  &lt;/FORM&gt;
  </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="AddAlt">AddAlt</a> <a name="addalt">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Alternate text to display for a file, instead of an
  icon selected by filename</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddAlt <em>string file</em> [<em>file</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p><code class="directive">AddAlt</code> provides the alternate text to
      display for a file, instead of an icon, for <code><a href="#indexoptions:fancyindexing">FancyIndexing</a></code>.
      <em>File</em> is a file extension, partial filename, wild-card
      expression or full filename for files to describe.
      <em>String</em> is enclosed in double quotes (<code>"</code>).
      This alternate text is displayed if the client is image-incapable,
      has image loading disabled, or fails to retrieve the icon.</p>
  
      <p>Examples:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AddAlt "PDF" *.pdf<br>
      AddAlt "Compressed" *.gz *.zip *.Z
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="AddAltByEncoding">AddAltByEncoding</a> <a name="addaltbyencoding">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Alternate text to display for a file instead of an icon
  selected by MIME-encoding</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddAltByEncoding <em>string MIME-encoding</em>
  [<em>MIME-encoding</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p><code class="directive">AddAltByEncoding</code> provides the alternate
      text to display for a file, instead of an icon, for <code><a href="#indexoptions:fancyindexing">FancyIndexing</a></code>.
      <em>MIME-encoding</em> is a valid content-encoding, such as
      <code>x-compress</code>. <em>String</em> is enclosed in double
      quotes (<code>"</code>). This alternate text is displayed if the
      client is image-incapable, has image loading disabled, or fails to
      retrieve the icon.</p>
  
      <p>Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AddAltByEncoding "gzip" x-gzip
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="AddAltByType">AddAltByType</a> <a name="addaltbytype">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Alternate text to display for a file, instead of an
  icon selected by MIME content-type</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddAltByType <em>string
      MIME-type</em> [<em>MIME-type</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p><code class="directive">AddAltByType</code> sets the alternate text to
      display for a file, instead of an icon, for <code><a href="#indexoptions:fancyindexing">FancyIndexing</a></code>.
      <em>MIME-type</em> is a valid content-type, such as
      <code>text/html</code>. <em>String</em> is enclosed in double
      quotes (<code>"</code>). This alternate text is displayed if the
      client is image-incapable, has image loading disabled, or fails to
      retrieve the icon.</p>
  
      <p>Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AddAltByType "TXT" text/plain
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="AddDescription">AddDescription</a> <a name="adddescription">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddDescription
      <em>string file</em> [<em>file</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>This sets the description to display for a file, for
      <code><a href="#indexoptions:fancyindexing">FancyIndexing</a></code>.
      <em>File</em> is a file extension, partial filename, wild-card
      expression or full filename for files to describe.
      <em>String</em> is enclosed in double quotes (<code>"</code>).
      Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>AddDescription "The planet Mars"
        /web/pics/mars.gif</code></td></tr></table></blockquote>
  
      <p>The typical, default description field is 23 bytes wide. 6
      more bytes are added by the
      <code>IndexOptions&nbsp;SuppressIcon</code> option, 7 bytes are
      added by the <code>IndexOptions&nbsp;SuppressSize</code>
      option, and 19 bytes are added by the
      <code>IndexOptions&nbsp;SuppressLastModified</code> option.
      Therefore, the widest default the description column is ever
      assigned is 55 bytes.</p>
  
      <p>See the <a href="#indexoptions:descriptionwidth">DescriptionWidth</a>
      <a href="#indexoptions" class="directive"><code class="directive">IndexOptions</code></a> keyword
      for details on overriding the size of this column, or allowing
      descriptions of unlimited length.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Caution</strong></p> <p>Descriptive text defined with
        <code class="directive">AddDescription</code> may contain HTML markup, such as
        tags and character entities. If the width of the description
        column should happen to truncate a tagged element (such as
        cutting off the end of a bolded phrase), the results may
        affect the rest of the directory listing.</p>
  </td></tr></table></blockquote>
  <hr/><h2><a name="AddIcon">AddIcon</a> <a name="addicon">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Icon to display for a file selected by name</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddIcon <em>icon
      name</em> [<em>name</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>This sets the icon to display next to a file ending in
      <em>name</em> for <code><a href="#indexoptions:fancyindexing">FancyIndexing</a></code>.
      <em>Icon</em> is either a (%-escaped) relative URL to the icon,
      or of the format (<em>alttext</em>,<em>url</em>) where
      <em>alttext</em> is the text tag given for an icon for
      non-graphical browsers.</p>
  
      <p><em>Name</em> is either ^^DIRECTORY^^ for directories,
      ^^BLANKICON^^ for blank lines (to format the list correctly), a
      file extension, a wildcard expression, a partial filename or a
      complete filename. Examples:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        AddIcon (IMG,/icons/image.xbm) .gif .jpg .xbm<br>
         AddIcon /icons/dir.xbm ^^DIRECTORY^^<br>
         AddIcon /icons/backup.xbm *~
  </code></td></tr></table></blockquote>
      
      <p><a href="#addiconbytype" class="directive"><code class="directive">AddIconByType</code></a>
      should be used in preference to <code class="directive">AddIcon</code>,
      when possible.</p>
  <hr/><h2><a name="AddIconByEncoding">AddIconByEncoding</a> <a name="addiconbyencoding">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Icon to display next to files selected by MIME 
  content-encoding</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddIconByEncoding
      <em>icon MIME-encoding</em> [<em>MIME-encoding</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>This sets the icon to display next to files with <code><a href="#indexoptions:fancyindexing">FancyIndexing</a></code>.
      <em>Icon</em> is either a (%-escaped) relative URL to the icon,
      or of the format (<em>alttext</em>,<em>url</em>) where
      <em>alttext</em> is the text tag given for an icon for
      non-graphical browsers.</p>
  
      <p><em>Mime-encoding</em> is a wildcard expression matching
      required the content-encoding. Examples:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>AddIconByEncoding /icons/compress.xbm x-compress</code></td></tr></table></blockquote>
  <hr/><h2><a name="AddIconByType">AddIconByType</a> <a name="addiconbytype">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Icon to display next to files selected by MIME 
  content-type</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddIconByType
      <em>icon MIME-type</em> [<em>MIME-type</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>This sets the icon to display next to files of type
      <em>MIME-type</em> for <code><a href="#indexoptions:fancyindexing">FancyIndexing</a></code>.
      <em>Icon</em> is either a (%-escaped) relative URL to the icon,
      or of the format (<em>alttext</em>,<em>url</em>) where
      <em>alttext</em> is the text tag given for an icon for
      non-graphical browsers.</p>
  
      <p><em>Mime-type</em> is a wildcard expression matching
      required the mime types. Examples:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>AddIconByType (IMG,/icons/image.xbm) image/*</code></td></tr></table></blockquote>
  <hr/><h2><a name="DefaultIcon">DefaultIcon</a> <a name="defaulticon">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Icon to display for files when no specific icon is
  configured</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DefaultIcon <em>url-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>The <code class="directive">DefaultIcon</code> directive sets the icon
      to display for files when no specific icon is known, for <code><a href="#indexoptions:fancyindexing">FancyIndexing</a></code>.
      <em>Url</em> is a (%-escaped) relative URL to the icon.
      Examples:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>DefaultIcon /icon/unknown.xbm</code></td></tr></table></blockquote>
  <hr/><h2><a name="HeaderName">HeaderName</a> <a name="headername">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Name of the file that will be inserted at the top
  of the index listing</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>HeaderName <em>filename</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>The <code class="directive">HeaderName</code> directive sets the name
      of the file that will be inserted at the top of the index
      listing. <em>Filename</em> is the name of the file to include.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">
        <p>Both HeaderName and <a href="#readmename" class="directive"><code class="directive">ReadmeName</code></a> now treat
        <em>Filename</em> as a URI path relative to the one used to
        access the directory being indexed. <em>Filename</em> must
        resolve to a document with a major content type of
        "<code>text/*</code>" (<em>e.g.</em>, <code>text/html</code>,
        <code>text/plain</code>, <em>etc.</em>). This means that
        <em>filename</em> may refer to a CGI script if the script's
        actual file type (as opposed to its output) is marked as
        <code>text/html</code> such as with a directive like:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AddType text/html .cgi
  </code></td></tr></table></blockquote>
        <p><a href="../content-negotiation.html">Content negotiation</a>
        will be performed if the <code>MultiViews</code> <a href="core.html#option" class="directive"><code class="directive">Option</code></a> is enabled. If
        <em>filename</em> resolves to a static <code>text/html</code>
        document (not a CGI script) and the <code>Includes</code>
        <a href="core.html#option" class="directive"><code class="directive">option</code></a> is enabled, the file
        will be processed for server-side includes (see the
        <code><a href="mod_include.html">mod_include</a></code> documentation).</p>
  </td></tr></table></blockquote>
  
      <p>If the file specified by <code class="directive">HeaderName</code> contains
      the beginnings of an HTML document (&lt;HTML&gt;, &lt;HEAD&gt;,
      etc) then you will probably want to set <a href="#indexoptions:suppresshtmlpreamble"><code>IndexOptions
      +SuppressHTMLPreamble</code></a>, so that these tags are not
      repeated.</p>
  <hr/><h2><a name="IndexIgnore">IndexIgnore</a> <a name="indexignore">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Adds to the list of files to hide when listing 
  a directory</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>IndexIgnore <em>file</em> [<em>file</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>The <code class="directive">IndexIgnore</code> directive adds to the
      list of files to hide when listing a directory. <em>File</em> is a
      file extension, partial filename, wildcard expression or full
      filename for files to ignore. Multiple IndexIgnore directives add
      to the list, rather than the replacing the list of ignored
      files. By default, the list contains
      `<code>.</code>'. Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>IndexIgnore README .htaccess *~</code></td></tr></table></blockquote>
  <hr/><h2><a name="IndexOptions">IndexOptions</a> <a name="indexoptions">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Various configuration settings for directory 
  indexing</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>IndexOptions  [+|-]<em>option</em> [[+|-]<em>option</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>The <code class="directive">IndexOptions</code> directive specifies the
      behavior of the directory indexing. <em>Option</em> can be one
      of</p>
  
      <dl>
        <dt><a name="indexoptions:descriptionwidth">DescriptionWidth=[<em>n</em>
        | *] (<em>Apache 1.3.10 or 2.0.23 and later</em>)</a></dt>
  
        <dd>The <code>DescriptionWidth</code> keyword allows you to
        specify the width of the description column in
        characters.</dd>
  
        <dd><code>-DescriptionWidth</code> (or unset) allows
        mod_autoindex to calculate the best width.</dd>
  
        <dd><code>DescriptionWidth=n</code> fixes the column width to
        n bytes wide.</dd>
  
        <dd><code>DescriptionWidth=*</code> grows the column to the
        width necessary to accommodate the longest description
        string.</dd>
  
        <dd><strong>See the section on <a href="#adddescription" class="directive"><code class="directive">AddDescription</code></a> for dangers
        inherent in truncating descriptions.</strong></dd>
  
        <dt><a name="indexoptions:fancyindexing">FancyIndexing</a></dt>
  
        <dd>
        This turns on fancy indexing of directories.</dd>
  
        <dt><a name="indexoptions:foldersfirst">FoldersFirst (<em>Apache
        1.3.10 or 2.0.23 and later</em>)</a></dt>
  
        <dd>If this option is enabled, subdirectory listings will
        <em>always</em> appear first, followed by normal files in the
        directory. The listing is basically broken into two
        components, the files and the subdirectories, and each is
        sorted separately and then displayed subdirectories-first.
        For instance, if the sort order is descending by name, and
        <code>FoldersFirst</code> is enabled, subdirectory
        <code>Zed</code> will be listed before subdirectory
        <code>Beta</code>, which will be listed before normal files
        <code>Gamma</code> and <code>Alpha</code>. <strong>This option
        only has an effect if <a href="#indexoptions:fancyindexing"><code>FancyIndexing</code></a>
        is also enabled.</strong></dd>
  
        <dt><a name="indexoptions:htmltable">HTMLTable</a> <em>(Experimental,
        Apache 2.0.23 and later)</em></dt>
  
        <dd>
        This experimental option with FancyIndexing constructs a
        simple table for the fancy directory listing. Note this will
        confuse older browsers. It is particularly necessary if file
        names or description text will alternate between
        left-to-right and right-to-left reading order, as can happen
        on WinNT or other utf-8 enabled platforms.</dd>
  
        <dt><a name="indexoptions:iconsarelinks">IconsAreLinks</a></dt>
  
        <dd>
        This makes the icons part of the anchor for the filename, for
        fancy indexing.</dd>
  
        <dt><a name="indexoptions:iconheight">IconHeight[=pixels]
        (<em>Apache 1.3 and later</em>)</a></dt>
  
        <dd>
        Presence of this option, when used with IconWidth, will cause
        the server to include <code>HEIGHT</code> and
        <code>WIDTH</code> attributes in the <code>IMG</code> tag for
        the file icon. This allows browser to precalculate the page
        layout without having to wait until all the images have been
        loaded. If no value is given for the option, it defaults to
        the standard height of the icons supplied with the Apache
        software.</dd>
  
        <dt><a name="indexoptions:iconwidth">IconWidth[=pixels] (<em>Apache
        1.3 and later</em>)</a></dt>
  
        <dd>
        Presence of this option, when used with IconHeight, will
        cause the server to include <code>HEIGHT</code> and
        <code>WIDTH</code> attributes in the <code>IMG</code> tag for
        the file icon. This allows browser to precalculate the page
        layout without having to wait until all the images have been
        loaded. If no value is given for the option, it defaults to
        the standard width of the icons supplied with the Apache
        software.</dd>
  
        <dt><a name="indexoptions:ignoreclient">IgnoreClient</a></dt>
  
        <dd>
        This option causes mod_autoindex to ignore all query
        variables from the client, including sort order (implies
        <code><a href="#indexoptions:suppresscolumnsorting">SuppressColumnSorting</a></code>.)</dd>
  
        <dt><a name="indexoptions:namewidth">NameWidth=[<em>n</em> | *]
        (<em>Apache 1.3.2 and later</em>)</a></dt>
  
        <dd>The NameWidth keyword allows you to specify the width of
        the filename column in bytes.</dd>
  
        <dd><code>-NameWidth</code> (or unset) allows mod_autoindex
        to calculate the best width.</dd>
  
        <dd><code>NameWidth=n</code> fixes the column width to n
        bytes wide.</dd>
  
        <dd><code>NameWidth=*</code> grows the column to the
        necessary width.</dd>
  
        <dt><a name="indexoptions:scanhtmltitles">ScanHTMLTitles</a></dt>
  
        <dd>
        This enables the extraction of the title from HTML documents
        for fancy indexing. If the file does not have a description
        given by <a href="#adddescription">AddDescription</a> then
        httpd will read the document for the value of the TITLE tag.
        This is CPU and disk intensive.</dd>
  
        <dt><a name="indexoptions:suppresscolumnsorting">SuppressColumnSorting</a>
        (<em>Apache 1.3 and later</em>)</dt>
  
        <dd>
        If specified, Apache will not make the column headings in a
        FancyIndexed directory listing into links for sorting. The
        default behavior is for them to be links; selecting the
        column heading will sort the directory listing by the values
        in that column. <strong>Prior to Apache 2.0.23, this also
        disabled parsing the Query Arguments for the sort
        string.</strong> That behavior is now controlled by <a href="#indexoptions:ignoreclient">IndexOptions
        IgnoreClient</a> in Apache 2.0.23.</dd>
  
        <dt><a name="indexoptions:suppressdescription">SuppressDescription</a></dt>
  
        <dd>
        This will suppress the file description in fancy indexing
        listings. By default, no file descriptions are defined, and
        so the use of this option will regain 23 characters of screen
        space to use for something else. See <a href="#adddescription"><code>AddDescription</code></a> for
        information about setting the file description. See also the
        <a href="#indexoptions:descriptionwidth"><code>DescriptionWidth</code></a>
        index option to limit the size of the description
        column.</dd>
  
        <dt><a name="indexoptions:suppresshtmlpreamble">SuppressHTMLPreamble</a>
        (<em>Apache 1.3 and later</em>)</dt>
  
        <dd>
        If the directory actually contains a file specified by the
        <a href="#headername" class="directive"><code class="directive">HeaderName</code></a>
        directive, the module usually includes the contents of the file
        after a standard HTML preamble (&lt;HTML&gt;, &lt;HEAD&gt;,
        <em>et cetera</em>). The SuppressHTMLPreamble option disables
        this behaviour, causing the module to start the display with the
        header file contents. The header file must contain appropriate
        HTML instructions in this case. If there is no header file, the
        preamble is generated as usual.</dd>
  
        <dt><a name="indexoptions:suppressicon">SuppressIcon</a> (<em>Apache
        2.0.23 and later</em>)</dt>
  
        <dd>
        This will suppress the icon in fancy indexing listings.
        Combining both <em>SuppressIcon</em> and
        <em>SuppressRules</em> yields proper HTML 3.2 output, which
        by the final specification prohibits IMG and HR tags from the
        PRE block (used to format FancyIndexed listings.)</dd>
  
        <dt><a name="indexoptions:suppresslastmodified">SuppressLastModified</a></dt>
  
        <dd>
        This will suppress the display of the last modification date,
        in fancy indexing listings.</dd>
  
        <dt><a name="indexoptions:suppressrules">SuppressRules</a>
        (<em>Apache 2.0.23 and later</em>)</dt>
  
        <dd>
        This will suppress the horizontal rule lines (HR tags) in
        directory listings. Combining both <em>SuppressIcon</em> and
        <em>SuppressRules</em> yeilds proper HTML 3.2 output, which
        by the final specification prohibits IMG and HR tags from the
        PRE block (used to format FancyIndexed listings.)</dd>
  
        <dt><a name="indexoptions:suppresssize">SuppressSize</a></dt>
  
        <dd>
        This will suppress the file size in fancy indexing
        listings.</dd>
  
        <dt><a name="indexoptions:trackmodified">TrackModified (<em>Apache
        1.3.15 or 2.0.23 and later</em>)</a></dt>
  
        <dd>
        This returns the Last-Modified and ETag values for the listed
        directory in the HTTP header. It is only valid if the
        operating system and file system return appropriate stat()
        results. Some Unix systems do so, as do OS2's JFS and Win32's
        NTFS volumes. OS2 and Win32 FAT volumes, for example, do not.
        Once this feature is enabled, the client or proxy can track
        changes to the list of files when they perform a HEAD
        request. Note some operating systems correctly track new and
        removed files, but do not track changes for sizes or dates of
        the files within the directory. <strong>Changes to the size
        or date stamp of an existing file will not update the
        Last-Modified header on all Unix platforms.</strong> If this
        is a concern, leave this option disabled.</dd>
  
        <dt><a name="indexoptions:versionsort">VersionSort (<em>Apache 2.0a3
        and later</em>)</a></dt>
  
        <dd>
          The VersionSort keyword causes files containing version
          numbers to sort in a natural way. Strings are sorted as
          usual, except that substrings of digits in the name and
          description are compared according to their numeric value.
          For example: 
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  foo-1.7<br>
  foo-1.7.2<br>
  foo-1.7.12<br>
  foo-1.8.2<br>
  foo-1.8.2a<br>
  foo-1.12<br>
  </code></td></tr></table></blockquote>
          If the number starts with a zero, then it is considered to
          be a fraction: 
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  foo-1.001<br>
  foo-1.002<br>
  foo-1.030<br>
  foo-1.04
  </code></td></tr></table></blockquote>
        </dd>
  
        <dd>
          <strong>Incremental IndexOptions</strong>
        </dd>
  
        <dd>
          Apache 1.3.3 introduced some significant changes in the
          handling of <code class="directive">IndexOptions</code> directives. In
          particular,<br>
          <br>
           
  
          <ul>
            <li>Multiple <code class="directive">IndexOptions</code> directives for a
            single directory are now merged together. The result of
            the example above will now be the equivalent of
            <code>IndexOptions&nbsp;FancyIndexing&nbsp;ScanHTMLTitles</code>.</li>
  
            <li>The addition of the incremental syntax
            (<em>i.e.</em>, prefixing keywords with '+' or '-').</li>
          </ul>
          <br>
           Whenever a '+' or '-' prefixed keyword is encountered, it
          is applied to the current <code class="directive">IndexOptions</code>
          settings (which may have been inherited from an upper-level
          directory). However, whenever an unprefixed keyword is
          processed, it clears all inherited options and any
          incremental settings encountered so far. Consider the
          following example: 
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>IndexOptions +ScanHTMLTitles -IconsAreLinks
            FancyIndexing<br>
             IndexOptions +SuppressSize<br>
  </code></td></tr></table></blockquote>
          The net effect is equivalent to
          <code>IndexOptions&nbsp;FancyIndexing&nbsp;+SuppressSize</code>,
          because the unprefixed <code>FancyIndexing</code> discarded
          the incremental keywords before it, but allowed them to
          start accumulating again afterward.<br>
          <br>
           To unconditionally set the <code class="directive">IndexOptions</code> for a
          particular directory, clearing the inherited settings,
          specify keywords without any '+' or '-' prefixes.
        </dd>
      </dl>
  <hr/><h2><a name="IndexOrderDefault">IndexOrderDefault</a> <a name="indexorderdefault">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the default ordering of the directory index</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>IndexOrderDefault
  Ascending|Descending Name|Date|Size|Description</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>The <code class="directive">IndexOrderDefault</code> directive is used
      in combination with the <a href="#indexoptions:fancyindexing"><code>FancyIndexing</code></a>
      index option. By default, fancyindexed directory listings are
      displayed in ascending order by filename; the
      <code class="directive">IndexOrderDefault</code> allows you to change this initial
      display order.</p>
  
      <p><code class="directive">IndexOrderDefault</code> takes two
      arguments. The first must be either <code>Ascending</code> or
      <code>Descending</code>, indicating the direction of the sort.
      The second argument must be one of the keywords <code>Name</code>,
      <code>Date</code>, <code>Size</code>, or <code>Description</code>,
      and identifies the primary key. The secondary key is
      <em>always</em> the ascending filename.</p>
  
      <p>You can force a directory listing to only be displayed in a
      particular order by combining this directive with the <a href="#indexoptions:suppresscolumnsorting"><code>SuppressColumnSorting</code></a>
      index option; this will prevent the client from requesting the
      directory listing in a different order.</p>
  <hr/><h2><a name="ReadmeName">ReadmeName</a> <a name="readmename">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ReadmeName <em>filename</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_autoindex</td></tr></table></td></tr></table>
      <p>The <code class="directive">ReadmeName</code> directive sets the name
      of the file that will be appended to the end of the index
      listing. <em>Filename</em> is the name of the file to include, and
      is taken to be relative to the location being indexed.</p>
  
      <p>See also <a href="#headername" class="directive"><code class="directive">HeaderName</code></a>, where this behavior
      is described in greater detail.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_cache.html.en
  
  Index: mod_cache.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_cache- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_cache</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Content cache keyed to URIs</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>cache_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
  <blockquote><table><tr><td bgcolor="#ffe5f5">
  This module is experimental. Documentation is still under development...
  </td></tr></table></blockquote>
      <p>mod_cache implements an RFC 2616 compliant HTTP content
      cache that can be used to cache either local or proxied content.
      mod_cache requires the services of one or more storage
      management modules. Two storage management modules are included in
      the base Apache distribution:</p>
      <dl>
      <dt><em>mod_disk_cache</em></dt>
      <dd>implements a disk based storage manager for use with mod_proxy</dd>
      <dt><em>mod_mem_cache</em></dt>
      <dd>implements an in-memory based storage manager. mod_mem_cache
      can be configured to operate in two modes: caching open file
      descriptors or caching objects in heap storage. <em>mod_mem_cache</em>
      is most useful when used to cache locally generated content or to cache 
      backend server content for mod_proxy configured for ProxyPass (aka <em>reverse proxy</em>)</dd>
      </dl>
      <p>Content stored and retrived keyed to the URL. Content with
      access protections is not cached.</p>
  <h2>Directives</h2><ul><li><a href="#cachedefaultexpire">CacheDefaultExpire</a></li><li><a href="#cachedisable">CacheDisable</a></li><li><a href="#cacheenable">CacheEnable</a></li><li><a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></li><li><a href="#cacheignorenolastmod">CacheIgnoreNoLastMod</a></li><li><a href="#cachelastmodifiedfactor">CacheLastModifiedFactor</a></li><li><a href="#cachemaxexpire">CacheMaxExpire</a></li><li><a href="#cacheon">CacheOn</a></li></ul><h2>Sample Configuration</h2>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Sample httpd.conf</strong></p><code>
  
  # <br>
  # Sample Cache Configuration  <br>
  # <br>
  LoadModule cache_module modules/mod_cache.so  <br>
  &lt;IfModule mod_cache.c&gt;<br>
     CacheOn On<br>
  <p></p>
     #LoadModule disk_cache_module modules/mod_disk_cache.so <br>
     &lt;IfModule mod_disk_cache.c&gt; <br>
        CacheRoot c:/cacheroot <br>
        CacheSize 
        CacheEnable disk  / <br>
        CacheDirLevels 5 <br>
        CacheDirLength 3 <br>
     &lt;/IfModule&gt; <br>
  <p></p>
     LoadModule mem_cache_module modules/mod_mem_cache.so <br>
     &lt;IfModule mod_mem_cache.c&gt; <br>
        MCacheEnable mem  / <br>
        MCacheSize 4096 <br>
        MCacheMaxObjectCount 100 <br>
        MCacheMinObjectSize 1 <br>
        MCacheMaxObjectSize 2048 <br>
     &lt;/IfModule&gt; <br>
  <p></p>
  &lt;/IfModule&gt; <br>
  
  </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="CacheDefaultExpire">CacheDefaultExpire</a> <a name="cachedefaultexpire">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td/></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cache</td></tr></table></td></tr></table>
      <p>The default time in seconds to cache a document.</p>
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      CacheDefaultExpire 86400
      </code></td></tr></table></blockquote>
  <hr/><h2><a name="CacheDisable">CacheDisable</a> <a name="cachedisable">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Disable caching of specified URLs by specified storage manager</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CacheDisable <em>cache_type </em> <em> url-string</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cache</td></tr></table></td></tr></table>
      <p>The <code class="directive">CacheDisable</code> directive instructs
      mod_cache to <em>not</em> cache urls at or above <em>url-string</em>.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
    CacheDisable disk /local_files
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="CacheEnable">CacheEnable</a> <a name="cacheenable">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enable caching specified URLs in a specified storage manager</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CacheEnable <em>cache_type </em><em> url-string</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cache</td></tr></table></td></tr></table>
      <p>The <code class="directive">CacheEnable</code> directive instructs
      mod_cache to cache urls at or below <em>url-string</em>.  
      The cache store is specified with the <em>cache_type</em> argument.
      <em>cache_type </em> <em> mem</em> instructs mod_cache to use the
      in-memory cache storage manager implemented by <em>mod_mem_cache</em>. 
      <em>cache_type </em> <em> disk</em> instructs mod_cache to use the
      cache storage manager implemented by <em>mod_disk_cache </em>. </p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    CacheEnable  disk  / <br>
    CacheEnable  mem   /manual <br>
    CacheEnable  fd    /images <br>
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="CacheIgnoreCacheControl">CacheIgnoreCacheControl</a> <a name="cacheignorecachecontrol">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Ignore requests from the client for uncached content</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td/></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cache</td></tr></table></td></tr></table>
      <p>Ignore requests from the client for uncached content</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      CacheIgnoreNoLastMod 
      </code></td></tr></table></blockquote>
  <hr/><h2><a name="CacheIgnoreNoLastMod">CacheIgnoreNoLastMod</a> <a name="cacheignorenolastmod">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Ignore responses where there is no Last Modified Header</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td/></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cache</td></tr></table></td></tr></table>
      <p>Ignore responses where there is no Last Modified Header</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      CacheIgnoreNoLastMod 
      </code></td></tr></table></blockquote>
  <hr/><h2><a name="CacheLastModifiedFactor">CacheLastModifiedFactor</a> <a name="cachelastmodifiedfactor">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>The factor used to estimate the Expires date from the LastModified date</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td/></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cache</td></tr></table></td></tr></table>
      <p>The factor used to estimate the Expires date from the LastModified date.</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      CacheLastModifiedFactor  
      </code></td></tr></table></blockquote>
  <hr/><h2><a name="CacheMaxExpire">CacheMaxExpire</a> <a name="cachemaxexpire">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>The maximum time in seconds to cache a document</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td/></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cache</td></tr></table></td></tr></table>
      <p>The maximum time in seconds to cache a document.</p>
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      CacheMaxExpire 604800
      </code></td></tr></table></blockquote>
  <hr/><h2><a name="CacheOn">CacheOn</a> <a name="cacheon">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CacheOn</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cache</td></tr></table></td></tr></table>
      <p>
      </p>
  
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    CacheOn
  </code></td></tr></table></blockquote>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_cern_meta.html.en
  
  Index: mod_cern_meta.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_cern_meta- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_cern_meta</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>CERN httpd metafile semantics</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>cern_meta_module</td></tr></table></td></tr></table><h2>Summary</h2>
      
      <p>Emulate the CERN HTTPD Meta file semantics. Meta files are HTTP
      headers that can be output in addition to the normal range of
      headers for each file accessed. They appear rather like the
      Apache .asis files, and are able to provide a crude way of
      influencing the Expires: header, as well as providing other
      curiosities. There are many ways to manage meta information,
      this one was chosen because there is already a large number of
      CERN users who can exploit this module.</p>
  
      <p>More information on the <a href="http://www.w3.org/pub/WWW/Daemon/User/Config/General.html#MetaDir">
      CERN metafile semantics</a> is available.</p>
  <h2>Directives</h2><ul><li><a href="#metadir">MetaDir</a></li><li><a href="#metafiles">MetaFiles</a></li><li><a href="#metasuffix">MetaSuffix</a></li></ul><hr/><h2><a name="MetaDir">MetaDir</a> <a name="metadir">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Name of the directory to find CERN-style meta information
  files</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MetaDir <em>directory</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MetaDir .web</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cern_meta</td></tr></table></td></tr></table>
      <p>Specifies the name of the directory in which Apache can find
      meta information files. The directory is usually a 'hidden'
      subdirectory of the directory that contains the file being
      accessed. Set to "<code>.</code>" to look in the same directory
      as the file.</p>
  <hr/><h2><a name="MetaFiles">MetaFiles</a> <a name="metafiles">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Activates CERN meta-file processing</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MetaFiles on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MetaFiles off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cern_meta</td></tr></table></td></tr></table>
      <p>Turns on/off Meta file processing on a per-directory basis.</p>
  <hr/><h2><a name="MetaSuffix">MetaSuffix</a> <a name="metasuffix">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>File name suffix for the file containg CERN-style
  meta information</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MetaSuffix <em>suffix</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MetaSuffix .meta</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cern_meta</td></tr></table></td></tr></table>
      <p>Specifies the file name suffix for the file containing the
      meta information. For example, the default values for the two
      directives will cause a request to
      <code>DOCUMENT_ROOT/somedir/index.html</code> to look in
      <code>DOCUMENT_ROOT/somedir/.web/index.html.meta</code> and
      will use its contents to generate additional MIME header
      information.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_cgi.html.en
  
  Index: mod_cgi.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_cgi- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_cgi</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Execution of CGI scripts</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>cgi_module</td></tr></table></td></tr></table><h2>Summary</h2>
      
      
      
  
      <p>Any file that has the mime type
      <code>application/x-httpd-cgi</code> or handler
      <code>cgi-script</code> (Apache 1.1 or later) will be treated
      as a CGI script, and run by the server, with its output being
      returned to the client. Files acquire this type either by
      having a name containing an extension defined by the 
      <a href="mod_mime.html#addtype" class="directive"><code class="directive">AddType</code></a> directive, or by being
      in a <a href="mod_alias.html#scriptalias" class="directive"><code class="directive">ScriptAlias</code></a>
      directory.</p>
  
      <p>When the server invokes a CGI script, it will add a variable
      called <code>DOCUMENT_ROOT</code> to the environment. This
      variable will contain the value of the
      <a href="core.html#documentroot" class="directive"><code class="directive">DocumentRoot</code></a> configuration
      variable.</p>
  
      <p>For an introduction to using CGI scripts with Apache, see
      our tutorial on <a href="../howto/cgi.html">Dynamic Content
      With CGI</a>.</p>
  
      <p>When using a multi-threaded MPM under unix, the module 
      <code><a href="mod_cgid.html">mod_cgid</a></code> should be used in place of
      this module. At the user level, the two modules are essentially
      identical.</p>
  <h2>Directives</h2><ul><li><a href="#scriptlog">ScriptLog</a></li><li><a href="#scriptlogbuffer">ScriptLogBuffer</a></li><li><a href="#scriptloglength">ScriptLogLength</a></li></ul><p><strong>See also </strong></p><ul><li><a href="core.html#options" class="directive"><code class="directive">Options</code></a></li><li><a href="mod_alias.html#scriptalias" class="directive"><code class="directive">ScriptAlias</code></a></li><li><a href="mod_mime.html#addhandler" class="directive"><code class="directive">AddHandler</code></a></li></ul><h2>CGI Environment variables</h2>
      <p>The server will set the CGI environment variables as described
      in the <a href="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI
      specification</a>, with the following provisions:</p>
  
      <dl>
        <dt>PATH_INFO</dt>
  
        <dd>This will not be available if the <a href="core.html#acceptpathinfo" class="directive"><code class="directive">AcceptPathInfo</code></a> directive is explicitly set to
        <code>off</code>.  The default behavior, if AcceptPathInfo is
        not given, is that mod_cgi will accept path info (trailing
        /more/path/info following the script filename in the URI), while
        the core server will return a 404 NOT FOUND error for requests
        with additional path info.  Omitting the AcceptPathInfo
        directive has the same effect as setting it <code>on</code> for
        mod_cgi requests.</dd>
  
        <dt>REMOTE_HOST</dt>
  
        <dd>This will only be set if <a href="core.html#hostnamelookups" class="directive"><code class="directive">HostnameLookups</code></a> is set to <code>on</code> (it
        is off by default), and if a reverse DNS lookup of the accessing
        host's address indeed finds a host name.</dd>
  
        <dt>REMOTE_IDENT</dt>
  
        <dd>This will only be set if <a href="core.html#identitycheck" class="directive"><code class="directive">IdentityCheck</code></a> is set to
        <code>on</code> and the accessing host supports the ident
        protocol. Note that the contents of this variable cannot be
        relied upon because it can easily be faked, and if there is a
        proxy between the client and the server, it is usually
        totally useless.</dd>
  
        <dt>REMOTE_USER</dt>
  
        <dd>This will only be set if the CGI script is subject to
        authentication.</dd>
      </dl>
  <h2><a name="cgi_debug">CGI Debugging</a></h2>
      <p>Debugging CGI scripts has traditionally been difficult, mainly
      because it has not been possible to study the output (standard
      output and error) for scripts which are failing to run
      properly. These directives, included in Apache 1.2 and later,
      provide more detailed logging of errors when they occur. </p>
  
  <h3>CGI Logfile Format</h3>
      <p>When configured, the CGI error log logs any CGI which does not
      execute properly. Each CGI script which fails to operate causes
      several lines of information to be logged. The first two lines
      are always of the format:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    %% [<em>time</em>] <em>request-line</em><br>
    %% <em>HTTP-status</em> <em>CGI-script-filename</em>
  </code></td></tr></table></blockquote>
      <p>If the error is that CGI script cannot be run, the log file
      will contain an extra two lines:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    %%error<br>
    <em>error-message</em>
  </code></td></tr></table></blockquote>
      <p>Alternatively, if the error is the result of the script
      returning incorrect header information (often due to a bug in
      the script), the following information is logged: </p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    %request<br>
    <em>All HTTP request headers received</em><br>
    <em>POST or PUT entity (if any)</em><br>
    %response<br>
    <em>All headers output by the CGI script</em><br>
    %stdout<br>
    <em>CGI standard output</em><br>
    %stderr<br>
    <em>CGI standard error</em><br>
  </code></td></tr></table></blockquote>
      <p>(The %stdout and %stderr parts may be missing if the script did
      not output anything on standard output or standard error). </p>
  
  <hr/><h2><a name="ScriptLog">ScriptLog</a> <a name="scriptlog">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Location of the CGI script error logfile</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ScriptLog <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="mod_cgi.html">mod_cgi</a></code>, <code><a href="mod_cgid.html">mod_cgid</a></code></td></tr></table></td></tr></table>
      <p>The <code class="directive">ScriptLog</code> directive sets the CGI
      script error logfile. If no ScriptLog is given, no error log is
      created. If given, any CGI errors are logged into the filename
      given as argument. If this is a relative file or path it is taken
      relative to the server root.</p>
  
      <p>This log will be opened as the user the child processes run
      as, ie. the user specified in the main <a href="mpm_common.html#user" class="directive"><code class="directive">User</code></a> directive. This means that
      either the directory the script log is in needs to be writable
      by that user or the file needs to be manually created and set
      to be writable by that user. If you place the script log in
      your main logs directory, do <strong>NOT</strong> change the
      directory permissions to make it writable by the user the child
      processes run as.</p>
  
      <p>Note that script logging is meant to be a debugging feature
      when writing CGI scripts, and is not meant to be activated
      continuously on running servers. It is not optimized for speed
      or efficiency, and may have security problems if used in a
      manner other than that for which it was designed.</p>
  <hr/><h2><a name="ScriptLogBuffer">ScriptLogBuffer</a> <a name="scriptlogbuffer">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maximum amount of PUT or POST requests that will be recorded
  in the scriptlog</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ScriptLogBuffer <em>bytes</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ScriptLogBuffer 1024</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="mod_cgi.html">mod_cgi</a></code>, <code><a href="mod_cgid.html">mod_cgid</a></code></td></tr></table></td></tr></table>
      <p>The size of any PUT or POST entity body that is logged to
      the file is limited, to prevent the log file growing too big
      too quickly if large bodies are being received. By default, up
      to 1024 bytes are logged, but this can be changed with this
      directive.</p>
  <hr/><h2><a name="ScriptLogLength">ScriptLogLength</a> <a name="scriptloglength">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Size limit of the CGI script logfile</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ScriptLogLength <em>bytes</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ScriptLogLength 10385760</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="mod_cgi.html">mod_cgi</a></code>, <code><a href="mod_cgid.html">mod_cgid</a></code></td></tr></table></td></tr></table>
      <p><code class="directive">ScriptLogLength</code> can be used to limit the
      size of the CGI script logfile. Since the logfile logs a lot of
      information per CGI error (all request headers, all script output)
      it can grow to be a big file. To prevent problems due to unbounded
      growth, this directive can be used to set an maximum file-size for
      the CGI logfile. If the file exceeds this size, no more
      information will be written to it.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_cgid.html.en
  
  Index: mod_cgid.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_cgid- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_cgid</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Execution of CGI scripts using an
      external CGI daemon</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>cgid_module</td></tr><tr><td align="left" valign="top"><a href="module-dict.html#Compatibility" class="help">Compatibility:</a></td><td><compatibility>Unix threaded MPMs only</compatibility></td></tr></table></td></tr></table><h2>Summary</h2>
      <p>Except for the optimizations and the additional <a href="#scriptsock" class="directive"><code class="directive">ScriptSock</code></a> directive noted below,
      mod_cgid behaves similarly to mod_cgi.  <strong>See the
      <code><a href="mod_cgi.html">mod_cgi</a></code> Summary for additional details about
      Apache and CGI.</strong></p>
  
      <p>On certain unix operating systems, forking a process from a
      multi-threaded server is a very expensive operation because the
      new process will replicate all the threads of the parent
      process. In order to avoid incurring this expense on each CGI
      invocation, mod_cgid creates an external daemon that is
      responsible for forking child processes to run CGI scripts. The
      main server communicates with this daemon using a unix domain
      socket.</p>
  
      <p>This module is used by default whenever a multi-threaded MPM
      is selected during the compilation process. At the user level,
      this module is identical in configuration and operation to
      <code><a href="mod_cgi.html">mod_cgi</a></code>. The only exception is the
      additional directive <code>ScriptSock</code> which gives the
      name of the socket to use for communication with the cgi
      daemon.</p>
  <h2>Directives</h2><ul><li><a href="mod_cgi.html#scriptlog">ScriptLog</a></li><li><a href="mod_cgi.html#scriptlogbuffer">ScriptLogBuffer</a></li><li><a href="mod_cgi.html#scriptloglength">ScriptLogLength</a></li><li><a href="#scriptsock">ScriptSock</a></li></ul><hr/><h2><a name="ScriptSock">ScriptSock</a> <a name="scriptsock">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ScriptSock <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ScriptSock logs/cgisock</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_cgid</td></tr></table></td></tr></table>
      <p>This directive sets the name of the socket to use for
      communication with the CGI daemon. The socket will be opened
      using the permissions of the user who starts Apache (usually
      root). To maintain the security of communications with CGI
      scripts, it is important that no other user has permission to
      write in the directory where the socket is located.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_charset_lite.html.en
  
  Index: mod_charset_lite.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_charset_lite- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_charset_lite</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Specify character set translation or recoding</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>charset_lite_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This is an <strong>experimental</strong> module and should
      be used with care. Experiment with your
      <code>mod_charset_lite</code> configuration to ensure that it
      performs the desired function.</p>
  
      <p><code><a href="mod_charset_lite.html">mod_charset_lite</a></code> allows the administrator to
      specify the source character set of objects as well as the
      character set they should be translated into before sending to the
      client. <code><a href="mod_charset_lite.html">mod_charset_lite</a></code> does not translate the
      data itself but instead tells Apache what translation to
      perform. <code><a href="mod_charset_lite.html">mod_charset_lite</a></code> is applicable to EBCDIC
      and ASCII host environments. In an EBCDIC environment, Apache
      normally translates text content from the code page of the Apache
      process locale to ISO-8859-1.  <code><a href="mod_charset_lite.html">mod_charset_lite</a></code>
      can be used to specify that a different translation is to be
      performed. In an ASCII environment, Apache normally performs no
      translation, so <code><a href="mod_charset_lite.html">mod_charset_lite</a></code> is needed in
      order for any translation to take place.</p>
  
      <p>This module provides a small subset of configuration
      mechanisms implemented by Russian Apache and its associated
      <code>mod_charset</code>.</p>
  <h2>Directives</h2><ul><li><a href="#charsetdefault">CharsetDefault</a></li><li><a href="#charsetoptions">CharsetOptions</a></li><li><a href="#charsetsourceenc">CharsetSourceEnc</a></li></ul><h2>Common Problems</h2>
  
  <h3>Invalid character set names</h3>
  
      <p>The character set name parameters of <a href="#charsetsourceenc" class="directive"><code class="directive">CharsetSourceEnc</code></a> and
      <a href="#charsetdefault" class="directive"><code class="directive">CharsetDefault</code></a>
      must be acceptable to the translation mechanism used by APR on the
      system where <code><a href="mod_charset_lite.html">mod_charset_lite</a></code> is deployed.  These
      character set names are not standardized and are usually not the
      same as the corresponding values used in http headers.  Currently,
      APR can only use iconv(3), so you can easily test your character
      set names using the iconv(1) program, as follows:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    iconv -f charsetsourceenc-value -t charsetdefault-value
  </code></td></tr></table></blockquote>
  
  
  <h3>Mismatch between character set of content and translation
      rules</h3>
  
      <p>If the translation rules don't make sense for the content,
      translation can fail in various ways, including:</p>
  
      <ul>
        <li>The translation mechanism may return a bad return code,
        and the connection will be aborted.</li>
  
        <li>The translation mechanism may silently place special
        characters (e.g., question marks) in the output buffer when
        it cannot translate the input buffer.</li>
      </ul>
  
  <hr/><h2><a name="CharsetDefault">CharsetDefault</a> <a name="charsetdefault">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Charset to translate into</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CharsetDefault <em>charset</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_charset_lite</td></tr></table></td></tr></table>
      <p>The <code class="directive">CharsetDefault</code> directive specifies the
      charset that content in the associated container should be
      translated to.</p>
  
      <p>The value of the <em>charset</em> argument must be accepted
      as a valid character set name by the character set support in
      APR. Generally, this means that it must be supported by
      iconv.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
      &lt;Directory "/export/home/trawick/apacheinst/htdocs/convert"&gt;<br>
      CharsetSourceEnc  UTF-16BE<br>
      CharsetDefault    ISO8859-1<br>
      &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="CharsetOptions">CharsetOptions</a> <a name="charsetoptions">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures charset tranlation behavior</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CharsetOptions <em>option</em> [<em>option</em>] ...</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>CharsetOptions DebugLevel=0 
  NoImplicitAdd</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_charset_lite</td></tr></table></td></tr></table>
      <p>The <code class="directive">CharsetOptions</code> directive configures certain
      behaviors of <code><a href="mod_charset_lite.html">mod_charset_lite</a></code>. <em>Option</em> can
      be one of</p>
  
      <dl>
        <dt>DebugLevel=<em>n</em></dt>
  
        <dd>The <code>DebugLevel</code> keyword allows you to specify
        the level of debug messages generated by
        <code><a href="mod_charset_lite.html">mod_charset_lite</a></code>. By default, no messages are
        generated. This is equivalent to <code>DebugLevel=0</code>.
        With higher numbers, more debug messages are generated, and
        server performance will be degraded. The actual meanings of
        the numeric values are described with the definitions of the
        DBGLVL_ constants near the beginning of
        <code>mod_charset_lite.c</code>.</dd>
  
        <dt>ImplicitAdd | NoImplicitAdd</dt>
  
        <dd>The <code>ImplicitAdd</code> keyword specifies that
        <code><a href="mod_charset_lite.html">mod_charset_lite</a></code> should implicitly insert its
        filter when the configuration specifies that the character
        set of content should be translated. If the filter chain is
        explicitly configured using the AddOutputFilter directive,
        <code>NoImplicitAdd</code> should be specified so that
        <code><a href="mod_charset_lite.html">mod_charset_lite</a></code> doesn't add its filter.</dd>
      </dl>
  <hr/><h2><a name="CharsetSourceEnc">CharsetSourceEnc</a> <a name="charsetsourceenc">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Source charset of files</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CharsetSourceEnc <em>charset</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_charset_lite</td></tr></table></td></tr></table>
      <p>The <code class="directive">CharsetSourceEnc</code> directive specifies the
      source charset of files in the associated container.</p>
  
      <p>The value of the <em>charset</em> argument must be accepted
      as a valid character set name by the character set support in
      APR. Generally, this means that it must be supported by
      iconv.</p>
      
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>example</strong></p><code>
      &lt;Directory "/export/home/trawick/apacheinst/htdocs/convert"&gt;<br>
      CharsetSourceEnc  UTF-16BE<br>
      CharsetDefault    ISO8859-1<br>
      &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
      <p>The character set names in this example work with the iconv
      translation support in Solaris 8.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_dav.html.en
  
  Index: mod_dav.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_dav- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_dav</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Distributed Authoring and Versioning
  (<a href="http://www.webdav.org/">WebDAV</a>) functionality</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>dav_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module provides class 1 and class 2 <a href="http://www.webdav.org">WebDAV</a> ('Web-based Distributed
      Authoring and Versioning') functionality for Apache. This
      extension to the HTTP protocol allows creating, moving,
      copying, and deleting resources and collections on a remote web
      server.</p>
  
      <p>To enable mod_dav, add the following to a container in your
      <code>httpd.conf</code> file:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>Dav On</code></td></tr></table></blockquote>
  
      <p>Also, specify a valid filename for the DAV lock database by
      adding the following to the global section in your
      <code>httpd.conf</code> file:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>DavLockDB /tmp/DavLock&nbsp;&nbsp;&nbsp;&nbsp;
        <em>(Any web-server writable filename, without an
        extension)</em>
  </code></td></tr></table></blockquote>
  <h2>Directives</h2><ul><li><a href="#dav">Dav</a></li><li><a href="#davdepthinfinity">DavDepthInfinity</a></li><li><a href="#davlockdb">DavLockDB</a></li><li><a href="#davmintimeout">DavMinTimeout</a></li></ul><hr/><h2><a name="Dav">Dav</a> <a name="dav">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enable WebDAV HTTP methods</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Dav on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Dav off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_dav</td></tr></table></td></tr></table>
      <p>Use the <code class="directive">Dav</code> directive to enable the
      WebDAV HTTP methods for the given container. You may wish to add a
      <a href="core.html#limit" class="directive"><code class="directive">&lt;Limit&gt;</code></a> clause
      inside the <a href="core.html#location" class="directive"><code class="directive">&lt;location&gt;</code></a> directive to limit access to
      DAV-enabled locations.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
          DavLockDB /tmp/DavLock<br>
          <br>
           &lt;Location /foo&gt;<br>
           Dav On<br>
          <br>
           AuthType Basic<br>
           AuthName DAV<br>
           AuthUserFile user.passwd<br>
          <br>
           &nbsp;&nbsp;&lt;LimitExcept GET HEAD OPTIONS&gt;<br>
           &nbsp;&nbsp;require user admin<br>
           &nbsp;&nbsp;&lt;/LimitExcept&gt;<br>
           &lt;/Location&gt;<br>
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="DavDepthInfinity">DavDepthInfinity</a> <a name="davdepthinfinity">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Allow PROPFIND, Depth: Infinity requests</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DavDepthInfinity on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>DavDepthInfinity off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_dav</td></tr></table></td></tr></table>
      <p>Use the <code class="directive">DavDepthInfinity</code> directive to
      allow the processing of PROPFIND requests containing the header
      'Depth: Infinity'. Because this type of request could constitute a
      denial-of-service attack, by default it is not allowed.</p>
  <hr/><h2><a name="DavLockDB">DavLockDB</a> <a name="davlockdb">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Location of the DAV lock database</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DavLockDB <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_dav</td></tr></table></td></tr></table>
      <p>Use the <code class="directive">DavLockDB</code> directive to specify
      the full path to the lock database, excluding an extension. The
      default (file system) implementation of mod_dav uses a SDBM
      database to track user locks. The utility
      <code>modules/dav/util/lockview</code> can be used from the server
      to display all locks in a lock database.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  DavLockDB /tmp/DavLock
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="DavMinTimeout">DavMinTimeout</a> <a name="davmintimeout">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Minimum amount of time the server holds a lock on
  a DAV resource</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DavMinTimeout <em>seconds</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>DavMinTimeout 0</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_dav</td></tr></table></td></tr></table>
      <p>When a client requests a DAV resource lock, it can also
      specify a time when the lock will be automatically removed by
      the server. This value is only a request, and the server can
      ignore it or inform the client of an arbitrary value.</p>
  
      <p>Use the <code class="directive">DavMinTimeout</code> directive to specify, in
      seconds, the minimum lock timeout to return to a client.
      Microsoft Web Folders defaults to a timeout of 120 seconds; the
      <code class="directive">DavMinTimeout</code> can override this to a higher value
      (like 600 seconds) to reduce the chance of the client losing
      the lock due to network latency.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
           &lt;Location /MSWord&gt;<br>
           DavMinTimeout 600<br>
           &lt;/Location&gt;<br>
  </code></td></tr></table></blockquote>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_deflate.html.en
  
  Index: mod_deflate.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_deflate- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_deflate</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Compress content before
      it is delivered to the client</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>deflate_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>The <code><a href="mod_deflate.html">mod_deflate</a></code> module provides
      the <code>DEFLATE</code> output filter that allows output from
      your server to be compressed before being sent to the client over
      the network.</p>
  <h2>Directives</h2><ul><li><a href="#deflatebuffersize">DeflateBufferSize</a></li><li><a href="#deflatefilternote">DeflateFilterNote</a></li><li><a href="#deflatememlevel">DeflateMemLevel</a></li><li><a href="#deflatewindowsize">DeflateWindowSize</a></li></ul><p><strong>See also </strong></p><ul><li><a href="mod_mime.html#addoutputfilter" class="directive"><code class="directive">AddOutputFilter</code></a></li><li><a href="core.html#setoutputfilter" class="directive"><code class="directive">SetOutputFilter</code></a></li></ul><h2>Enabling Compression</h2>
  
      <p>Compression is implemented by the <code>DEFLATE</code>
      <a href="../filter.html">filter</a>.  The following directive
      will enable compression for documents in the container where it
      is placed:</p>
      <p><strong>Most popular browsers can not handle compression of all content
          so you may want to enable the 'gzip-only-text/html' note (see below)
      </strong></p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>SetEnv gzip-only-text/html 1<br>
  SetOutputFilter DEFLATE
  </code></td></tr></table></blockquote>
  
      <p>Here is an example of enabling compression for the Apache
      documentation:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  &lt;Directory "/your-server-root/manual"&gt;<br>
        SetEnv gzip-only-text/html 1<br>
        SetOutputFilter DEFLATE<br>
  &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="DeflateBufferSize">DeflateBufferSize</a> <a name="deflatebuffersize">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Fragment size to be compressed at one time by zlib</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DeflateBufferSize <em>value</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_deflate</td></tr></table></td></tr></table>
      <p>The <code class="directive">DeflateBufferSize</code> directive specifies
      the size in bytes of the fragments that zlib should compress at one
      time.</p>
  <hr/><h2><a name="DeflateFilterNote">DeflateFilterNote</a> <a name="deflatefilternote">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Places the compression ratio in a note for logging</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DeflateFilterNote <em>notename</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_deflate</td></tr></table></td></tr></table>
      <p>The <code class="directive">DeflateFilterNote</code> directive
      specifies that a note about compression ratios should be attached
      to the request.  The name of the note is the value specified for
      the directive.</p>
  <hr/><h2><a name="DeflateMemLevel">DeflateMemLevel</a> <a name="deflatememlevel">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Amount of memory available to zlib for compression</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DeflateMemLevel <em>value</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_deflate</td></tr></table></td></tr></table>
      <p>The <code class="directive">DeflateMemLevel</code> directive specifies
      the amount of memory in bytes available to zlib for compression.</p>
  <hr/><h2><a name="DeflateWindowSize">DeflateWindowSize</a> <a name="deflatewindowsize">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Zlib compression window size</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DeflateWindowSize <em>value</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_deflate</td></tr></table></td></tr></table>
      <p>The <code class="directive">DeflateWindowSize</code> directive specifies the
      zlib compression window size (a value between 1 and 15).</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_dir.html.en
  
  Index: mod_dir.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_dir- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_dir</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides for "trailing slash" redirects and
      serving directory index files</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>dir_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>The index of a directory can come from one of two sources:</p>
  
      <ul>
        <li>A file written by the user, typically called
        <code>index.html</code>. The <a href="#directoryindex" class="directive"><code class="directive">DirectoryIndex</code></a> directive sets the
        name of this file. This is controlled by
        <code><a href="mod_dir.html">mod_dir</a></code>.</li>
  
        <li>Otherwise, a listing generated by the server. This is
        provided by <code><a href="mod_autoindex.html">mod_autoindex</a></code>.</li>
      </ul>
      <p>The two functions are separated so that you can completely
      remove (or replace) automatic index generation should you want
      to.</p> 
  
      <p>A "trailing slash" redirect is issued when the server
      receives a request for a URL
      <code>http://servername/foo/dirname</code> where
      <code>dirname</code> is a directory. Directories require a
      trailing slash, so <code><a href="mod_dir.html">mod_dir</a></code> issues a redirect to
      <code>http://servername/foo/dirname/</code>.</p>
  <h2>Directives</h2><ul><li><a href="#directoryindex">DirectoryIndex</a></li></ul><hr/><h2><a name="DirectoryIndex">DirectoryIndex</a> <a name="directoryindex">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>List of resources to look for when the client requests
  a directory</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DirectoryIndex
      <em>local-url</em> [<em>local-url</em>] ...</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>DirectoryIndex index.html</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_dir</td></tr></table></td></tr></table>
      <p>The <code class="directive">DirectoryIndex</code> directive sets the
      list of resources to look for, when the client requests an index
      of the directory by specifying a / at the end of the a directory
      name.  <em>Local-url</em> is the (%-encoded) URL of a document on
      the server relative to the requested directory; it is usually the
      name of a file in the directory. Several URLs may be given, in
      which case the server will return the first one that it finds.  If
      none of the resources exist and the <code>Indexes</code> option is
      set, the server will generate its own listing of the
      directory.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  DirectoryIndex index.html
  </code></td></tr></table></blockquote>
  
      <p>then a request for <code>http://myserver/docs/</code> would
      return <code>http://myserver/docs/index.html</code> if it
      exists, or would list the directory if it did not.</p>
  
      <p>Note that the documents do not need to be relative to the
      directory;</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>DirectoryIndex index.html index.txt  /cgi-bin/index.pl</code></td></tr></table></blockquote>
      <p>would cause the CGI script <code>/cgi-bin/index.pl</code> to be
      executed if neither <code>index.html</code> or
      <code>index.txt</code> existed in a directory.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_env.html.en
  
  Index: mod_env.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_env- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_env</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Modifies the environment which is
      passed to CGI scripts and SSI pages</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>env_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module allows for control of the environment that will
      be provided to CGI scripts and SSI pages. Environment variables
      may be passed from the shell which invoked the httpd process.
      Alternatively, environment variables may be set or unset within
      the configuration process.</p>
    <h2>Directives</h2><ul><li><a href="#passenv">PassEnv</a></li><li><a href="#setenv">SetEnv</a></li><li><a href="#unsetenv">UnsetEnv</a></li></ul><p><strong>See also </strong></p><ul><li><a href="../env.html">Environment Variables</a></li></ul><hr/><h2><a name="PassEnv">PassEnv</a> <a name="passenv">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Passes environment variables from the shell</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>PassEnv
      <em>env-variable</em> [<em>env-variable</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_env</td></tr></table></td></tr></table>
      <p>Specifies one or more environment variables to pass to CGI
      scripts and SSI pages from the environment of the shell which
      invoked the httpd process. Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      PassEnv LD_LIBRARY_PATH
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SetEnv">SetEnv</a> <a name="setenv">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets environment variables</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SetEnv <em>env-variable value</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_env</td></tr></table></td></tr></table>
      <p>Sets an environment variable, which is then passed on to CGI
      scripts and SSI pages. Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      SetEnv SPECIAL_PATH /foo/bin
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="UnsetEnv">UnsetEnv</a> <a name="unsetenv">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Removes variables from the environment</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>UnsetEnv <em>env-variable</em> [<em>env-variable</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_env</td></tr></table></td></tr></table>
      <p>Removes one or more environment variables from those passed
      on to CGI scripts and SSI pages. Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      UnsetEnv LD_LIBRARY_PATH
  </code></td></tr></table></blockquote>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_example.html.en
  
  Index: mod_example.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_example- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_example</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Illustrates the Apache module API</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>example_module</td></tr></table></td></tr></table><h2>Summary</h2>
  <blockquote><table><tr><td bgcolor="#ffe5f5">
        This document has not been updated
        to take into account changes made in the 2.0 version of the
        Apache HTTP Server. Some of the information may still be
        relevant, but please use it with care.
  </td></tr></table></blockquote>
  
      <p>The files in the <code>src/modules/example directory</code>
      under the Apache distribution directory tree are provided as an
      example to those that wish to write modules that use the Apache
      API.</p>
  
      <p>The main file is <code>mod_example.c</code>, which
      illustrates all the different callback mechanisms and call
      syntaxes. By no means does an add-on module need to include
      routines for all of the callbacks - quite the contrary!</p>
  
      <p>The example module is an actual working module. If you link
      it into your server, enable the "example-handler" handler for a
      location, and then browse to that location, you will see a
      display of some of the tracing the example module did as the
      various callbacks were made.</p>
  <h2>Directives</h2><ul><li><a href="#example">Example</a></li></ul><h2>Compiling the example module</h2>
  
      <p>To include the example module in your server, follow the
      steps below:</p>
  
      <ol>
        <li>
          Uncomment the "AddModule modules/example/mod_example" line
          near the bottom of the <code>src/Configuration</code> file.
          If there isn't one, add it; it should look like this: 
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
       AddModule modules/example/mod_example.o
  </code></td></tr></table></blockquote>
        </li>
  
        <li>Run the <code>src/Configure</code> script
        ("<code>cd&nbsp;src;&nbsp;./Configure</code>"). This will
        build the Makefile for the server itself, and update the
        <code>src/modules/Makefile</code> for any additional modules
        you have requested from beneath that subdirectory.</li>
  
        <li>Make the server (run "<code>make</code>" in the
        <code>src</code> directory).</li>
      </ol>
  
      <p>To add another module of your own:</p>
  
      <ol type="A">
        <li><code>mkdir src/modules/<em>mymodule</em></code></li>
  
        <li><code>cp src/modules/example/*
        src/modules/<em>mymodule</em></code></li>
  
        <li>Modify the files in the new directory.</li>
  
        <li>Follow steps [1] through [3] above, with appropriate
        changes.</li>
      </ol>
  <h2>Using the <code>mod_example</code> Module</h2>
  
      <p>To activate the example module, include a block similar to
      the following in your <code>srm.conf</code> file:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     &lt;Location /example-info&gt;<br>
         SetHandler example-handler<br>
     &lt;/Location&gt;
  </code></td></tr></table></blockquote>
  
      <p>As an alternative, you can put the following into a <a href="core.html#accessfilename"><code>.htaccess</code></a> file
      and then request the file "test.example" from that location:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     AddHandler example-handler .example
  </code></td></tr></table></blockquote>
  
      <p>After reloading/restarting your server, you should be able
      to browse to this location and see the brief display mentioned
      earlier.</p>
  <hr/><h2><a name="Example">Example</a> <a name="example">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Demonstration directive to illustrate the Apache module
  API</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Example</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_example</td></tr></table></td></tr></table>
      <p>The <code class="directive">Example</code> directive just sets a demonstration
      flag which the example module's content handler displays. It
      takes no arguments. If you browse to an URL to which the
      example content-handler applies, you will get a display of the
      routines within the module and how and in what order they were
      called to service the document request. The effect of this
      directive one can observe under the point "<code>Example
      directive declared here: YES/NO</code>".</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_expires.html.en
  
  Index: mod_expires.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_expires- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_expires</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Generation of
      <code>Expires</code> HTTP headers according to user-specified
      criteria</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>expires_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module controls the setting of the <code>Expires</code>
      HTTP header in server responses. The expiration date can set to
      be relative to either the time the source file was last
      modified, or to the time of the client access.</p>
  
      <p>The <code>Expires</code> HTTP header is an instruction to
      the client about the document's validity and persistence. If
      cached, the document may be fetched from the cache rather than
      from the source until this time has passed. After that, the
      cache copy is considered "expired" and invalid, and a new copy
      must be obtained from the source.</p>
  <h2>Directives</h2><ul><li><a href="#expiresactive">ExpiresActive</a></li><li><a href="#expiresbytype">ExpiresByType</a></li><li><a href="#expiresdefault">ExpiresDefault</a></li></ul><h2><a name="AltSyn">Alternate Interval
      Syntax</a></h2>
  
      <p>The <a href="#expiresdefault" class="directive"><code class="directive">ExpiresDefault</code></a> and 
      <a href="#expiresbytype" class="directive"><code class="directive">ExpiresByType</code></a> directives
      can also be defined in a more readable syntax of the form:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
         ExpiresDefault "&lt;base&gt; [plus] {&lt;num&gt;
        &lt;type&gt;}*"<br>
         ExpiresByType type/encoding "&lt;base&gt; [plus]
        {&lt;num&gt; &lt;type&gt;}*"
  </code></td></tr></table></blockquote>
  
      <p>where &lt;base&gt; is one of:</p>
  
      <ul>
        <li><code>access</code></li>
  
        <li><code>now</code> (equivalent to
        '<code>access</code>')</li>
  
        <li><code>modification</code></li>
      </ul>
  
      <p>The '<code>plus</code>' keyword is optional. &lt;num&gt;
      should be an integer value [acceptable to <code>atoi()</code>],
      and &lt;type&gt; is one of:</p>
  
      <ul>
        <li><code>years</code></li>
  
        <li><code>months</code></li>
  
        <li><code>weeks</code></li>
  
        <li><code>days</code></li>
  
        <li><code>hours</code></li>
  
        <li><code>minutes</code></li>
  
        <li><code>seconds</code></li>
      </ul>
  
      <p>For example, any of the following directives can be used to
      make documents expire 1 month after being accessed, by
      default:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
         ExpiresDefault "access plus 1 month"<br>
         ExpiresDefault "access plus 4 weeks"<br>
         ExpiresDefault "access plus 30 days"
  </code></td></tr></table></blockquote>
  
      <p>The expiry time can be fine-tuned by adding several
      '&lt;num&gt; &lt;type&gt;' clauses:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  ExpiresByType text/html "access plus 1 month 15
        days 2 hours"<br>
         ExpiresByType image/gif "modification plus 5 hours 3
        minutes"
  </code></td></tr></table></blockquote>
  
      <p>Note that if you use a modification date based setting, the
      Expires header will <strong>not</strong> be added to content
      that does not come from a file on disk. This is due to the fact
      that there is no modification time for such content.</p>
  <hr/><h2><a name="ExpiresActive">ExpiresActive</a> <a name="expiresactive">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enables generation of Expires headers</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ExpiresActive On|Off</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_expires</td></tr></table></td></tr></table>
      <p>This directive enables or disables the generation of the
      <code>Expires</code> header for the document realm in question.
      (That is, if found in an <code>.htaccess</code> file, for
      instance, it applies only to documents generated from that
      directory.) If set to <em><code>Off</code></em>, no
      <code>Expires</code> header will be generated for any document
      in the realm (unless overridden at a lower level, such as an
      <code>.htaccess</code> file overriding a server config file).
      If set to <em><code>On</code></em>, the header will be added to
      served documents according to the criteria defined by the 
      <a href="#expiresbytype" class="directive"><code class="directive">ExpiresByType</code></a> and 
      <a href="#expiresdefault" class="directive"><code class="directive">ExpiresDefault</code></a> directives
      (<em>q.v.</em>).</p>
  
      <p>Note that this directive does not guarantee that an
      <code>Expires</code> header will be generated. If the criteria
      aren't met, no header will be sent, and the effect will be as
      though this directive wasn't even specified.</p>
  <hr/><h2><a name="ExpiresByType">ExpiresByType</a> <a name="expiresbytype">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Value of the Expires header configured
  by MIME type</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ExpiresByType
      <em>MIME-type &lt;code&gt;seconds</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_expires</td></tr></table></td></tr></table>
      <p>This directive defines the value of the <code>Expires</code>
      header generated for documents of the specified type
      (<em>e.g.</em>, <code>text/html</code>). The second argument
      sets the number of seconds that will be added to a base time to
      construct the expiration date.</p>
  
      <p>The base time is either the last modification time of the
      file, or the time of the client's access to the document. Which
      should be used is specified by the
      <code><em>&lt;code&gt;</em></code> field; <strong>M</strong>
      means that the file's last modification time should be used as
      the base time, and <strong>A</strong> means the client's access
      time should be used.</p>
  
      <p>The difference in effect is subtle. If <em>M</em> is used,
      all current copies of the document in all caches will expire at
      the same time, which can be good for something like a weekly
      notice that's always found at the same URL. If <em>A</em> is
      used, the date of expiration is different for each client; this
      can be good for image files that don't change very often,
      particularly for a set of related documents that all refer to
      the same images (<em>i.e.</em>, the images will be accessed
      repeatedly within a relatively short timespan).</p>
  
      <p><strong>Example:</strong></p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  # enable expirations<br>
  ExpiresActive On<br>
  # expire GIF images after a month in the client's cache<br>
  ExpiresByType image/gif A2592000<br>
  # HTML documents are good for a week from the time they were changed<br>
  ExpiresByType text/html M604800
  </code></td></tr></table></blockquote>
  
      <p>Note that this directive only has effect if
      <code>ExpiresActive On</code> has been specified. It overrides,
      for the specified MIME type <em>only</em>, any expiration date
      set by the <a href="#expiresdefault" class="directive"><code class="directive">ExpiresDefault</code></a>
      directive.</p>
  
      <p>You can also specify the expiration time calculation using
      an <a href="#AltSyn">alternate syntax</a>, described earlier in
      this document.</p>
  <hr/><h2><a name="ExpiresDefault">ExpiresDefault</a> <a name="expiresdefault">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Default algorithm for calculating expiration time</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ExpiresDefault <em>&lt;code&gt;seconds</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_expires</td></tr></table></td></tr></table>
      <p>This directive sets the default algorithm for calculating the
      expiration time for all documents in the affected realm. It can be
      overridden on a type-by-type basis by the <a href="#expiresbytype" class="directive"><code class="directive">ExpiresByType</code></a> directive. See the
      description of that directive for details about the syntax of the
      argument, and the <a href="#AltSyn">alternate syntax</a>
      description as well.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_ext_filter.html.en
  
  Index: mod_ext_filter.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_ext_filter- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_ext_filter</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Pass the response body
      through an external program before delivery to the
      client</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>ext_filter_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This is an <strong>experimental</strong> module and should
      be used with care. Test your <code><a href="mod_ext_filter.html">mod_ext_filter</a></code>
      configuration carefully to ensure that it performs the desired
      function. You may wish to review <a href="../filter.html">
      this information</a> for background on the Apache filtering 
      model.</p>
  
      <p><code><a href="mod_ext_filter.html">mod_ext_filter</a></code> presents a simple and familiar
      programming model for filters. With this module, a program
      which reads from stdin and writes to stdout (i.e., a Unix-style
      filter command) can be a filter for Apache. This filtering
      mechanism is much slower than using a filter which is specially
      written for the Apache API and runs inside of the Apache server
      process, but it does have the following benefits:</p>
  
      <ul>
        <li>the programming model is much simpler</li>
  
        <li>any programming/scripting language can be used, provided
        that it allows the program to read from standard input and
        write to standard output</li>
  
        <li>existing programs can be used unmodified as Apache
        filters</li>
      </ul>
  
      <p>Even when the performance characteristics are not suitable
      for production use, <code>mod_ext_filter</code> can be used as
      a prototype environment for filters.</p>
  <h2>Directives</h2><ul><li><a href="#extfilterdefine">ExtFilterDefine</a></li><li><a href="#extfilteroptions">ExtFilterOptions</a></li></ul><h2>Examples</h2>
  
  <h3>Generating HTML from some other type of response</h3>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
      # mod_ext_filter directive to define a filter to HTML-ize text/c files 
      # using the external program /usr/bin/enscript, with the type of the 
      # result set to text/html
      ExtFilterDefine c-to-html mode=output intype=text/c outtype=text/html \
                      cmd="/usr/bin/enscript --color -W html -Ec -o - -"
  
      &lt;Directory "/export/home/trawick/apacheinst/htdocs/c"&gt;
  
      # core directive to cause the new filter to be run on output
      SetOutputFilter c-to-html
  
      # mod_mime directive to set the type of .c files to text/c
      AddType text/c .c
  
      # mod_ext_filter directive to set the debug level just high 
      # enough to see a log message per request showing the configuration
      # in force
      ExtFilterOptions DebugLevel=1
  
      &lt;/Directory&gt;
  </pre>
  </code></td></tr></table></blockquote>
  
  
  <h3>Implementing a content encoding filter</h3>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
    # mod_ext_filter directive to define the external filter
    ExtFilterDefine gzip mode=output cmd=/bin/gzip
  
    &lt;Location /gzipped&gt;
  
    # core directive to cause the gzip filter to be run on output
    SetOutputFilter gzip
  
    # mod_header directive to add "Content-Encoding: gzip" header field
    Header set Content-Encoding gzip
  
    &lt;/Location&gt;
  </pre>
  </code></td></tr></table></blockquote>
  
    <p>Note: this gzip example is just for the purposes of illustration.
    Please refer to <code><a href="mod_deflate.html">mod_deflate</a></code> for a practical
    implementation.</p>
  
  
  <h3>Slowing down the server</h3>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
    # mod_ext_filter directive to define a filter which runs everything 
    # through cat; cat doesn't modify anything; it just introduces extra
    # pathlength and consumes more resources
    ExtFilterDefine slowdown mode=output cmd=/bin/cat preservescontentlength
  
    &lt;Location /&gt;
  
    # core directive to cause the slowdown filter to be run several times on 
    # output
    SetOutputFilter slowdown slowdown slowdown
  
    &lt;/Location&gt;
  </pre>
  </code></td></tr></table></blockquote>
  
  
  <hr/><h2><a name="ExtFilterDefine">ExtFilterDefine</a> <a name="extfilterdefine">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ExtFilterDefine <em>filtername</em> <em>parameters</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ext_filter</td></tr></table></td></tr></table>
      <p>The <code class="directive">ExtFilterDefine</code> directive defines the
      characteristics of an external filter, including the program to
      run and its arguments.</p>
  
      <p><em>filtername</em> specifies the name of the filter being
      defined. This name can then be used in SetOutputFilter
      directives. It must be unique among all registered filters.
      <em>At the present time, no error is reported by the
      register-filter API, so a problem with duplicate names isn't
      reported to the user.</em></p>
  
      <p>Subsequent parameters can appear in any order and define the
      external command to run and certain other characteristics. The
      only required parameter is <em>cmd=</em>. These parameters
      are:</p>
  
      <dl>
        <dt>cmd=<em>cmdline</em></dt>
  
        <dd>The <code>cmd=</code> keyword allows you to specify the
        external command to run. If there are arguments after the
        program name, the command line should be surrounded in
        quotation marks.</dd>
  
        <dt>mode=<em>mode</em></dt>
  
        <dd><em>mode</em> should be <em>output</em> for now (the
        default). In the future, <em>mode=input</em> will be used to
        specify a filter for request bodies.</dd>
  
        <dt>intype=<em>imt</em></dt>
  
        <dd>This parameter specifies the internet media type (i.e.,
        MIME type) of documents which should be filtered. By default,
        all documents are filtered. If <code>intype=</code> is
        specified, the filter will be disabled for documents of other
        types.</dd>
  
        <dt>outtype=<em>imt</em></dt>
  
        <dd>This parameter specifies the internet media type (i.e.,
        MIME type) of filtered documents. It is useful when the
        filter changes the internet media type as part of the
        filtering operation. By default, the internet media type is
        unchanged.</dd>
  
        <dt>PreservesContentLength</dt>
  
        <dd>The <code>PreservesContentLength</code> keyword specifies
        that the filter preserves the content length. This is not the
        default, as most filters change the content length. In the
        event that the filter doesn't modify the length, this keyword
        should be specified.</dd>
      </dl>
  <hr/><h2><a name="ExtFilterOptions">ExtFilterOptions</a> <a name="extfilteroptions">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ExtFilterOptions
      <em>option</em> [<em>option</em>] ...</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ExtFilterOptions DebugLevel=0 NoLogStderr</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ext_filter</td></tr></table></td></tr></table>
      <p>The <code class="directive">ExtFilterOptions</code> directive specifies
      special processing options for <code>mod_ext_filter</code>.
      <em>Option</em> can be one of</p>
  
      <dl>
        <dt>DebugLevel=<em>n</em></dt>
  
        <dd>
          The <code>DebugLevel</code> keyword allows you to specify
          the level of debug messages generated by
          <code>mod_ext_filter</code>. By default, no debug messages
          are generated. This is equivalent to
          <code>DebugLevel=0</code>. With higher numbers, more debug
          messages are generated, and server performance will be
          degraded. The actual meanings of the numeric values are
          described with the definitions of the DBGLVL_ constants
          near the beginning of <code>mod_ext_filter.c</code>. 
  
          <p>Note: The core directive LogLevel should be used to
          cause debug messages to be stored in the Apache error
          log.</p>
        </dd>
  
        <dt>LogStderr | NoLogStderr</dt>
  
        <dd>The <code>LogStderr</code> keyword specifies that
        messages written to standard error by the external filter
        program will be saved in the Apache error log.
        <code>NoLogStderr</code> disables this feature.</dd>
      </dl>
  
       <p>Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      ExtFilterOptions  LogStderr DebugLevel=0
  </code></td></tr></table></blockquote>
  
      <p>Messages written to the filter's standard error will be stored
      in the Apache error log. No debug messages will be generated by
      <code><a href="mod_ext_filter.html">mod_ext_filter</a></code>. </p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_file_cache.html.en
  
  Index: mod_file_cache.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_file_cache- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_file_cache</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Caches a static list of files in memory</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>file_cache_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
  <blockquote><table><tr><td bgcolor="#ffe5f5">
  This module should be used with care. You can easily
      create a broken site using mod_file_cache, so read this
      document carefully.
  </td></tr></table></blockquote>
  
      <p><em>Caching</em> frequently requested files that change very
      infrequently is a technique for reducing server load.
      mod_file_cache provides two techniques for caching frequently
      requested <em>static</em> files. Through configuration
      directives, you can direct mod_file_cache to either open then
      mmap()a file, or to pre-open a file and save the file's open
      <em>file handle</em>. Both techniques reduce server load when
      processing requests for these files by doing part of the work
      (specifically, the file I/O) for serving the file when the
      server is started rather than during each request.</p>
  
      <p>Notice: You cannot use this for speeding up CGI programs or
      other files which are served by special content handlers. It
      can only be used for regular files which are usually served by
      the Apache core content handler.</p>
  
      <p>This module is an extension of and borrows heavily from the
      mod_mmap_static module in Apache 1.3.</p>
  <h2>Directives</h2><ul><li><a href="#cachefile">CacheFile</a></li><li><a href="#mmapfile">MMapFile</a></li></ul><h2>Using mod_file_cache</h2>
  
      <p><code><a href="mod_file_cache.html">mod_file_cache</a></code> caches a list of statically
      configured files via <a href="#mmapfile" class="directive"><code class="directive">MMapFile</code></a> or <a href="#cachefile" class="directive"><code class="directive">CacheFile</code></a> directives in the
      main server configuration.</p>
  
      <p>Not all platforms support both directives. For example, Apache
      on Windows does not currently support the <a href="#mmapstatic" class="directive"><code class="directive">MMapStatic</code></a> directive, while
      other platforms, like AIX, support both. You will receive an error
      message in the server error log if you attempt to use an
      unsupported directive. If given an unsupported directive, the
      server will start but the file will not be cached. On platforms
      that support both directives, you should experiment with both to
      see which works best for you.</p>
  
  <h3>MmapFile Directive</h3>
  
      <p>The <a href="#mmapfile" class="directive"><code class="directive">MmapFile</code></a>
      directive of <code><a href="mod_file_cache.html">mod_file_cache</a></code> maps a list of
      statically configured files into memory through the system call
      <code>mmap()</code>. This system call is available on most modern
      Unix derivates, but not on all. There are sometimes
      system-specific limits on the size and number of files that can be
      mmap()d, experimentation is probably the easiest way to find
      out.</p>
  
      <p>This mmap()ing is done once at server start or restart,
      only. So whenever one of the mapped files changes on the
      filesystem you <em>have</em> to restart the server (see the <a href="../stopping.html">Stopping and Restarting</a>
      documentation). To reiterate that point: if the files are
      modified <em>in place</em> without restarting the server you
      may end up serving requests that are completely bogus. You
      should update files by unlinking the old copy and putting a new
      copy in place. Most tools such as <code>rdist</code> and
      <code>mv</code> do this. The reason why this modules doesn't
      take care of changes to the files is that this check would need
      an extra <code>stat()</code> every time which is a waste and
      against the intent of I/O reduction.</p>
  
  
  <h3>CacheFile Directive</h3>
  
      <p>The <a href="#cachefile" class="directive"><code class="directive">CacheFile</code></a>
      directive of <code><a href="mod_file_cache.html">mod_file_cache</a></code> opens an active
      <em>handle</em> or <em>file descriptor</em> to the file (or files)
      listed in the configuration directive and places these open file
      handles in the cache. When the file is requested, the server
      retrieves the handle from the cache and passes it to the
      sendfile() (or TransmitFile() on Windows), socket API.</p>
  
      <p>Insert more details about sendfile API...</p>
  
      <p>This file handle caching is done once at server start or
      restart, only. So whenever one of the cached files changes on
      the filesystem you <em>have</em> to restart the server (see the
      <a href="../stopping.html">Stopping and Restarting</a>
      documentation). To reiterate that point: if the files are
      modified <em>in place</em> without restarting the server you
      may end up serving requests that are completely bogus. You
      should update files by unlinking the old copy and putting a new
      copy in place. Most tools such as <code>rdist</code> and
      <code>mv</code> do this.</p>
  
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note</strong></p> Don't bother asking for a for a
      directive which recursively caches all the files in a
      directory. Try this instead... See the 
      <a href="core.html#include" class="directive"><code class="directive">Include</code></a> directive, and consider
      this command:
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    find /www/htdocs -type f -print \ <br>
    | sed -e 's/.*/mmapfile &amp;/' &gt; /www/conf/mmap.conf
  </code></td></tr></table></blockquote>
  </td></tr></table></blockquote>
  
  <hr/><h2><a name="CacheFile">CacheFile</a> <a name="cachefile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CacheFile
      <em>file-path</em> [<em>file-path</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_file_cache</td></tr></table></td></tr></table>
      <p>The <code class="directive">CacheFile</code> directive opens handles to
      one or more files (given as whitespace separated arguments) and
      places these handles into the cache at server startup
      time. Handles to cached files are automatically closed on a server
      shutdown.  When the files have changed on the filesystem, the
      server should be restarted to to re-cache them.</p>
  
      <p>Be careful with the <em>file-path</em> arguments: They have
      to literally match the filesystem path Apache's URL-to-filename
      translation handlers create. We cannot compare inodes or other
      stuff to match paths through symbolic links <em>etc.</em>
      because that again would cost extra <code>stat()</code> system
      calls which is not acceptable. This module may or may not work
      with filenames rewritten by <code><a href="mod_alias.html">mod_alias</a></code> or
      <code><a href="mod_rewrite.html">mod_rewrite</a></code>.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
    CacheFile /usr/local/apache/htdocs/index.html
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="MMapFile">MMapFile</a> <a name="mmapfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MMapFile <em>file-path</em> [<em>file-path</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Experimental</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_file_cache</td></tr></table></td></tr></table>
      <p>The <code class="directive">MMapFile</code> directive maps one or more files
      (given as whitespace separated arguments) into memory at server
      startup time. They are automatically unmapped on a server
      shutdown. When the files have changed on the filesystem at
      least a HUP or USR1 signal should be send to the server to
      re-mmap them.</p>
  
      <p>Be careful with the <em>file-path</em> arguments: They have
      to literally match the filesystem path Apache's URL-to-filename
      translation handlers create. We cannot compare inodes or other
      stuff to match paths through symbolic links <em>etc.</em>
      because that again would cost extra <code>stat()</code> system
      calls which is not acceptable. This module may or may not work
      with filenames rewritten by <code><a href="mod_alias.html">mod_alias</a></code> or
      <code><a href="mod_rewrite.html">mod_rewrite</a></code>.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
    MMapFile /usr/local/apache/htdocs/index.html
  </code></td></tr></table></blockquote>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_headers.html.en
  
  Index: mod_headers.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_headers- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_headers</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Customization of HTTP request
      and response headers</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>headers_module</td></tr><tr><td align="left" valign="top"><a href="module-dict.html#Compatibility" class="help">Compatibility:</a></td><td><compatibility>RequestHeader is available only in Apache 2.0</compatibility></td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module provides directives to control and modify HTTP
      request and response headers. Headers can be merged, replaced
      or removed.</p>
  <h2>Directives</h2><ul><li><a href="#header">Header</a></li><li><a href="#requestheader">RequestHeader</a></li></ul><h2>Order of Processing</h2>
  
      <p>The directives provided by mod_header can occur almost
      anywhere within the server configuration. They are valid in the
      main server config and virtual host sections, inside
      &lt;Directory&gt;, &lt;Location&gt; and &lt;Files&gt; sections,
      and within .htaccess files.</p>
  
      <p>The directives are processed in the following order:</p>
  
      <ol>
        <li>main server</li>
  
        <li>virtual host</li>
  
        <li>&lt;Directory&gt; sections and .htaccess</li>
  
        <li>&lt;Location&gt;</li>
  
        <li>&lt;Files&gt;</li>
      </ol>
  
      <p>Order is important. These two headers have a different
      effect if reversed:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  RequestHeader append MirrorID "mirror 12"<br>
         RequestHeader unset MirrorID
  </code></td></tr></table></blockquote>
  
      <p>This way round, the MirrorID header is not set. If reversed,
      the MirrorID header is set to "mirror 12".</p>
  <h2>Example</h2>
  
      <ol>
        <li>Copy all request headers that begin with "TS" to the
        response headers:
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     Header echo ^TS*
  </code></td></tr></table></blockquote></li>
  
        <li>Add a header, MyHeader, to the response including a
        timestamp for when the request was received and how long it
        took to begin serving the request. This header can be used by
        the client to intuit load on the server or in isolating
        bottlenecks between the client and the server.
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     Header add MyHeader "%D %t"
  </code></td></tr></table></blockquote>
          results in this header being added to the response:
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     MyHeader: D=3775428 t=991424704447256
  </code></td></tr></table></blockquote>
        </li>
  
        <li>Say hello to Joe
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request."
  </code></td></tr></table></blockquote>
          results in this header being added to the response: 
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request.
  </code></td></tr></table></blockquote>
        </li>
  
        <li>Conditionally send MyHeader on the response if and only
        if header "MyRequestHeader" is present on the request. This
        is useful for constructing headers in response to some client
        stimulus. Note that this example requires the services of the
        mod_setenvif module.
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     SetEnvIf MyRequestHeader value HAVE_MyRequestHeader<br>
     Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
  </code></td></tr></table></blockquote>
          If the header "MyRequestHeader: value" is present on the
          HTTP request, the response will contain the following
          header: 
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     MyHeader: D=3775428 t=991424704447256 mytext
  </code></td></tr></table></blockquote>
        </li>
      </ol>
  <hr/><h2><a name="Header">Header</a> <a name="header">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configure HTTP response headers</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Header set|append|add|unset|echo  <em>header</em> 
  [<em>value</em>]</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_headers</td></tr></table></td></tr></table>
      <p>This directive can replace, merge or remove HTTP response
      headers. The header is modified just after the content handler
      and output filters are run, allowing outgoing headers to be
      modified. The action it performs is determined by the first
      argument. This can be one of the following values:</p>
  
      <ul>
        <li><strong>set</strong><br>
         The response header is set, replacing any previous header
        with this name. The <em>value</em> may be a format
        string.</li>
  
        <li><strong>append</strong><br>
         The response header is appended to any existing header of
        the same name. When a new value is merged onto an existing
        header it is separated from the existing header with a comma.
        This is the HTTP standard way of giving a header multiple
        values.</li>
  
        <li><strong>add</strong><br>
         The response header is added to the existing set of headers,
        even if this header already exists. This can result in two
        (or more) headers having the same name. This can lead to
        unforeseen consequences, and in general "append" should be
        used instead.</li>
  
        <li><strong>unset</strong><br>
         The response header of this name is removed, if it exists.
        If there are multiple headers of the same name, all will be
        removed.</li>
  
        <li><strong>echo</strong><br>
         Request headers with this name are echoed back in the
        response headers. <em>header</em> may be a regular
        expression.</li>
      </ul>
  
      <p>This argument is followed by a <em>header</em> name, which
      can include the final colon, but it is not required. Case is
      ignored for set, append, add and unset. The <em>header</em>
      name for echo is case sensitive and may be a regular
      expression.</p>
  
      <p>For <code>add</code>, <code>append</code> and
      <code>set</code> a <em>value</em> is specified as the third
      argument. If <em>value</em> contains spaces, it should be
      surrounded by doublequotes. <em>value</em> may be a character
      string, a string containing format specifiers or a combination
      of both. The following format specifiers are supported in
      <em>value</em>:</p>
  <table>
  <tr><td>%t: </td> <td>The time the request was received in Universal
  Coordinated Time since the epoch (Jan. 1, 1970) measured in
  microseconds. The value is preceded by "t=".</td></tr>
  
  <tr><td>%D: </td> <td>The time from when the request was received to
  the time the headers are sent on the wire. This is a measure of the
  duration of the request. The value is preceded by "D=".</td></tr>
  
  <tr><td>%{FOOBAR}e:</td> <td>The contents of the <a href="../env.html">environment
  variable</a> FOOBAR.</td></tr>
  </table>
  
      <p>When the <code class="directive">Header</code> directive is used with the
      <code>add</code>, <code>append</code>, or <code>set</code>
      argument, a fourth argument may be used to specify conditions
      under which the action will be taken. If the <a href="../env.html">environment variable</a> specified in the
      <code>env=...</code> argument exists (or if the environment
      variable does not exist and <code>env=!...</code> is specified)
      then the action specified by the <code class="directive">Header</code> directive
      will take effect. Otherwise, the directive will have no effect
      on the request.</p>
  
      <p>The Header directives are processed just before the response
      is sent to the network. These means that it is possible to set
      and/or override most headers, except for those headers added by
      the header filter.</p>
  <hr/><h2><a name="RequestHeader">RequestHeader</a> <a name="requestheader">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configure HTTP request headers</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RequestHeader   set|append|add|unset <em>header</em> 
  [<em>value</em>]</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_headers</td></tr></table></td></tr></table>
      <p>This directive can replace, merge or remove HTTP request
      headers. The header is modified just before the content handler
      is run, allowing incoming headers to be modified. The action it
      performs is determined by the first argument. This can be one
      of the following values:</p>
  
      <ul>
        <li><strong>set</strong><br>
         The request header is set, replacing any previous header
        with this name</li>
  
        <li><strong>append</strong><br>
         The request header is appended to any existing header of the
        same name. When a new value is merged onto an existing header
        it is separated from the existing header with a comma. This
        is the HTTP standard way of giving a header multiple
        values.</li>
  
        <li><strong>add</strong><br>
         The request header is added to the existing set of headers,
        even if this header already exists. This can result in two
        (or more) headers having the same name. This can lead to
        unforeseen consequences, and in general "append" should be
        used instead.</li>
  
        <li><strong>unset</strong><br>
         The request header of this name is removed, if it exists. If
        there are multiple headers of the same name, all will be
        removed.</li>
      </ul>
  
      <p>This argument is followed by a header name, which can
      include the final colon, but it is not required. Case is
      ignored. For <code>add</code>, <code>append</code> and
      <code>set</code> a value is given as the third argument. If
      this value contains spaces, it should be surrounded by double
      quotes. For unset, no value should be given.</p>
  
      <p>The <code class="directive">RequestHeader</code> directive is processed
      just before the request is run by its handler in the fixup phase.
      This should allow headers generated by the browser, or by Apache
      input filters to be overridden or modified.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_imap.html.en
  
  Index: mod_imap.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_imap- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_imap</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Server-side imagemap processing</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>imap_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module processes <code>.map</code> files, thereby
      replacing the functionality of the <code>imagemap</code> CGI
      program. Any directory or document type configured to use the
      handler <code>imap-file</code> (using either 
      <a href="mod_mime.html#addhandler" class="directive"><code class="directive">AddHandler</code></a> or
      <a href="core.html#sethandler" class="directive"><code class="directive">SetHandler</code></a>)
      will be processed by this module.</p>
  
      <p>The following directive will activate files ending with
      <code>.map</code> as imagemap files:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>AddHandler imap-file map</code></td></tr></table></blockquote>
  
      <p>Note that the following is still supported:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>AddType application/x-httpd-imap map</code></td></tr></table></blockquote>
  
      <p>However, we are trying to phase out "magic MIME types" so we
      are deprecating this method.</p>
  <h2>Directives</h2><ul><li><a href="#imapbase">ImapBase</a></li><li><a href="#imapdefault">ImapDefault</a></li><li><a href="#imapmenu">ImapMenu</a></li></ul><h2>New Features</h2>
  
      <p>The imagemap module adds some new features that were not
      possible with previously distributed imagemap programs.</p>
  
      <ul>
        <li>URL references relative to the Referer: information.</li>
  
        <li>Default &lt;BASE&gt; assignment through a new map
        directive <code>base</code>.</li>
  
        <li>No need for <code>imagemap.conf</code> file.</li>
  
        <li>Point references.</li>
  
        <li>Configurable generation of imagemap menus.</li>
      </ul>
  <h2>Imagemap File</h2>
  
      <p>The lines in the imagemap files can have one of several
      formats:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        directive value [x,y ...]<br>
        directive value "Menu text" [x,y ...]<br>
        directive value x,y ... "Menu text"
  </code></td></tr></table></blockquote>
      <p>The directive is one of <code>base</code>,
      <code>default</code>, <code>poly</code>, <code>circle</code>,
      <code>rect</code>, or <code>point</code>. The value is an
      absolute or relative URL, or one of the special values listed
      below. The coordinates are <code>x,y</code> pairs separated by
      whitespace. The quoted text is used as the text of the link if
      a imagemap menu is generated. Lines beginning with '#' are
      comments.</p>
  
  <h3>Imagemap File Directives</h3>
      <p>There are six directives allowed in the imagemap file. The
      directives can come in any order, but are processed in the
      order they are found in the imagemap file.</p>
  
      <dl>
        <dt><code>base</code> Directive</dt>
  
        <dd>Has the effect of <code>&lt;BASE HREF="value"&gt;</code>.
        The non-absolute URLs of the map-file are taken relative to
        this value. The <code>base</code> directive overrides
        ImapBase as set in a .htaccess file or in the server
        configuration files. In the absence of an ImapBase
        configuration directive, <code>base</code> defaults to
        <code>http://server_name/</code>.<br>
         <code>base_uri</code> is synonymous with <code>base</code>.
        Note that a trailing slash on the URL is significant.</dd>
  
        <dt><code>default</code> Directive</dt>
  
        <dd>The action taken if the coordinates given do not fit any
        of the <code>poly</code>, <code>circle</code> or
        <code>rect</code> directives, and there are no
        <code>point</code> directives. Defaults to
        <code>nocontent</code> in the absence of an ImapDefault
        configuration setting, causing a status code of <code>204 No
        Content</code> to be returned. The client should keep the
        same page displayed.</dd>
  
        <dt><code>poly</code> Directive</dt>
  
        <dd>Takes three to one-hundred points, and is obeyed if the
        user selected coordinates fall within the polygon defined by
        these points.</dd>
  
        <dt><code>circle</code></dt>
  
        <dd>Takes the center coordinates of a circle and a point on
        the circle. Is obeyed if the user selected point is with the
        circle.</dd>
  
        <dt><code>rect</code> Directive</dt>
  
        <dd>Takes the coordinates of two opposing corners of a
        rectangle. Obeyed if the point selected is within this
        rectangle.</dd>
  
        <dt><code>point</code> Directive</dt>
  
        <dd>Takes a single point. The point directive closest to the
        user selected point is obeyed if no other directives are
        satisfied. Note that <code>default</code> will not be
        followed if a <code>point</code> directive is present and
        valid coordinates are given.</dd>
      </dl>
  
  
  <h3>Values</h3>
  
      <p>The values for each of the directives can any of the following:</p>
      
  
      <dl>
        <dt>a URL</dt>
  
        <dd>The URL can be relative or absolute URL. Relative URLs
        can contain '..' syntax and will be resolved relative to the
        <code>base</code> value.<br>
         <code>base</code> itself will not resolved according to the
        current value. A statement <code>base mailto:</code> will
        work properly, though.</dd>
  
        <dt><code>map</code></dt>
  
        <dd>Equivalent to the URL of the imagemap file itself. No
        coordinates are sent with this, so a menu will be generated
        unless ImapMenu is set to 'none'.</dd>
  
        <dt><code>menu</code></dt>
  
        <dd>Synonymous with <code>map</code>.</dd>
  
        <dt><code>referer</code></dt>
  
        <dd>Equivalent to the URL of the referring document. Defaults
        to <code>http://servername/</code> if no Referer: header was
        present.</dd>
  
        <dt><code>nocontent</code></dt>
  
        <dd>Sends a status code of <code>204 No Content</code>,
        telling the client to keep the same page displayed. Valid for
        all but <code>base</code>.</dd>
  
        <dt><code>error</code></dt>
  
        <dd>Fails with a <code>500 Server Error</code>. Valid for all
        but <code>base</code>, but sort of silly for anything but
        <code>default</code>.</dd>
      </dl>
  
  
  <h3>Coordinates</h3>
  
      <dl>
        <dt><code>0,0 200,200</code></dt>
  
        <dd>A coordinate consists of an <code>x</code> and a <code>y</code>
        value separated by a comma. The coordinates are separated
        from each other by whitespace. To accommodate the way Lynx
        handles imagemaps, should a user select the coordinate
        <code>0,0</code>, it is as if no coordinate had been
        selected.</dd>
      </dl>
  
  
  
  <h3>Quoted Text</h3>
  
      <dl>
        <dt><code>"Menu Text"</code></dt>
  
        <dd>After the value or after the coordinates, the line
        optionally may contain text within double quotes. This string
        is used as the text for the link if a menu is
        generated:<br>
         <code>&lt;a HREF="http://foo.com/"&gt;Menu
        text&lt;/a&gt;</code><br>
         If no quoted text is present, the name of the link will be
        used as the text:<br>
         <code>&lt;a
        HREF="http://foo.com/"&gt;http://foo.com&lt;/a&gt;</code><br>
         It is impossible to escape double quotes within this
        text.</dd>
      </dl>
  
  <h2>Example Mapfile</h2>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        #Comments are printed in a 'formatted' or
        'semiformatted' menu.<br>
         #And can contain html tags. &lt;hr&gt;<br>
         base referer<br>
         poly map "Could I have a menu, please?" 0,0 0,10 10,10
        10,0<br>
         rect .. 0,0 77,27 "the directory of the referer"<br>
         circle http://www.inetnebr.com/lincoln/feedback/ 195,0
        305,27<br>
         rect another_file "in same directory as referer" 306,0
        419,27<br>
         point http://www.zyzzyva.com/ 100,100<br>
         point http://www.tripod.com/ 200,200<br>
         rect mailto:nate@tripod.com 100,150 200,0 "Bugs?"<br>
  </code></td></tr></table></blockquote>
  
  <h2>Referencing your mapfile</h2>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        &lt;A HREF="/maps/imagemap1.map"&gt;<br>
         &lt;IMG ISMAP SRC="/images/imagemap1.gif"&gt;<br>
         &lt;/A&gt;
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="ImapBase">ImapBase</a> <a name="imapbase">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Default base for imagemap files</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ImapBase map|referer|<em>URL</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ImapBase http://servername/</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_imap</td></tr></table></td></tr></table>
      <p>The <code class="directive">ImapBase</code> directive sets the default
      <code>base</code> used in the imagemap files. Its value is
      overridden by a <code>base</code> directive within the imagemap
      file. If not present, the <code>base</code> defaults to
      <code>http://servername/</code>.</p>
  <hr/><h2><a name="ImapDefault">ImapDefault</a> <a name="imapdefault">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Default action when an imagemap is called with coordinates
  that are not explicitly mapped</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ImapDefault error|nocontent|map|referer|<em>URL</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ImapDefault nocontent</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_imap</td></tr></table></td></tr></table>
      <p>The <code class="directive">ImapDefault</code> directive sets the default
      <code>default</code> used in the imagemap files. Its value is
      overridden by a <code>default</code> directive within the
      imagemap file. If not present, the <code>default</code> action
      is <code>nocontent</code>, which means that a <code>204 No
      Content</code> is sent to the client. In this case, the client
      should continue to display the original page.</p>
  <hr/><h2><a name="ImapMenu">ImapMenu</a> <a name="imapmenu">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Action if no coordinates are given when calling
  an imagemap</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ImapMenu
      none|formatted|semiformatted|unformatted</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Indexes</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_imap</td></tr></table></td></tr></table>
      <p>The <code class="directive">ImapMenu</code> directive determines the
      action taken if an imagemap file is called without valid
      coordinates.</p>
  
      <dl>
        <dt><code>none</code></dt>
  
        <dd>If ImapMenu is <code>none</code>, no menu is generated,
        and the <code>default</code> action is performed.</dd>
  
        <dt><code>formatted</code></dt>
  
        <dd>A <code>formatted</code> menu is the simplest menu.
        Comments in the imagemap file are ignored. A level one header
        is printed, then an hrule, then the links each on a separate
        line. The menu has a consistent, plain look close to that of
        a directory listing.</dd>
  
        <dt><code>semiformatted</code></dt>
  
        <dd>In the <code>semiformatted</code> menu, comments are
        printed where they occur in the imagemap file. Blank lines
        are turned into HTML breaks. No header or hrule is printed,
        but otherwise the menu is the same as a
        <code>formatted</code> menu.</dd>
  
        <dt><code>unformatted</code></dt>
  
        <dd>Comments are printed, blank lines are ignored. Nothing is
        printed that does not appear in the imagemap file. All breaks
        and headers must be included as comments in the imagemap
        file. This gives you the most flexibility over the appearance
        of your menus, but requires you to treat your map files as
        HTML instead of plaintext.</dd>
      </dl>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_include.html.en
  
  Index: mod_include.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_include- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_include</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Server-parsed html documents (Server Side Includes)</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>include_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
      <p>This module provides a filter which will process files
      before they are sent to the client. The processing is
      controlled by specially formated SGML comments, referred to as
      <em>elements</em>. These elements allow conditional text, the
      inclusion of other files or programs, as well as the setting and
      printing of environment variables.</p>
  
  <h2>Directives</h2><ul><li><a href="#ssiendtag">SSIEndTag</a></li><li><a href="#ssierrormsg">SSIErrorMsg</a></li><li><a href="#ssistarttag">SSIStartTag</a></li><li><a href="#ssitimeformat">SSITimeFormat</a></li><li><a href="#ssiundefinedecho">SSIUndefinedEcho</a></li><li><a href="#xbithack">XBitHack</a></li></ul><p><strong>See also </strong></p><ul><li><a href="core.html#options" class="directive"><code class="directive">Options</code></a></li><li><a href="core.html#setoutputfilter" class="directive"><code class="directive">SetOutputFilter</code></a></li><li><a href="core.html#acceptpathinfo" class="directive"><code class="directive">AcceptPathInfo</code></a></li></ul><h2><a name="enabling">Enabling Server-Side Includes</a></h2>
      
  
      <p>Server Side Includes are implemented by the
      <code>INCLUDES</code> <a href="../filter.html">filter</a>. If
      documents containing server-side include directives are given
      the extension .shtml, the following directives will make Apache
      parse them and assign the resulting document the mime type of
      <code>text/html</code>:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        AddType text/html .shtml<br>
        AddOutputFilter INCLUDES .shtml
      </code></td></tr></table></blockquote>
  
      <p>The following directive must be given for the directories
      containing the shtml files (typically in a
      <code>&lt;Directory&gt;</code> section, but this directive is
      also valid .htaccess files if <code>AllowOverride
      Options</code> is set):</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        Options +Includes
      </code></td></tr></table></blockquote>
  
      <p>For backwards compatibility, the <code>server-parsed</code>
      <a href="../handler.html">handler</a> also activates the
      INCLUDES filter. As well, Apache will activate the INCLUDES
      filter for any document with mime type
      <code>text/x-server-parsed-html</code> or
      <code>text/x-server-parsed-html3</code> (and the resulting
      output will have the mime type <code>text/html</code>).</p>
  
      <p>For more information, see our <a href="../howto/ssi.html">Tutorial on Server Side
      Includes</a>.</p>
  <h2><a name="basic">Basic Elements</a></h2>
      
      <p>The document is parsed as an HTML document, with special
      commands embedded as SGML comments. A command has the syntax: </p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        <code>&lt;!--#</code><em>element attribute=value
        attribute=value ...</em> <code>--&gt;</code>
      </code></td></tr></table></blockquote>
  
      <p>The value will often be enclosed in double quotes; many
      commands only allow a single attribute-value pair. Note that
      the comment terminator (<code>--&gt;</code>) should be preceded
      by whitespace to ensure that it isn't considered part of an SSI
      token. </p>
  
      <p>The allowed elements are:</p>
  
      <dl>
        <dt><strong>config</strong></dt>
  
        <dd>
          This command controls various aspects of the parsing. The
          valid attributes are: 
  
          <dl>
            <dt><strong>errmsg</strong></dt>
  
            <dd>The value is a message that is sent back to the
            client if an error occurs whilst parsing the
            document.</dd>
  
            <dt><strong>sizefmt</strong></dt>
  
            <dd>The value sets the format to be used which displaying
            the size of a file. Valid values are <code>bytes</code>
            for a count in bytes, or <code>abbrev</code> for a count
            in Kb or Mb as appropriate.</dd>
  
            <dt><strong>timefmt</strong></dt>
  
            <dd>The value is a string to be used by the
            <code>strftime(3)</code> library routine when printing
            dates.</dd>
          </dl>
        </dd>
  
        <dt><strong><a name="echo">echo</a></strong></dt>
  
        <dd>
          <p>This command prints one of the <a href="#includevars">include
          variables</a>, defined below. If the variable is unset, it
          is printed as <code>(none)</code>. Any dates printed are
          subject to the currently configured <code>timefmt</code>.</p>
  
          <p>Attributes:</p> 
  
          <dl>
            <dt><strong>var</strong></dt>
  
            <dd>The value is the name of the variable to print.</dd>
  
            <dt><strong>encoding</strong></dt>
  
            <dd>Specifies how Apache should encode special characters
            contained in the variable before outputting them. If set
            to "none", no encoding will be done. If set to "url",
            then URL encoding (also known as %-encoding; this is
            appropriate for use within URLs in links, etc.) will be
            performed. At the start of an <code>echo</code> element,
            the default is set to "entity", resulting in entity
            encoding (which is appropriate in the context of a
            block-level HTML element, eg. a paragraph of text). This
            can be changed by adding an <code>encoding</code>
            attribute, which will remain in effect until the next
            <code>encoding</code> attribute is encountered or the
            element ends, whichever comes first. Note that the
            <code>encoding</code> attribute must <em>precede</em> the
            corresponding <code>var</code> attribute to be effective,
            and that only special characters as defined in the
            ISO-8859-1 character encoding will be encoded. This
            encoding process may not have the desired result if a
            different character encoding is in use. Apache 1.3.12 and
            above; previous versions do no encoding.</dd>
          </dl>
        </dd>
  
        <dt><strong>exec</strong></dt>
  
        <dd>
          The exec command executes a given shell command or CGI
          script. The IncludesNOEXEC <a href="core.html#option" class="directive"><code class="directive">Option</code></a> disables this command
          completely. The valid attributes are: 
  
          <dl>
            <dt><strong>cgi</strong></dt>
  
            <dd>
              The value specifies a (%-encoded) URL relative path to
              the CGI script. If the path does not begin with a (/),
              then it is taken to be relative to the current
              document. The document referenced by this path is
              invoked as a CGI script, even if the server would not
              normally recognize it as such. However, the directory
              containing the script must be enabled for CGI scripts
              (with <a href="mod_alias.html#scriptalias" class="directive"><code class="directive">ScriptAlias</code></a>
              or the ExecCGI <a href="core.html#option" class="directive"><code class="directive">Option</code></a>). 
  
              <p>The CGI script is given the PATH_INFO and query
              string (QUERY_STRING) of the original request from the
              client; these cannot be specified in the URL path. The
              include variables will be available to the script in
              addition to the standard <a href="mod_cgi.html">CGI</a>
              environment.</p>
  
              <p>For example:</p>
  
    <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>&lt;!--#exec cgi="/cgi-bin/example.cgi" --&gt;</code></td></tr></table></blockquote>
  
              <p>If the script returns a Location: header instead of
              output, then this will be translated into an HTML
              anchor.</p>
  
              <p>The <code><a href="#includevirtual">include
              virtual</a></code> element should be
              used in preference to <code>exec cgi</code>. In particular,
              if you need to pass additional arguments to a CGI program,
              using the query string, this cannot be done with <code>exec
              cgi</code>, but can be done with <code>include
              virtual</code>, as shown here:</p>
  
    <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    &lt;!--#include virtual="/cgi-bin/example.cgi?argument=value" --&gt;
    </code></td></tr></table></blockquote>
  
            </dd>
  
            <dt><strong>cmd</strong></dt>
  
            <dd>
            <p>The server will execute the given string using
            <code>/bin/sh</code>. The <a href="#includevars">include variables</a> are available
            to the command, in addition to the usual set of CGI 
            variables.</p>
  
          <p>The use of <code><a href="#includevirtual">#include 
          virtual</a></code> is almost always
          prefered to using either <code>#exec cgi</code> or <code>#exec
          cmd</code>. The former (<code>#include virtual</code>) used the
          standard Apache sub-request mechanism to include files or
          scripts. It is much better tested and maintained.</p>
  
            <p>In addition, on some platforms, like Win32, and on unix
            when using suexec, you cannot pass arguments to a command in 
            an <code>exec</code> directive, or otherwise include spaces in
            the command. Thus, while the following will work under a
            non-suexec configuration on unix, it will not produce the
            desired result under Win32, or when running suexec:</p>
  
     <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     &lt;!--#exec cmd="perl /path/to/perlscript arg1 arg2" --&gt;
     </code></td></tr></table></blockquote>
  
            </dd>
          </dl>
        </dd>
  
        <dt><strong>fsize</strong></dt>
  
        <dd>
          This command prints the size of the specified file, subject
          to the <code>sizefmt</code> format specification.
          Attributes: 
  
          <dl>
            <dt><strong>file</strong></dt>
  
            <dd>The value is a path relative to the directory
            containing the current document being parsed.</dd>
  
            <dt><strong>virtual</strong></dt>
  
            <dd>The value is a (%-encoded) URL-path relative to the
            current document being parsed. If it does not begin with
            a slash (/) then it is taken to be relative to the
            current document.</dd>
          </dl>
        </dd>
  
        <dt><strong>flastmod</strong></dt>
  
        <dd>This command prints the last modification date of the
        specified file, subject to the <code>timefmt</code> format
        specification. The attributes are the same as for the
        <code>fsize</code> command.</dd>
  
        <dt><strong>include</strong></dt>
  
        <dd>
          This command inserts the text of another document or file
          into the parsed file. Any included file is subject to the
          usual access control. If the directory containing the
          parsed file has the <a href="core.html#options">Option</a>
          IncludesNOEXEC set, and the including the document would
          cause a program to be executed, then it will not be
          included; this prevents the execution of CGI scripts.
          Otherwise CGI scripts are invoked as normal using the
          complete URL given in the command, including any query
          string. 
  
          <p>An attribute defines the location of the document; the
          inclusion is done for each attribute given to the include
          command. The valid attributes are:</p>
  
          <dl>
            <dt><strong>file</strong></dt>
  
            <dd>The value is a path relative to the directory
            containing the current document being parsed. It cannot
            contain <code>../</code>, nor can it be an absolute path.
            Therefore, you cannot include files that are outside of the
            document root, or above the current document in the directory
            structure.
            The <code>virtual</code> attribute should always be used
            in preference to this one.</dd>
  
            <dt><strong><a name="includevirtual">virtual</a></strong></dt>
  
           <dd>
            <p>The value is a (%-encoded) URL relative to the
            current document being parsed. The URL cannot contain a
            scheme or hostname, only a path and an optional query
            string. If it does not begin with a slash (/) then it is
            taken to be relative to the current document.</p>
  
            <p>A URL is constructed from the attribute, and the output the
          server would return if the URL were accessed by the client
          is included in the parsed output. Thus included files can
             be nested.</p>
  
             <p>If the specified URL is a CGI program, the program will
             be executed and its output inserted in place of the directive
             in the parsed file. You may include a query string in a CGI
             url:</p>
       
       <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
       &lt;!--#include virtual="/cgi-bin/example.cgi?argument=value" --&gt;
       </code></td></tr></table></blockquote>
             
             <p><code>include virtual</code> should be used in preference
             to <code>exec cgi</code> to include the output of CGI
             programs into an HTML document.</p>
            </dd>
          </dl>
        </dd>
  
        <dt><strong>printenv</strong></dt>
  
        <dd>
        <p>This prints out a listing of all existing variables and
        their values. Starting with Apache 1.3.12, special characters
        are entity encoded (see the <a href="#echo"><code>echo</code></a> element for details)
        before being output. There are no attributes.</p>
  
        <p>For example:</p>
  
        <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        &lt;!--#printenv --&gt;
        </code></td></tr></table></blockquote>
  
        <p>The <strong>printenv</strong> element is available only in
        Apache 1.2 and above.</p>
      </dd>
        <dt><strong>set</strong></dt>
  
        <dd>
          This sets the value of a variable. Attributes: 
  
          <dl>
            <dt><strong>var</strong></dt>
  
            <dd>The name of the variable to set.</dd>
  
            <dt><strong>value</strong></dt>
  
            <dd>The value to give a variable.</dd>
          </dl>
          <p>For example:</p>
          
          <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
          &lt;!--#set var="category" value="help" --&gt;
          </code></td></tr></table></blockquote>
  
        <p>The <strong>set</strong> element is available only in
        Apache 1.2 and above.</p>
        </dd>
      </dl>
  <h2><a name="includevars">Include Variables</a></h2>
      
  
      <p>In addition to the variables in the standard CGI environment,
      these are available for the <code>echo</code> command, for
      <code>if</code> and <code>elif</code>, and to any program
      invoked by the document.</p>
  
      <dl>
        <dt>DATE_GMT</dt>
  
        <dd>The current date in Greenwich Mean Time.</dd>
  
        <dt>DATE_LOCAL</dt>
  
        <dd>The current date in the local time zone.</dd>
  
        <dt>DOCUMENT_NAME</dt>
  
        <dd>The filename (excluding directories) of the document
        requested by the user.</dd>
  
        <dt>DOCUMENT_URI</dt>
  
        <dd>The (%-decoded) URL path of the document requested by the
        user. Note that in the case of nested include files, this is
        <em>not</em> then URL for the current document.</dd>
  
        <dt>LAST_MODIFIED</dt>
  
        <dd>The last modification date of the document requested by
        the user.</dd>
      </dl>
  <h2>Variable Substitution</h2>
      
  
      <p>Variable substitution is done within quoted strings in most
      cases where they may reasonably occur as an argument to an SSI
      directive. This includes the <code>config</code>,
      <code>exec</code>, <code>flastmod</code>, <code>fsize</code>,
      <code>include</code>, <code>echo</code>, and <code>set</code>
      directives, as well
      as the arguments to conditional operators. You can insert a
      literal dollar sign into the string using backslash
      quoting:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;!--#if expr="$a = \$test" --&gt;
  </code></td></tr></table></blockquote>
  
      <p>If a variable reference needs to be substituted in the
      middle of a character sequence that might otherwise be
      considered a valid identifier in its own right, it can be
      disambiguated by enclosing the reference in braces,
      <em>a la</em> shell substitution:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" --&gt;
  </code></td></tr></table></blockquote>
  
      <p>This will result in the <code>Zed</code> variable being set
      to "<code>X_Y</code>" if <code>REMOTE_HOST</code> is
      "<code>X</code>" and <code>REQUEST_METHOD</code> is
      "<code>Y</code>".</p>
  
      <p>EXAMPLE: the below example will print "in foo" if the
      DOCUMENT_URI is /foo/file.html, "in bar" if it is
      /bar/file.html and "in neither" otherwise:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;!--#if expr="\"$DOCUMENT_URI\" = \"/foo/file.html\"" --&gt;<br>
      in foo<br>
      &lt;!--#elif expr="\"$DOCUMENT_URI\" = \"/bar/file.html\"" --&gt;<br>
      in bar<br>
      &lt;!--#else --&gt;<br>
      in neither<br>
      &lt;!--#endif --&gt;
  </code></td></tr></table></blockquote>
  <h2><a name="flowctrl">Flow Control Elements</a></h2>
      
  
      <p>These are available in Apache 1.2 and above. The basic flow
      control elements are:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;!--#if expr="<em>test_condition</em>" --&gt;<br>
      &lt;!--#elif expr="<em>test_condition</em>" --&gt;<br>
      &lt;!--#else --&gt;<br>
      &lt;!--#endif --&gt;
  </code></td></tr></table></blockquote>
  
      <p>The <strong><code>if</code></strong> element works like an
      if statement in a programming language. The test condition is
      evaluated and if the result is true, then the text until the
      next <strong><code>elif</code></strong>,
      <strong><code>else</code></strong>. or
      <strong><code>endif</code></strong> element is included in the
      output stream.</p>
  
      <p>The <strong><code>elif</code></strong> or
      <strong><code>else</code></strong> statements are be used the
      put text into the output stream if the original test_condition
      was false. These elements are optional.</p>
  
      <p>The <strong><code>endif</code></strong> element ends the
      <strong><code>if</code></strong> element and is required.</p>
  
      <p><em>test_condition</em> is one of the following:</p>
  
      <dl>
        <dt><em>string</em></dt>
  
        <dd>true if <em>string</em> is not empty</dd>
  
        <dt><em>string1</em> = <em>string2</em><br>
         <em>string1</em> != <em>string2</em><br>
         <em>string1</em> &lt; <em>string2</em><br>
         <em>string1</em> &lt;= <em>string2</em><br>
         <em>string1</em> &gt; <em>string2</em><br>
         <em>string1</em> &gt;= <em>string2</em></dt>
  
        <dd>Compare string1 with string 2. If string2 has the form
        <em>/string/</em> then it is compared as a regular
        expression. Regular expressions have the same syntax as those
        found in the Unix <code>egrep</code> command.</dd>
  
        <dt>( <em>test_condition</em> )</dt>
  
        <dd>true if <em>test_condition</em> is true</dd>
  
        <dt>! <em>test_condition</em></dt>
  
        <dd>true if <em>test_condition</em> is false</dd>
  
        <dt><em>test_condition1</em> &amp;&amp;
        <em>test_condition2</em></dt>
  
        <dd>true if both <em>test_condition1</em> and
        <em>test_condition2</em> are true</dd>
  
        <dt><em>test_condition1</em> || <em>test_condition2</em></dt>
  
        <dd>true if either <em>test_condition1</em> or
        <em>test_condition2</em> is true</dd>
      </dl>
  
      <p>"<em>=</em>" and "<em>!=</em>" bind more tightly than
      "<em>&amp;&amp;</em>" and "<em>||</em>". "<em>!</em>" binds
      most tightly. Thus, the following are equivalent:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;!--#if expr="$a = test1 &amp;&amp; $b = test2" --&gt;<br>
      &lt;!--#if expr="($a = test1) &amp;&amp; ($b = test2)" --&gt;
  </code></td></tr></table></blockquote>
  
      <p>Anything that's not recognized as a variable or an operator
      is treated as a string. Strings can also be quoted:
      <em>'string'</em>. Unquoted strings can't contain whitespace
      (blanks and tabs) because it is used to separate tokens such as
      variables. If multiple strings are found in a row, they are
      concatenated using blanks. So,</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      <pre><em>string1    string2</em>  results in <em>string1 string2</em></pre>
      <pre><em>'string1    string2'</em> results in <em>string1    string2</em></pre>
  </code></td></tr></table></blockquote>
  
  <h2>Using Server Side Includes for ErrorDocuments</h2>
      
  
      <p>There is <a href="../misc/custom_errordocs.html">a document</a>
      which describes how to use the features of mod_include to offer
      internationalized customized server error documents.</p>
  
  <h2>PATH_INFO with Server Side Includes</h2>
  
      <p>Files processed for server-side includes no longer accept
      requests with PATH_INFO (trailing pathname information) by
      default.  You can use the <a href="core.html#acceptpathinfo" class="directive"><code class="directive">AcceptPathInfo</code></a> directive to
      configure the server to accept requests with PATH_INFO.</p>
  
  <hr/><h2><a name="SSIEndTag">SSIEndTag</a> <a name="ssiendtag">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Changes the string that mod_include looks for to end an
  include command.</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSIEndTag <em>tag</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSIEndTag "--&gt;"</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_include</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in version 2.0.30 and later.
  </td></tr></table></td></tr></table>
      <p>This directive changes the string that mod_include looks for 
      to mark the end of a include command.</p>
  
  <p><strong>See also </strong></p><ul><li><code class="directive">SSIStartTag</code></li></ul><hr/><h2><a name="SSIErrorMsg">SSIErrorMsg</a> <a name="ssierrormsg">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Changes the error message displayed when there is an error</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSIErrorMsg <em>message</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSIErrorMsg 
  "[an error occurred while processing this directive]"</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_include</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in version 2.0.30 and later.</td></tr></table></td></tr></table>
      <p>The SSIErrorMsg directive changes the error message displayed
      when mod_include encounters an error. For production servers you
      may consider changing the default error message to
      <code>"&lt;!-- Error --&gt;"</code> so that the message
      is not presented to the user.
      </p>
      <p>This directive has the same effect as the <code>&lt;!--#config
      errmsg=<em>message</em> --&gt;</code> element.</p>
  
  <hr/><h2><a name="SSIStartTag">SSIStartTag</a> <a name="ssistarttag">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Changes the string that mod_include looks for to start an
  include element</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSIStartTag "&lt;!--"</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_include</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in version 2.0.30 and later.</td></tr></table></td></tr></table>
  
      <p>This directive changes the string that mod_include looks for 
      to mark an include element to process.</p>
  
      <p>You may want to use this option if have 2 servers parsing the
      output of a file each processing different commands (possibly at
      different times).</p> 
  
  <p><strong>See also </strong></p><ul><li><code class="directive">SSIEndTag</code></li></ul><hr/><h2><a name="SSITimeFormat">SSITimeFormat</a> <a name="ssitimeformat">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configures the format in which date strings are 
  displayed</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSITimeFormat <em>formatstring</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z"</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_include</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in version 2.0.30 and later.</td></tr></table></td></tr></table>
  <p>This directive changes the format in which date strings are displayed 
      when echoing DATE environment variables.  The <em>formatstring</em>
      is as in strftime(3) from the C standard library.</p>
  
      <p>This directive has the same effect as the <code>&lt;!--#config
      timefmt=<em>formatstring</em> --&gt;</code> element.</p>
  <hr/><h2><a name="SSIUndefinedEcho">SSIUndefinedEcho</a> <a name="ssiundefinedecho">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Changes the string that mod_include displays when
  a variable isn't set.</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSIUndefinedEcho <em>tag</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSIUndefinedEcho "&lt;!-- undef --&gt;"</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_include</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in version 2.0.34 and later.
  </td></tr></table></td></tr></table>
      <p>This directive changes the string that mod_include displays
      when a variable is not set and "echoed".</p>
  <hr/><h2><a name="XBitHack">XBitHack</a> <a name="xbithack">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Parse SSI directives in files with the execute 
  bit set</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>XBitHack on|off|full</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>XBitHack off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Options</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_include</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td/></tr></table></td></tr></table>
      <p>The XBitHack directives controls the parsing of ordinary
      html documents. This directive only affects files associated
      with the MIME type <code>text/html</code>. XBitHack can take on
      the following values:</p>
  
      <dl>
        <dt>off</dt>
  
        <dd>No special treatment of executable files.</dd>
  
        <dt>on</dt>
  
        <dd>Any text/html file that has the user-execute bit set will 
        be treated as a server-parsed html document.</dd>
  
        <dt>full</dt>
  
        <dd>
          As for <code>on</code> but also test the group-execute bit.
          If it is set, then set the Last-modified date of the
          returned file to be the last modified time of the file. If
          it is not set, then no last-modified date is sent. Setting
          this bit allows clients and proxies to cache the result of
          the request. 
  
          <blockquote><table><tr><td bgcolor="#e0e5f5"><strong>Note:</strong> you would not want to use the full
          option, unless you assure the group-execute bit is unset for
          every SSI script which might <code>#include</code> a CGI 
          or otherwise produces different output on each hit (or could 
          potentially change on subsequent requests).</td></tr></table></blockquote>
        </dd>
      </dl>
  
      <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_info.html.en
  
  Index: mod_info.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_info- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_info</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides a comprehensive overview of the server
  configuration</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>info_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
      <p>To configure <code><a href="mod_info.html">mod_info</a></code>, add the following to your
      <code>httpd.conf</code> file.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  &lt;Location /server-info&gt;<br>
  SetHandler server-info<br>
  &lt;/Location&gt;<br>
  </code></td></tr></table></blockquote>
  
      <p>You may wish to add a 
      <a href="core.html#<limit>" class="directive"><code class="directive">&lt;Limit&gt;</code></a> 
      clause inside the 
      <a href="core.html#<location>" class="directive"><code class="directive">&lt;location&gt;</code></a>
      directive to limit access to your server configuration 
      information.</p>
  
      <p>Once configured, the server information is obtained by
      accessing <code>http://your.host.dom/server-info</code></p>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5">
        Note that the configuration files are read by the
        module at run-time, and therefore the display may
        <em>not</em> reflect the running server's active
        configuration if the files have been changed since the server
        was last reloaded. Also, the configuration files must be
        readable by the user as which the server is running (see the
        <a href="mpm_common.html#user" class="directive"><code class="directive">User</code></a> directive), or
        else the directive settings will not be listed.
  
        <p>It should also be noted that if
        <code><a href="mod_info.html">mod_info</a></code> is compiled into the server, its
        handler capability is available in <em>all</em> configuration
        files, including <em>per</em>-directory files (<em>e.g.</em>,
        <code>.htaccess</code>). This may have security-related
        ramifications for your site.</p>
      </td></tr></table></blockquote>
  <h2>Directives</h2><ul><li><a href="#addmoduleinfo">AddModuleInfo</a></li></ul><hr/><h2><a name="AddModuleInfo">AddModuleInfo</a> <a name="addmoduleinfo">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Allows additional information to be added to the module
  information displayed by the server-info handler</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddModuleInfo <em>module-name string</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual
  host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_info</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Apache 1.3 and above</td></tr></table></td></tr></table>
      <p>This allows the content of <em>string</em> to be shown as
      HTML interpreted, <strong>Additional Information</strong> for
      the module <em>module-name</em>. Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  AddModuleInfo mod_auth.c 'See &lt;A HREF="http://www.apache.org/docs/mod/mod_auth.html"&gt;http://www.apache.org/docs/mod/mod_auth.html&lt;/A&gt;'
  </code></td></tr></table></blockquote>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_isapi.html.en
  
  Index: mod_isapi.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_isapi- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_isapi</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>ISAPI Extensions within Apache for Windows</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>isapi_module</td></tr><tr><td align="left" valign="top"><a href="module-dict.html#Compatibility" class="help">Compatibility:</a></td><td><compatibility>Win32 only</compatibility></td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module implements the Internet Server extension API. It
      allows Internet Server extensions (<em>e.g.</em> ISAPI .dll
      modules) to be served by Apache for Windows, subject to the
      noted restrictions.</p>
  
      <p>ISAPI extension modules (.dll files) are written by third
      parties. The Apache Group does not author these modules, so we
      provide no support for them. Please contact the ISAPI's author
      directly if you are experiencing problems running their ISAPI
      extention. <strong>Please <em>do not</em> post such problems to
      Apache's lists or bug reporting pages.</strong></p>
  <h2>Directives</h2><ul><li><a href="#isapiappendlogtoerrors">ISAPIAppendLogToErrors</a></li><li><a href="#isapiappendlogtoquery">ISAPIAppendLogToQuery</a></li><li><a href="#isapifilechache">ISAPIFileChache</a></li><li><a href="#isapilognotsupported">ISAPILogNotSupported</a></li><li><a href="#isapireadaheadbuffer">ISAPIReadAheadBuffer</a></li></ul><h2>Usage</h2> <p>In the server configuration file, use
  the <a href="mod_mime.html#addhandler" class="directive"><code class="directive">AddHandler</code></a> directive to
  associate ISAPI files with the <code>isapi-isa</code> handler, and map
  it to the with their file extensions. To enable any .dll file to be
  processed as an ISAPI extention, edit the httpd.conf file and add the
  following line:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AddHandler isapi-isa .dll
  </code></td></tr></table></blockquote>
  
      <p>There is no capability within the Apache server to leave a
      requested module loaded. However, you may preload and keep a
      specific module loaded by using the following syntax in your
      httpd.conf:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      ISAPICacheFile c:/WebWork/Scripts/ISAPI/mytest.dll
  </code></td></tr></table></blockquote>
  
      <p>Whether or not you have preloaded an ISAPI extension, all
      ISAPI extensions are governed by the same permissions and
      restrictions as CGI scripts. That is, <code>Options
      ExecCGI</code> must be set for the directory that contains the
      ISAPI .dll file.</p>
  
      <p>Review the <a href="#notes">Additional Notes</a> and the <a href="#journal">Programmer's Journal</a> for additional details
      and clarification of the specific ISAPI support offered by
      mod_isapi.</p>
  <h2><a name="notes">Additional Notes</a></h2>
  
      <p>Apache's ISAPI implementation conforms to all of the ISAPI
      2.0 specification, except for some "Microsoft-specific"
      extensions dealing with asynchronous I/O. Apache's I/O model
      does not allow asynchronous reading and writing in a manner
      that the ISAPI could access. If an ISA tries to access
      unsupported features, including async I/O, a message is placed
      in the error log to help with debugging. Since these messages
      can become a flood, the directive <code>ISAPILogNotSupported
      Off</code> exists to quiet this noise.</p>
  
      <p>Some servers, like Microsoft IIS, load the ISAPI extension
      into the server and keep it loaded until memory usage is too
      high, or unless configuration options are specified. Apache
      currently loads and unloads the ISAPI extension each time it is
      requested, unless the ISAPICacheFile directive is specified.
      This is inefficient, but Apache's memory model makes this the
      most effective method. Many ISAPI modules are subtly
      incompatible with the Apache server, and unloading these
      modules helps to ensure the stability of the server.</p>
  
      <p>Also, remember that while Apache supports ISAPI Extensions,
      it <strong>does not support ISAPI Filters.</strong> Support for
      filters may be added at a later date, but no support is planned
      at this time.</p>
  <h2><a name="journal">Programmer's Journal</a></h2>
  
      <p>If you are programming Apache 2.0 <code><a href="mod_isapi.html">mod_isapi</a></code>
      modules, you must limit your calls to ServerSupportFunction to the
      following directives:</p>
  
      <dl>
        <dt>HSE_REQ_SEND_URL_REDIRECT_RESP</dt>
  
        <dd>Redirect the user to another location.<br>
         This must be a fully qualified URL (e.g.
        http://server/location).</dd>
  
        <dt>HSE_REQ_SEND_URL</dt>
  
        <dd>Redirect the user to another location.<br>
         This cannot be a fully qualified URL, you are not allowed to
        pass the protocol or a server name (e.g. simply
        /location).<br>
         This redirection is handled by the server, not the
        browser.<br>
         <strong>Warning:</strong> in their recent documentation,
        Microsoft appears to have abandoned the distinction between
        the two HSE_REQ_SEND_URL functions. Apache continues to treat
        them as two distinct functions with different requirements
        and behaviors.</dd>
  
        <dt>HSE_REQ_SEND_RESPONSE_HEADER</dt>
  
        <dd>Apache accepts a response body following the header if it
        follows the blank line (two consecutive newlines) in the
        headers string argument. This body cannot contain NULLs,
        since the headers argument is NULL terminated.</dd>
  
        <dt>HSE_REQ_DONE_WITH_SESSION</dt>
  
        <dd>Apache considers this a no-op, since the session will be
        finished when the ISAPI returns from processing.</dd>
  
        <dt>HSE_REQ_MAP_URL_TO_PATH</dt>
  
        <dd>Apache will translate a virtual name to a physical
        name.</dd>
  
        <dt>HSE_APPEND_LOG_PARAMETER</dt>
  
        <dd>
          This logged message may be captured in any of the following
          logs: 
  
          <ul>
            <li>in the \"%{isapi-parameter}n\" component in a
            CustomLog directive</li>
  
            <li>in the %q log component with the
            ISAPIAppendLogToQuery On directive</li>
  
            <li>in the error log with the ISAPIAppendLogToErrors On
            directive</li>
          </ul>
          The first option, the %{isapi-parameter}n component, is
          always available and prefered.
        </dd>
  
        <dt>HSE_REQ_IS_KEEP_CONN</dt>
  
        <dd>Will return the negotiated Keep-Alive status.</dd>
  
        <dt>HSE_REQ_SEND_RESPONSE_HEADER_EX</dt>
  
        <dd>Will behave as documented, although the fKeepConn flag is
        ignored.</dd>
  
        <dt>HSE_REQ_IS_CONNECTED</dt>
  
        <dd>Will report false if the request has been aborted.</dd>
      </dl>
  
      <p>Apache returns FALSE to any unsupported call to
      ServerSupportFunction, and sets the GetLastError value to
      ERROR_INVALID_PARAMETER.</p>
  
      <p>ReadClient retrieves the request body exceeding the initial
      buffer (defined by ISAPIReadAheadBuffer). Based on the
      ISAPIReadAheadBuffer setting (number of bytes to buffer prior
      to calling the ISAPI handler) shorter requests are sent
      complete to the extension when it is invoked. If the request is
      longer, the ISAPI extension must use ReadClient to retrieve the
      remaining request body.</p>
  
      <p>WriteClient is supported, but only with the HSE_IO_SYNC flag
      or no option flag (value of 0). Any other WriteClient request
      will be rejected with a return value of FALSE, and a
      GetLastError value of ERROR_INVALID_PARAMETER.</p>
  
      <p>GetServerVariable is supported, although extended server
      variables do not exist (as defined by other servers.) All the
      usual Apache CGI environment variables are available from
      GetServerVariable, as well as the ALL_HTTP and ALL_RAW
      values.</p>
  
      <p>Apache 2.0 <code><a href="mod_isapi.html">mod_isapi</a></code> supports additional
      features introduced in later versions of the ISAPI specification,
      as well as limited emulation of async I/O and the TransmitFile
      semantics.  Apache also supports preloading ISAPI .dlls for
      performance, neither of which were not available under Apache 1.3
      mod_isapi.</p>
  <hr/><h2><a name="ISAPIAppendLogToErrors">ISAPIAppendLogToErrors</a> <a name="isapiappendlogtoerrors">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Record HSE_APPEND_LOG_PARAMETER requests from ISAPI
  extensions to the error log</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ISAPIAppendLogToErrors on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ISAPIAppendLogToErrors off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_isapi</td></tr></table></td></tr></table>
      <p>Record HSE_APPEND_LOG_PARAMETER requests from ISAPI
      extensions to the server error log.</p>
  <hr/><h2><a name="ISAPIAppendLogToQuery">ISAPIAppendLogToQuery</a> <a name="isapiappendlogtoquery">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Record HSE_APPEND_LOG_PARAMETER requests from ISAPI
  extensions to the query field</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ISAPIAppendLogToQuery on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ISAPIAppendLogToQuery off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_isapi</td></tr></table></td></tr></table>
      <p>Record HSE_APPEND_LOG_PARAMETER requests from ISAPI
      extensions to the query field (appended to the CustomLog %q
      component).</p>
  <hr/><h2><a name="ISAPIFileChache">ISAPIFileChache</a> <a name="isapifilechache">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>ISAPI .dll files to be loaded at startup</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ISAPIFileCache <em>file-path</em> [<em>file-path</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_isapi</td></tr></table></td></tr></table>
      <p>Specifies a space-separated list of file names to be loaded
      when the Apache server is launched, and remain loaded until the
      server is shut down. This directive may be repeated for every
      ISAPI .dll file desired. The full path name of each file should
      be specified.</p>
  <hr/><h2><a name="ISAPILogNotSupported">ISAPILogNotSupported</a> <a name="isapilognotsupported">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Log unsupported feature requests from ISAPI
  extensions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ISAPILogNotSupported on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ISAPILogNotSupported on</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_isapi</td></tr></table></td></tr></table>
      <p>Logs all requests for unsupported features from ISAPI
      extensions in the server error log. While this should be turned
      off once all desired ISAPI modules are functioning, it defaults
      to on to help administrators track down problems.</p>
  <hr/><h2><a name="ISAPIReadAheadBuffer">ISAPIReadAheadBuffer</a> <a name="isapireadaheadbuffer">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Size of the Read Ahead Buffer sent to ISAPI 
  extensions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ISAPIReadAheadBuffer <em>size</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ISAPIReadAheadBuffer 49152</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_isapi</td></tr></table></td></tr></table>
      <p>Defines the maximum size of the Read Ahead Buffer sent to
      ISAPI extensions when they are initially invoked. All remaining
      data must be retrieved using the ReadClient callback; some
      ISAPI extensions may not support the ReadClient function. Refer
      questions to the ISAPI extension's author.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_log_config.html.en
  
  Index: mod_log_config.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_log_config- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_log_config</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Logging of the requests made to the server</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>log_config_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
      <p>This module provides for flexible logging of client
      requests. Logs are written in a customizable format, and may be
      written directly to a file, or to an external program.
      Conditional logging is provided so that individual requests may
      be included or excluded from the logs based on characteristics
      of the request.</p>
  
      <p>Three directives are provided by this module:
      <code>TransferLog</code> to create a log file,
      <code>LogFormat</code> to set a custom format, and
      <code>CustomLog</code> to define a log file and format in one
      step. The <code>TransferLog</code> and <code>CustomLog</code>
      directives can be used multiple times in each server to cause
      each request to be logged to multiple files.</p>
  <h2>Directives</h2><ul><li><a href="#cookielog">CookieLog</a></li><li><a href="#customlog">CustomLog</a></li><li><a href="#logformat">LogFormat</a></li><li><a href="#transferlog">TransferLog</a></li></ul><p><strong>See also </strong></p><ul><li><a href="../logs.html">Apache Log Files</a></li></ul><h2><a name="formats">Custom Log Formats</a></h2>
  
  
      <p>The format argument to the <code>LogFormat</code> and
      <code>CustomLog</code> directives is a string. This string is
      logged to the log file for each request. It can contain literal
      characters copied into the log files and the c-type control
      characters "\n" and "\t" to represent new-lines and tabs.
      Literal quotes and back-slashes should be escaped with
      back-slashes.</p>
  
      <p>The characteristics of the request itself are logged by
      placing "%" directives in the format string, which are replaced
      in the log file by the values as follows:</p>
  
  <table>
  
  <tr><td>%...a:</td>          
  <td>Remote IP-address</td></tr>
  
  <tr><td>%...A:</td>          
  <td>Local IP-address</td></tr>
  
  <tr><td>%...B:</td>          
  <td>Bytes sent, excluding HTTP headers.</td></tr>
  
  <tr><td>%...b:</td>          
  <td>Bytes sent, excluding HTTP headers. In CLF format
  i.e. a '-' rather than a 0 when no bytes are sent.</td></tr>
  
  <tr><td>%...{Foobar}C:</td>  
  <td>The contents of cookie "Foobar" in the request sent to the server.</td></tr>
  
  <tr><td>%...D:</td>          
  <td>The time taken to serve the request, in microseconds.</td></tr>
  
  <tr><td>%...{FOOBAR}e:</td>  
  <td>The contents of the environment variable FOOBAR</td></tr>
  
  <tr><td>%...f:</td>          
  <td>Filename</td></tr>
  
  <tr><td>%...h:</td>          
  <td>Remote host</td></tr>
  
  <tr><td>%...H</td>          
  <td>The request protocol</td></tr>
  
  <tr><td>%...{Foobar}i:</td>  
  <td>The contents of Foobar: header line(s) in the request
  sent to the server.</td></tr>
  
  <tr><td>%...l:</td>          
  <td>Remote logname (from identd, if supplied)</td></tr>
  
  <tr><td>%...m:</td>          
  <td>The request method</td></tr>
  
  <tr><td>%...{Foobar}n:</td>  
  <td>The contents of note "Foobar" from another module.</td></tr>
  
  <tr><td>%...{Foobar}o:</td>  
  <td>The contents of Foobar: header line(s) in the reply.</td></tr>
  
  <tr><td>%...p:</td>          
  <td>The canonical Port of the server serving the request</td></tr>
  
  <tr><td>%...P:</td>          
  <td>The process ID of the child that serviced the request.</td></tr>
  
  <tr><td>%...q:</td>          
  <td>The query string (prepended with a ? if a query string exists,
  otherwise an empty string)</td></tr>
  
  <tr><td>%...r:</td>          
  <td>First line of request</td></tr>
  
  <tr><td>%...s:</td>          
  <td>Status.  For requests that got internally redirected, this is
  the status of the *original* request --- %...&gt;s for the last.</td></tr>
  
  <tr><td>%...t:</td>          
  <td>Time, in common log format time format (standard english format)</td></tr>
  
  <tr><td>%...{format}t:</td>  
  <td>The time, in the form given by format, which should
  be in strftime(3) format. (potentially localized)</td></tr>
  
  <tr><td>%...T:</td>          
  <td>The time taken to serve the request, in seconds.</td></tr>
  
  <tr><td>%...u:</td>          
  <td>Remote user (from auth; may be bogus if return status (%s) is 401)</td></tr>
  
  <tr><td>%...U:</td>          
  <td>The URL path requested, not including any query string.</td></tr>
  
  <tr><td>%...v:</td>          
  <td>The canonical ServerName of the server serving the request.</td></tr>
  
  <tr><td>%...V:</td>          
  <td>The server name according to the UseCanonicalName setting.</td></tr>
  
  <tr><td>%...X:</td>          
  <td>Connection status when response is completed.
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  'X' = connection aborted before the response completed.<br>
  '+' = connection may be kept alive after the response is sent.<br>
  '-' = connection will be closed after the response is sent.
  </code></td></tr></table></blockquote>
  <blockquote><table><tr><td bgcolor="#e0e5f5">(This directive was %...c in late versions of Apache 1.3, but
  this conflicted with the historical ssl %...{var}c syntax.)</td></tr></table></blockquote>
  </td></tr>
  
  </table>
  
      <p>The "..." can be nothing at all (<em>e.g.</em>, <code>"%h %u
      %r %s %b"</code>), or it can indicate conditions for inclusion
      of the item (which will cause it to be replaced with "-" if the
      condition is not met). The forms of condition are a list of
      HTTP status codes, which may or may not be preceded by "!".
      Thus, "%400,501{User-agent}i" logs User-agent: on 400 errors
      and 501 errors (Bad Request, Not Implemented) only;
      "%!200,304,302{Referer}i" logs Referer: on all requests which
      did <strong>not</strong> return some sort of normal status.</p>
  
      <p>Note that there is no escaping performed on the strings from
      %...r, %...i and %...o. This is mainly to comply with the
      requirements of the Common Log Format. This implies that
      clients can insert control characters into the log, so care
      should be taken when dealing with raw log files.</p>
  
      <p>Some commonly used log format strings are:</p>
  
      <dl>
        <dt>Common Log Format (CLF)</dt>
  
        <dd><code>"%h %l %u %t \"%r\" %&gt;s %b"</code></dd>
  
        <dt>Common Log Format with Virtual Host</dt>
  
        <dd><code>"%v %h %l %u %t \"%r\" %&gt;s %b"</code></dd>
  
        <dt>NCSA extended/combined log format</dt>
  
        <dd><code>"%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
        \"%{User-agent}i\""</code></dd>
  
        <dt>Referer log format</dt>
  
        <dd><code>"%{Referer}i -&gt; %U"</code></dd>
  
        <dt>Agent (Browser) log format</dt>
  
        <dd><code>"%{User-agent}i"</code></dd>
      </dl>
  
      <p>Note that the canonical <a href="core.html#servername">ServerName</a> and <a href="mpm_common.html#listen">Listen</a> of the server serving the
      request are used for <code>%v</code> and <code>%p</code>
      respectively. This happens regardless of the <a href="core.html#usecanonicalname">UseCanonicalName</a> setting
      because otherwise log analysis programs would have to duplicate
      the entire vhost matching algorithm in order to decide what
      host really served the request.</p>
      <h2>Security Considerations</h2>
  
      
  
      <p>See the <a href="../misc/security_tips.html#serverroot">security tips</a>
      document for details on why your security could be compromised
      if the directory where logfiles are stored is writable by
      anyone other than the user that starts the server.</p>
  
      <hr/><h2><a name="CookieLog">CookieLog</a> <a name="cookielog">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets filename for the logging of cookies</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CookieLog <em>filename</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual
  host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_log_config</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Only available in Apache 1.2 and above</td></tr></table></td></tr></table>
  
      <p>The <code class="directive">CookieLog</code> directive sets the 
      filename for logging of cookies. The filename is relative to the
      <a href="core.html#serverroot" class="directive"><code class="directive">serverroot</code></a>. This directive is
      included only for compatibility with <code><a href="mod_cookies.html">mod_cookies</a></code>,
      and is deprecated.</p>
  <hr/><h2><a name="CustomLog">CustomLog</a> <a name="customlog">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets filename and format of log file</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CustomLog 
      <em>file</em>|<em>pipe</em> <em>format</em>|<em>nickname</em>
      [env=[!]<em>environment-variable</em>]</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual
  host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_log_config</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Nickname only available in Apache 1.3 or later.
  Conditional logging available in 1.3.5 or later.</td></tr></table></td></tr></table>
      <p>The <code class="directive">CustomLog</code> directive is used to
      log requests to the server. A log format is specified, and the
      logging can optionally be made conditional on request
      characteristics using environment variables.</p>
  
      <p>The first argument, which specifies the location to which
      the logs will be written, can take on one of the following two
      types of values:</p>
  
      <dl>
        <dt><em>file</em></dt>
  
        <dd>A filename, relative to the <a href="core.html#serverroot">ServerRoot</a>.</dd>
  
        <dt><em>pipe</em></dt>
  
        <dd>The pipe character "<code>|</code>", followed by the path
        to a program to receive the log information on its standard
        input. <strong>Security:</strong> if a program is used, then
        it will be run under the user who started httpd. This will be
        root if the server was started by root; be sure that the
        program is secure.</dd>
      </dl>
  
      <p>The second argument specifies what will be written to the
      log file. It can specify either a <em>nickname</em> defined by
      a previous <a href="#logformat">LogFormat</a> directive, or it
      can be an explicit <em>format</em> string as described in the
      <a href="#formats">log formats</a> section.</p>
  
      <p>For example, the following two sets of directives have
      exactly the same effect:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
       # CustomLog with format nickname<br>
       LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br>
       CustomLog logs/access_log common<br>
  <br>
       # CustomLog with explicit format string<br>
       CustomLog logs/access_log "%h %l %u %t \"%r\" %&gt;s %b"<br>
  </code></td></tr></table></blockquote>
  
      <p>The third argument is optional and allows the decision on
      whether or not to log a particular request to be based on the
      presence or absence of a particular variable in the server
      environment. If the specified <a href="../env.html">environment
      variable</a> is set for the request (or is not set, in the case
      of a '<code>env=!<em>name</em></code>' clause), then the
      request will be logged.</p>
  
      <p>Environment variables can be set on a <em>per</em>-request
      basis using the <code><a href="mod_setenvif.html">mod_setenvif</a></code>
      and/or <code><a href="mod_rewrite.html">mod_rewrite</a></code> modules. For
      example, if you don't want to record requests for all GIF
      images on your server in a separate logfile but not your main
      log, you can use:</p>
      
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      SetEnvIf Request_URI \.gif$ gif-image<br>
      CustomLog gif-requests.log common env=gif-image<br>
      CustomLog nongif-requests.log common env=!gif-image
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="LogFormat">LogFormat</a> <a name="logformat">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Describes a format for use in a log file</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LogFormat
      <em>format</em>|<em>nickname</em> [<em>nickname</em>]</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual
  host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_log_config</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Nickname only available in Apache 1.3 or later.
  </td></tr></table></td></tr></table>
      <p>This directive specifies the format of the access log
      file.</p>
  
      <p>The <code class="directive">LogFormat</code> directive can take one of two
      forms. In the first form, where only one argument is specified,
      this directive sets the log format which will be used by logs
      specified in subsequent <code class="directive">TransferLog</code>
      directives. The single argument can specify an explicit
      <em>format</em> as discussed in <a href="#formats">custom log
      formats</a> section above. Alternatively, it can use a
      <em>nickname</em> to refer to a log format defined in a
      previous <code class="directive">LogFormat</code> directive as described
      below.</p>
  
      <p>The second form of the <code class="directive">LogFormat</code> 
      directive associates an explicit <em>format</em> with a
      <em>nickname</em>. This <em>nickname</em> can then be used in
      subsequent <code class="directive">LogFormat</code> or
      <code class="directive">CustomLog</code> directives rather than
      repeating the entire format string. A
      <code class="directive">LogFormat</code>
      directive which defines a nickname <strong>does nothing
      else</strong> -- that is, it <em>only</em> defines the
      nickname, it doesn't actually apply the format and make it the
      default. Therefore, it will not affect subsequent
      <code class="directive">TransferLog</code> directives.</p>
  
      <p>For example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>LogFormat "%v %h %l %u %t \"%r\" %&gt;s %b"
      vhost_common</code></td></tr></table></blockquote>
  
  <hr/><h2><a name="TransferLog">TransferLog</a> <a name="transferlog">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Specifly location of a log file</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>TransferLog <em>file</em>|<em>pipe</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual
  host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_log_config</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td/></tr></table></td></tr></table>
  
      <p>This directive has exactly the same arguments and effect as
      the <code class="directive">CustomLog</code> directive, with the
      exception that it does not allow the log format to be specified
      explicitly or for conditional logging of requests. Instead, the
      log format is determined by the most recently specified
      specified <code class="directive">LogFormat</code> directive (which
      does not define a nickname). Common Log Format is used if no
      other format has been specified.</p>
  
      <p>Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-agent}i\""<br>
     TransferLog logs/access_log
  </code></td></tr></table></blockquote>
  
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_mime.html.en
  
  Index: mod_mime.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_mime- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_mime</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Associates the requested filename's extensions
      with the file's behavior (handlers and filters)
      and content (mime-type, language, character set and
      encoding)</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>mime_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module is used to associate various bits of "meta
      information" with files by their filename extensions. This
      information relates the filename of the document to it's
      mime-type, language, character set and encoding. This
      information is sent to the browser, and participates in content
      negotiation, so the user's preferences are respected when
      choosing one of several possible files to serve. See
      <code><a href="mod_negotiation.html">mod_negotiation</a></code> for more information
      about content negotiation. </p>
  
      <p>The directives <a href="#addcharset" class="directive"><code class="directive">AddCharset</code></a>, <a href="#addencoding" class="directive"><code class="directive">AddEncoding</code></a>, <a href="#addlanguage" class="directive"><code class="directive">AddLanguage</code></a> and <a href="#addtype" class="directive"><code class="directive">AddType</code></a> are all used to map file
      extensions onto the meta-information for that file. Respectively
      they set the character set, content-encoding, content-language,
      and MIME-type (content-type) of documents.  The directive <a href="#typesconfig" class="directive"><code class="directive">TypesConfig</code></a> is used to specify a
      file which also maps extensions onto MIME types. </p>
  
      <p>In addition, <code><a href="mod_mime.html">mod_mime</a></code> may define the <a href="../handler.html">handler</a> and <a href="../filter.html">filters</a> that originate and process
      content.  The directives <a href="#addhandler" class="directive"><code class="directive">AddHandler</code></a>, <a href="#addoutputfilter" class="directive"><code class="directive">AddOutputFilter</code></a>, and <a href="#addinputfilter" class="directive"><code class="directive">AddInputFilter</code></a> control the modules
      or scripts that serve the document.  The <a href="#multiviewsmatch" class="directive"><code class="directive">MultiviewsMatch</code></a> directive allows
      <code><a href="mod_negotiation.html">mod_negotiation</a></code> to consider these file extensions
      to included when testing Multiviews matches.</p>
  
      <p>While <code><a href="mod_mime.html">mod_mime</a></code> associates meta-information
      with filename extensions, the <code><a href="core.html">core</a></code> server
      provides directives that are used to associate all the files in a
      given container (<em>e.g.</em>, <a href="core.html#location" class="directive"><code class="directive">&lt;location&gt;</code></a>, <a href="core.html#directory" class="directive"><code class="directive">&lt;directory&gt;</code></a>, or <a href="core.html#files" class="directive"><code class="directive">&lt;Files&gt;</code></a>) with particular
      meta-information. These directives include <a href="core.html#forcetype" class="directive"><code class="directive">ForceType</code></a>, <a href="core.html#sethandler" class="directive"><code class="directive">SetHandler</code></a>, <a href="core.html#setinputfilter" class="directive"><code class="directive">SetInputFilter</code></a>, and <a href="core.html#setoutputfilter" class="directive"><code class="directive">SetOutputFilter</code></a>.  The core directives
      override any filename extension mappings defined in
      <code><a href="mod_mime.html">mod_mime</a></code>.</p>
  
      <p>Note that changing the meta-information for a file does not
      change the value of the <code>Last-Modified</code> header.
      Thus, previously cached copies may still be used by a client or
      proxy, with the previous headers. If you change the
      meta-information (language, content type, character set or
      encoding) you may need to 'touch' affected files (updating
      their last modified date) to ensure that all visitors are
      receive the corrected content headers.</p>
  <h2>Directives</h2><ul><li><a href="#addcharset">AddCharset</a></li><li><a href="#addencoding">AddEncoding</a></li><li><a href="#addhandler">AddHandler</a></li><li><a href="#addinputfilter">AddInputFilter</a></li><li><a href="#addlanguage">AddLanguage</a></li><li><a href="#addoutputfilter">AddOutputFilter</a></li><li><a href="#addtype">AddType</a></li><li><a href="#defaultlanguage">DefaultLanguage</a></li><li><a href="#multiviewsmatch">MultiviewsMatch</a></li><li><a href="#removecharset">RemoveCharset</a></li><li><a href="#removeencoding">RemoveEncoding</a></li><li><a href="#removehandler">RemoveHandler</a></li><li><a href="#removeinputfilter">RemoveInputFilter</a></li><li><a href="#removelanguage">RemoveLanguage</a></li><li><a href="#removeoutputfilter">RemoveOutputFilter</a></li><li><a href="#removetype">RemoveType</a></li><li><a href="#typesconfig">TypesConfig</a></li></ul><p><strong>See also </strong></p><ul><li><a href="mod_mime_magic.html#mimemagicfile" class="directive"><code class="directive">MimeMagicFile</code></a></li><li><a href="core.html#adddefaultcharset" class="directive"><code class="directive">AddDefaultCharset</code></a></li><li><a href="core.html#forcetype" class="directive"><code class="directive">ForceType</code></a></li><li><a href="core.html#defaulttype" class="directive"><code class="directive">DefaultType</code></a></li><li><a href="core.html#sethandler" class="directive"><code class="directive">SetHandler</code></a></li><li><a href="core.html#setinputfilter" class="directive"><code class="directive">SetInputFilter</code></a></li><li><a href="core.html#setoutputfilter" class="directive"><code class="directive">SetOutputFilter</code></a></li></ul><h2><a name="multipleext">Files with Multiple Extensions</a></h2>
  
  
      <p>Files can have more than one extension, and the order of the
      extensions is <em>normally</em> irrelevant. For example, if the
      file <code>welcome.html.fr</code> maps onto content type
      text/html and language French then the file <code>welcome.fr.html</code> 
      will map onto exactly the same information.  If more than one 
      extension is given which maps onto the same
      type of meta-information, then the one to the right will be
      used. For example, if ".gif" maps to the MIME-type image/gif
      and ".html" maps to the MIME-type text/html, then the file
      <code>welcome.gif.html</code> will be associated with the
      MIME-type "text/html".</p>
  
      <p>Care should be taken when a file with multiple extensions
      gets associated with both a MIME-type and a handler. This will
      usually result in the request being by the module associated
      with the handler. For example, if the <code>.imap</code>
      extension is mapped to the handler "imap-file" (from mod_imap)
      and the <code>.html</code> extension is mapped to the MIME-type
      "text/html", then the file <code>world.imap.html</code> will be
      associated with both the "imap-file" handler and "text/html"
      MIME-type. When it is processed, the "imap-file" handler will
      be used, and so it will be treated as a mod_imap imagemap
      file.</p>
  <h2><a name="contentencoding">Content encoding</a></h2>
  
      <p>A file of a particular MIME type can additionally be encoded a
      particular way to simplify transmission over the Internet.
      While this usually will refer to compression, such as
      <code>gzip</code>, it can also refer to encryption, such a
      <code>pgp</code> or to an encoding such as UUencoding, which is
      designed for transmitting a binary file in an ASCII (text)
      format.</p>
  
      <p>The MIME RFC puts it this way:</p>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5">
        The Content-Encoding entity-header field is used as a
        modifier to the media-type. When present, its value indicates
        what additional content coding has been applied to the
        resource, and thus what decoding mechanism must be applied in
        order to obtain the media-type referenced by the Content-Type
        header field. The Content-Encoding is primarily used to allow
        a document to be compressed without losing the identity of
        its underlying media type.
      </td></tr></table></blockquote>
  
      <p>By using more than one file extension (see <a href="#multipleext">section above about multiple file
      extensions</a>), you can indicate that a file is of a
      particular <em>type</em>, and also has a particular
      <em>encoding</em>. </p>
  
      <p>For example, you may have a file which is a Microsoft Word
      document, which is pkzipped to reduce its size. If the
      <code>.doc</code> extension is associated with the Microsoft
      Word file type, and the <code>.zip</code> extension is
      associated with the pkzip file encoding, then the file
      <code>Resume.doc.zip</code>would be known to be a pkzip'ed Word
      document.</p>
  
      <p>Apache send a <code>Content-encoding</code> header with the
      resource, in order to tell the client browser about the
      encoding method.</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>Content-encoding: pkzip</code></td></tr></table></blockquote>
  
  <h2>Character sets and languages</h2>
  
  
  
      <p>In addition to file type and the file encoding,
      another important piece of information is what language a
      particular document is in, and in what character set the file
      should be displayed. For example, the document might be written
      in the Vietnamese alphabet, or in Cyrillic, and should be
      displayed as such. This information, also, is transmitted in
      HTTP headers.</p>
  
      <p>The character set, language encoding and mime type are all 
      used in the process of content negotiation (See 
      <code><a href="mod_negotiation.html">mod_negotiation</a></code>) to determine
      which document to give to the client, when there are
      alternative documents in more than one character set, language, 
      encoding or mime type.  All filename extensions associations
      created with <code><a href="AddCharset.html">AddCharset</a></code>, <code><a href="AddEncoding.html">AddEncoding</a></code>, 
      <code><a href="AddLanguage.html">AddLanguage</a></code> and <code><a href="AddType.html">AddType</a></code> directives
      (and extensions listed in the <code><a href="MimeMagicFile.html">MimeMagicFile</a></code>)
      participate in this select process.  Filename extensions that
      are only associated using the <code><a href="AddHandler.html">AddHandler</a></code>,
      <code><a href="AddInputFilter.html">AddInputFilter</a></code> or <code><a href="AddOutputFilter.html">AddOutputFilter</a></code>
      directives may be included or excluded from matching by using 
      the <code class="directive">MultiviewsMatch</code> directive.</p>
  
  <h3>Charset</h3>
  
  
      <p>To convey this further information, Apache optionally sends
      a <code>Content-Language</code> header, to specify the language
      that the document is in, and can append additional information
      onto the <code>Content-Type</code> header to indicate the
      particular character set that should be used to correctly
      render the information.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  Content-Language: en, fr<br>
  Content-Type: text/plain; charset=ISO-8859-2
  </code></td></tr></table></blockquote>
  
      <p>The language specification is the two-letter abbreviation
      for the language. The <code>charset</code> is the name of the
      particular character set which should be used.</p>
  
  <hr/><h2><a name="AddCharset">AddCharset</a> <a name="addcharset">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps the given filename extensions
      to the specified content charset</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddCharset <em>charset extension</em> 
  [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>AddCharset is only available in Apache 
  1.3.10 and later</td></tr></table></td></tr></table>
      
      <p>The AddCharset directive maps the given filename extensions
      to the specified content charset. <em>charset</em> is the MIME
      charset parameter of filenames containing <em>extension</em>.
      This mapping is added to any already in force, overriding any
      mappings that already exist for the same <em>extension</em>.</p>
  
      <p>Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AddLanguage ja .ja<br>
      AddCharset EUC-JP .euc<br>
      AddCharset ISO-2022-JP .jis<br>
      AddCharset SHIFT_JIS .sjis
  </code></td></tr></table></blockquote>
  
      <p>Then the document <code>xxxx.ja.jis</code> will be treated
      as being a Japanese document whose charset is ISO-2022-JP (as
      will the document <code>xxxx.jis.ja</code>). The AddCharset
      directive is useful for both to inform the client about the
      character encoding of the document so that the document can be
      interpreted and displayed appropriately, and for <a href="../content-negotiation.html">content negotiation</a>,
      where the server returns one from several documents based on
      the client's charset preference.</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  
  <p><strong>See also </strong></p><ul><li><code><a href="mod_negotiation.html">mod_negotiation</a></code></li><li><a href="core.html#adddefaultcharset" class="directive"><code class="directive">AddDefaultCharset</code></a></li></ul><hr/><h2><a name="AddEncoding">AddEncoding</a> <a name="addencoding">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps the given filename extensions
      to the specified encoding type</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddEncoding
      <em>MIME-enc extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr></table></td></tr></table>
  
      <p>The AddEncoding directive maps the given filename extensions
      to the specified encoding type. <em>MIME-enc</em> is the MIME
      encoding to use for documents containing the
      <em>extension</em>. This mapping is added to any already in
      force, overriding any mappings that already exist for the same
      <em>extension</em>. Example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        AddEncoding x-gzip .gz<br>
        AddEncoding x-compress .Z
      </code></td></tr></table></blockquote>
  
      <p>This will cause filenames containing the .gz extension to be
      marked as encoded using the x-gzip encoding, and filenames
      containing the .Z extension to be marked as encoded with
      x-compress. </p>
  
      <p>Old clients expect <code>x-gzip</code> and
      <code>x-compress</code>, however the standard dictates that
      they're equivalent to <code>gzip</code> and
      <code>compress</code> respectively. Apache does content
      encoding comparisons by ignoring any leading <code>x-</code>.
      When responding with an encoding Apache will use whatever form
      (<em>i.e.</em>, <code>x-foo</code> or <code>foo</code>) the
      client requested. If the client didn't specifically request a
      particular form Apache will use the form given by the
      <code>AddEncoding</code> directive. To make this long story
      short, you should always use <code>x-gzip</code> and
      <code>x-compress</code> for these two specific encodings. More
      recent encodings, such as <code>deflate</code> should be
      specified without the <code>x-</code>.</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  
  <hr/><h2><a name="AddHandler">AddHandler</a> <a name="addhandler">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps the filename extensions
  to the specified handler</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddHandler
      <em>handler-name extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td/></tr></table></td></tr></table>
  <p>Files having the named <em>extension</em> will be served by the
  specified <a href="../handler.html">handler-name</a>.  This mapping is
  added to any already in force, overriding any mappings that already
  exist for the same <em>extension</em>. For example, to activate CGI
  scripts with the file extension "<code>.cgi</code>", you might
  use:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AddHandler cgi-script .cgi
  </code></td></tr></table></blockquote>
  
      <p>Once that has been put into your srm.conf or httpd.conf
      file, any file containing the "<code>.cgi</code>" extension
      will be treated as a CGI program.</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  
  <p><strong>See also </strong></p><ul><li><a href="core.html#sethandler" class="directive"><code class="directive">SetHandler</code></a></li></ul><hr/><h2><a name="AddInputFilter">AddInputFilter</a> <a name="addinputfilter">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps filename extensions
      to the filters that will process
      client requests</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddInputFilter
      <em>filter</em>[<em>;filter</em>...] extension
      [<em>extension</em> ...]</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>AddInputFilter
      is only available in Apache 2.0.26 and later.</td></tr></table></td></tr></table>
  
      <p>AddInputFilter maps the filename extensions <em>extension</em>
      to the <a href="../filter.html">filters</a> which will process
      client requests and POST input when they are received by the
      server. This is in addition to any filters defined elsewhere,
      including the <a href="core.html#setinputfilter">SetInputFilter</a> directive.
      This mapping is merged over any already in force, overriding any
      mappings that already exist for the same <em>extension</em>.</p>
  
      <p>If more than one filter is specified, they must be separated
      by semicolons in the order in which they should process the
      content. Both the filter and <em>extension</em> arguments are
      case-insensitive, and the extension may be specified with or
      without a leading dot.</p>
  
  <hr/><h2><a name="AddLanguage">AddLanguage</a> <a name="addlanguage">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps the given filename extension
  to the specified content language</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddLanguage
      <em>MIME-lang extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr></table></td></tr></table>
  
      <p>The AddLanguage directive maps the given filename extension
      to the specified content language. <em>MIME-lang</em> is the
      MIME language of filenames containing <em>extension</em>. This
      mapping is added to any already in force, overriding any
      mappings that already exist for the same
      <em>extension</em>.</p>
  
      <p>Example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        AddEncoding x-compress .Z<br>
         AddLanguage en .en<br>
         AddLanguage fr .fr
      </code></td></tr></table></blockquote>
  
      <p>Then the document <code>xxxx.en.Z</code> will be treated as
      being a compressed English document (as will the document
      <code>xxxx.Z.en</code>). Although the content language is
      reported to the client, the browser is unlikely to use this
      information. The AddLanguage directive is more useful for <a href="../content-negotiation.html">content negotiation</a>,
      where the server returns one from several documents based on
      the client's language preference.</p>
  
      <p>If multiple language assignments are made for the same
      extension, the last one encountered is the one that is used.
      That is, for the case of:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      AddLanguage en .en<br>
      AddLanguage en-uk .en<br>
      AddLanguage en-us .en
  </code></td></tr></table></blockquote>
  
      <p>documents with the extension "<code>.en</code>" would be
      treated as being "<code>en-us</code>".</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  
  <p><strong>See also </strong></p><ul><li><code><a href="mod_negotiation.html">mod_negotiation</a></code></li></ul><hr/><h2><a name="AddOutputFilter">AddOutputFilter</a> <a name="addoutputfilter">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>maps the filename
  extensions to the filters that will process
  responses from the server</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddOutputFilter
      <em>filter</em>[<em>;filter</em>...] extension
      [<em>extension</em> ...]</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>AddOutputFilter
      is only available in Apache 2.0.26 and later.</td></tr></table></td></tr></table>
  
      <p>The <code class="directive">AddOutputFilter</code> directive maps the
      filename extensions <em>extension</em> to the <a href="../filter.html">filters</a> which will process responses
      from the server before they are sent to the client.  This is in
      addition to any filters defined elsewhere, including the
      <a href="core.html#setoutputfilter" class="directive"><code class="directive">SetOutputFilter</code></a>
      directive. This mapping is merged over any already in force,
      overriding any mappings that already exist for the same
      <em>extension</em>.</p>
  
      <p>For example, the following configuration will process all
      .shtml files for server-side includes and will then compress
      the output using <code><a href="mod_deflate.html">mod_deflate</a></code>.</p>
       
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        AddOutputFilter INCLUDES;DEFLATE shtml
      </code></td></tr></table></blockquote>
  
      <p>If more than one filter is specified, they must be separated
      by semicolons in the order in which they should process the
      content. Both the filter and <em>extension</em> arguments are
      case-insensitive, and the extension may be specified with or
      without a leading dot.</p>
  
  <hr/><h2><a name="AddType">AddType</a> <a name="addtype">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maps the given filename extensions
  onto the specified content type</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AddType <em>MIME-type
      extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr></table></td></tr></table>
  
      <p>The AddType directive maps the given filename extensions onto
      the specified content type. <em>MIME-type</em> is the MIME type to
      use for filenames containing <em>extension</em>. This mapping is
      added to any already in force, overriding any mappings that
      already exist for the same <em>extension</em>.  This directive can
      be used to add mappings not listed in the MIME types file (see the
      <a href="#typesconfig" class="directive"><code class="directive">TypesConfig</code></a>
      directive).</p>
      
      <p>Example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        AddType image/gif .gif
      </code></td></tr></table></blockquote>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5">It is recommended that new MIME types be added using the
      AddType directive rather than changing the 
      <code class="directive">TypesConfig</code> file. </td></tr></table></blockquote>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  
  <p><strong>See also </strong></p><ul><li><a href="core.html#defaulttype" class="directive"><code class="directive">DefaultType</code></a></li><li><a href="core.html#forcetype" class="directive"><code class="directive">ForceType</code></a></li></ul><hr/><h2><a name="DefaultLanguage">DefaultLanguage</a> <a name="defaultlanguage">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets all files in the given scope to the 
  specified language</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>DefaultLanguage
      <em>MIME-lang</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>DefaultLanguage
      is only available in Apache 1.3.4 and later.</td></tr></table></td></tr></table>
  
      <p>The DefaultLanguage directive tells Apache that all files in
      the directive's scope (<em>e.g.</em>, all files covered by the
      current <code>&lt;Directory&gt;</code> container) that don't
      have an explicit language extension (such as <code>.fr</code>
      or <code>.de</code> as configured by <code>AddLanguage</code>)
      should be considered to be in the specified <em>MIME-lang</em>
      language. This allows entire directories to be marked as
      containing Dutch content, for instance, without having to
      rename each file. Note that unlike using extensions to specify
      languages, <code>DefaultLanguage</code> can only specify a
      single language.</p>
  
      <p>If no <code>DefaultLanguage</code> directive is in force,
      and a file does not have any language extensions as configured
      by <code>AddLanguage</code>, then that file will be considered
      to have no language attribute.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  DeafaultLanguage en
  </code></td></tr></table></blockquote>
  
  <p><strong>See also </strong></p><ul><li><code><a href="mod_negotiation.html">mod_negotiation</a></code></li></ul><hr/><h2><a name="MultiviewsMatch">MultiviewsMatch</a> <a name="multiviewsmatch">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>The types of files that will be included when 
  searching for a matching file with MultiViews</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MultiviewsMatch
      <em>[NegotiatedOnly] [Handlers] [Filters] [Any]</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available 
      in Apache 2.0.26 and later.</td></tr></table></td></tr></table>
  
      <p>MultiviewsMatch permits three different behaviors for
      <a href="mod_negotiation.html">mod_negotiation</a>'s Multiviews 
      feature.  Multiviews allows a request for a file, e.g. index.html,
      to match any negotiated extensions following the base request,
      e.g. index.html.en, index.html,fr, or index.html.gz.</p>
  
      <p>The NegotiatedOnly option provides that every extension following
      the base name must correlate to a recognized mod_mime extension for
      content negotation, e.g. Charset, Content-Type, Language, or 
      Encoding.  This is the strictest implementation with the fewest
      unexpected side effects, and is the default behavior.</p>
  
      <p>To include extensions associated with Handlers and/or Filters,
      set the MultiviewsMatch directive to either Handlers, Filters, or
      both option keywords.  If all other factors are equal, the smallest
      file will be served, e.g. in deciding between index.html.cgi of 500
      characters and index.html.pl of 1000 bytes, the .cgi file would win
      in this example.  Users of .asis files might prefer to use the
      Handler option, if .asis files are associated with the asis-handler.</p>
  
      <p>You may finally allow Any extensions to match, even if mod_mime 
      doesn't recognize the extension.  This was the behavior in Apache 1.3,
      and can cause unpredicatable results, such as serving .old or .bak
      files the webmaster never expected to be served.</p>
  
      <p>For example, the following configuration will allow handlers
      and filters to participate in Multviews, but will exclude unknown
      files:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  MultiviewsMatch Handlers Filters
  </code></td></tr></table></blockquote>
  
  <p><strong>See also </strong></p><ul><li><a href="core.html#options" class="directive"><code class="directive">Options</code></a></li></ul><hr/><h2><a name="RemoveCharset">RemoveCharset</a> <a name="removecharset">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Removes any character set associations for a set of file
  extensions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RemoveCharset
      <em>extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>RemoveCharset is
      only available in Apache 2.0.24 and later.</td></tr></table></td></tr></table>
      <p>The <code>RemoveCharset</code> directive removes any
      character set associations for files with the given extensions.
      This allows <code>.htaccess</code> files in subdirectories to
      undo any associations inherited from parent directories or the
      server config files.</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  RemoveCharset .html .shtml
  </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="RemoveEncoding">RemoveEncoding</a> <a name="removeencoding">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Removes any content encoding associations for a set of file
  extensions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RemoveEncoding
      <em>extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>RemoveEncoding
      is only available in Apache 1.3.13 and later.</td></tr></table></td></tr></table>
  
      <p>The <code>RemoveEncoding</code> directive removes any
      encoding associations for files with the given extensions. This
      allows <code>.htaccess</code> files in subdirectories to undo
      any associations inherited from parent directories or the
      server config files. An example of its use might be:</p>
  
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      <dl>
        <dt><code>/foo/.htaccess:</code></dt>
        <dd><code>AddEncoding x-gzip .gz</code><br>
         <code>AddType text/plain .asc</code><br>
         <code>&lt;Files *.gz.asc&gt;</code><br>
         <code>&nbsp;&nbsp;&nbsp;&nbsp;RemoveEncoding
        .gz</code><br>
         <code>&lt;/Files&gt;</code></dd>
      </dl>
  </code></td></tr></table></blockquote>
  
      <p>This will cause <code>foo.gz</code> to be marked as being
      encoded with the gzip method, but <code>foo.gz.asc</code> as an
      unencoded plaintext file.</p>
  
      <p><strong>Note:</strong>RemoveEncoding directives are processed
      <em>after</em> any AddEncoding directives, so it is possible they
      may undo the effects of the latter if both occur within the
      same directory configuration.</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  <hr/><h2><a name="RemoveHandler">RemoveHandler</a> <a name="removehandler">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Removes any handler associations for a set of file
  extensions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RemoveHandler
      <em>extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>RemoveHandler is
      only available in Apache 1.3.4 and later.</td></tr></table></td></tr></table>
  
      <p>The <code>RemoveHandler</code> directive removes any handler
      associations for files with the given extensions. This allows
      <code>.htaccess</code> files in subdirectories to undo any
      associations inherited from parent directories or the server
      config files. An example of its use might be:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      <dl>
        <dt><code>/foo/.htaccess:</code></dt>
  
        <dd><code>AddHandler server-parsed .html</code></dd>
  
        <dt><code>/foo/bar/.htaccess:</code></dt>
  
        <dd><code>RemoveHandler .html</code></dd>
      </dl>
  </code></td></tr></table></blockquote>
  
      <p>This has the effect of returning <code>.html</code> files in
      the <code>/foo/bar</code> directory to being treated as normal
      files, rather than as candidates for parsing (see the <a href="mod_include.html"><code>mod_include</code></a>
      module).</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  <hr/><h2><a name="RemoveInputFilter">RemoveInputFilter</a> <a name="removeinputfilter">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Removes any input filter associations for a set of file
  extensions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RemoveInputFilter
      <em>extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>RemoveInputFilter is only available in Apache 
  2.0.26 and later.</td></tr></table></td></tr></table>   
  
      <p>The <code>RemoveInputFilter</code> directive removes any
      input filter associations for files with the given extensions.
      This allows <code>.htaccess</code> files in subdirectories to
      undo any associations inherited from parent directories or the
      server config files.</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  
  <hr/><h2><a name="RemoveLanguage">RemoveLanguage</a> <a name="removelanguage">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Removes any language associations for a set of file
  extensions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RemoveLanguage
      <em>extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>RemoveLanguage
      is only available in Apache 2.0.24 and later.</td></tr></table></td></tr></table>
  
      <p>The <code>RemoveLanguage</code> directive removes any
      language associations for files with the given extensions. This
      allows <code>.htaccess</code> files in subdirectories to undo
      any associations inherited from parent directories or the
      server config files.</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  <hr/><h2><a name="RemoveOutputFilter">RemoveOutputFilter</a> <a name="removeoutputfilter">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Removes any output filter associations for a set of file
  extensions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RemoveOutputFilter
      <em>extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>RemoveOutputFilter is only available in Apache 
  2.0.26 and later.</td></tr></table></td></tr></table>    
  
      <p>The <code>RemoveOutputFilter</code> directive removes any
      output filter associations for files with the given extensions.
      This allows <code>.htaccess</code> files in subdirectories to
      undo any associations inherited from parent directories or the
      server config files.</p>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  <hr/><h2><a name="RemoveType">RemoveType</a> <a name="removetype">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Removes any content type associations for a set of file
  extensions</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RemoveType
      <em>extension</em> [<em>extension</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>RemoveType is
      only available in Apache 1.3.13 and later.</td></tr></table></td></tr></table>
      <p>The <code class="directive">RemoveType</code> directive removes any MIME type
      associations for files with the given extensions. This allows
      <code>.htaccess</code> files in subdirectories to undo any
      associations inherited from parent directories or the server
      config files. An example of its use might be:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      <dl>
        <dt><code>/foo/.htaccess:</code></dt>
  
        <dd><code>RemoveType .cgi</code></dd>
      </dl>
  </code></td></tr></table></blockquote>
  
      <p>This will remove any special handling of <code>.cgi</code>
      files in the <code>/foo/</code> directory and any beneath it,
      causing the files to be treated as being of the <a href="core.html#defaulttype">default type</a>.</p>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5"><strong>Note:</strong><code><a href="RemoveType.html">RemoveType</a></code> directives
      are processed <em>after</em> any <code><a href="AddType.html">AddType</a></code>
      directives, so it is possible they may undo the effects of the
      latter if both occur within the same directory
      configuration.</td></tr></table></blockquote>
  
      <p>The <em>extension</em> argument is case-insensitive, and can
      be specified with or without a leading dot.</p>
  <hr/><h2><a name="TypesConfig">TypesConfig</a> <a name="typesconfig">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>The location of the mime.types file</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>TypesConfig <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>TypesConfig conf/mime.types</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime</td></tr></table></td></tr></table>
  
      <p>The TypesConfig directive sets the location of the MIME types
      configuration file. <em>Filename</em> is relative to the <a href="core.html#serverroot">ServerRoot</a>. This file sets the
      default list of mappings from filename extensions to content
      types. Most administrators use the provided
      <code>mime.types</code> file, which associates common filename
      extensions with IANA registered content types. The current list is
      maintained at
      <code>http://www.isi.edu/in-notes/iana/assignments/media-types/media-types</code>. This
      simplifies the <code>httpd.conf</code> file by providing the
      majority of media-type definitions, and may be overridden by
      <a href="#addtype" class="directive"><code class="directive">AddType</code></a> directives as
      needed.  You should not edit the <code>mime.types</code> file,
      because it may be replaced when you upgrade your server.</p>
     
      <p>The file contains lines in the format of the arguments to
      an <a href="#addtype" class="directive"><code class="directive">AddType</code></a> directive:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        MIME-type extension extension ...
      </code></td></tr></table></blockquote>
  
      <p>
      The case of the extension does not matter. Blank lines, and lines
      beginning with a hash character (`#') are ignored. </p>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5">Please do not send requests to the Apache HTTP Server Project
      to add any new entries in the distributed mime.types file
      unless (1) they are already registered with IANA, and (2) they
      use widely accepted, non-conflicting filename extensions across
      platforms. category/x-subtype requests will be automatically
      rejected, as will any new two-letter extensions as they will
      likely conflict later with the already crowded language and
      character set namespace.</td></tr></table></blockquote>
  
  <p><strong>See also </strong></p><ul><li><code><a href="mod_mime_magic.html">mod_mime_magic</a></code></li></ul><hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_mime_magic.html.en
  
  Index: mod_mime_magic.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_mime_magic- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_mime_magic</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Determines the MIME type of a file
      by looking at a few bytes of its contents</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>mime_magic_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module determines the MIME type of files in the same
      way the Unix file(1) command works: it looks at the first few
      bytes of the file. It is intended as a "second line of defense"
      for cases that <code><a href="mod_mime.html">mod_mime</a></code> can't
      resolve. To assure that mod_mime gets first try at determining
      a file's MIME type, be sure to list mod_mime_magic
      <strong>before</strong> mod_mime in the configuration.</p>
  
      <p>This module is derived from a free version of the
      <code>file(1)</code> command for Unix, which uses "magic
      numbers" and other hints from a file's contents to figure out
      what the contents are. This module is active only if the magic
      file is specified by the <a href="#mimemagicfile" class="directive"><code class="directive">MimeMagicFile</code></a> directive.</p>
  <h2>Directives</h2><ul><li><a href="#mimemagicfile">MimeMagicFile</a></li></ul><h2>Format of the Magic File</h2>
  
      <p>The contents of the file are plain ASCII text in 4-5
      columns. Blank lines are allowed but ignored. Commented lines
      use a hash mark "#". The remaining lines are parsed for the
      following columns:</p>
  
      <table border="1">
        <tr valign="top">
          <th>Column</th>
  
          <th>Description</th>
        </tr>
  
        <tr valign="top">
          <td>1</td>
  
          <td>byte number to begin checking from<br>
           "&gt;" indicates a dependency upon the previous non-"&gt;"
          line</td>
        </tr>
  
        <tr valign="top">
          <td>2</td>
  
          <td>
            type of data to match 
  
            <table border="1">
              <tr>
                <td>byte</td>
  
                <td>single character</td>
              </tr>
  
              <tr>
                <td>short</td>
  
                <td>machine-order 16-bit integer</td>
              </tr>
  
              <tr>
                <td>long</td>
  
                <td>machine-order 32-bit integer</td>
              </tr>
  
              <tr>
                <td>string</td>
  
                <td>arbitrary-length string</td>
              </tr>
  
              <tr>
                <td>date</td>
  
                <td>long integer date (seconds since Unix
                epoch/1970)</td>
              </tr>
  
              <tr>
                <td>beshort</td>
  
                <td>big-endian 16-bit integer</td>
              </tr>
  
              <tr>
                <td>belong</td>
  
                <td>big-endian 32-bit integer</td>
              </tr>
  
              <tr>
                <td>bedate</td>
  
                <td>big-endian 32-bit integer date</td>
              </tr>
  
              <tr>
                <td>leshort</td>
  
                <td>little-endian 16-bit integer</td>
              </tr>
  
              <tr>
                <td>lelong</td>
  
                <td>little-endian 32-bit integer</td>
              </tr>
  
              <tr>
                <td>ledate</td>
  
                <td>little-endian 32-bit integer date</td>
              </tr>
            </table>
          </td>
        </tr>
  
        <tr valign="top">
          <td>3</td>
  
          <td>contents of data to match</td>
        </tr>
  
        <tr valign="top">
          <td>4</td>
  
          <td>MIME type if matched</td>
        </tr>
  
        <tr valign="top">
          <td>5</td>
  
          <td>MIME encoding if matched (optional)</td>
        </tr>
      </table>
  
      <p>For example, the following magic file lines would recognize
      some audio formats.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  # Sun/NeXT audio data
  0       string          .snd
  &gt;12     belong          1               audio/basic
  &gt;12     belong          2               audio/basic
  &gt;12     belong          3               audio/basic
  &gt;12     belong          4               audio/basic
  &gt;12     belong          5               audio/basic
  &gt;12     belong          6               audio/basic
  &gt;12     belong          7               audio/basic
  &gt;12     belong          23              audio/x-adpcm
  </pre>
  </code></td></tr></table></blockquote>
      <p>Or these would recognize the difference between "*.doc" files
      containing Microsoft Word or FrameMaker documents. (These are
      incompatible file formats which use the same file suffix.)</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  # Frame
  0       string          \&lt;MakerFile     application/x-frame
  0       string          \&lt;MIFFile       application/x-frame
  0       string          \&lt;MakerDictionary       application/x-frame
  0       string          \&lt;MakerScreenFon        application/x-frame
  0       string          \&lt;MML           application/x-frame
  0       string          \&lt;Book          application/x-frame
  0       string          \&lt;Maker         application/x-frame
  
  # MS-Word
  0       string          \376\067\0\043                  application/msword
  0       string          \320\317\021\340\241\261        application/msword
  0       string          \333\245-\0\0\0                 application/msword
  </pre>
  </code></td></tr></table></blockquote>
      <p>An optional MIME encoding can be included as a fifth column.
      For example, this can recognize gzipped files and set the
      encoding for them.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  # gzip (GNU zip, not to be confused with [Info-ZIP/PKWARE] zip archiver)
  0       string          \037\213        application/octet-stream        x-gzip
  </pre>
  </code></td></tr></table></blockquote>
  <h2>Performance Issues</h2>
      <p>This module is not for every system. If your system is barely
      keeping up with its load or if you're performing a web server
      benchmark, you may not want to enable this because the
      processing is not free.</p>
  
      <p>However, an effort was made to improve the performance of
      the original file(1) code to make it fit in a busy web server.
      It was designed for a server where there are thousands of users
      who publish their own documents. This is probably very common
      on intranets. Many times, it's helpful if the server can make
      more intelligent decisions about a file's contents than the
      file name allows ...even if just to reduce the "why doesn't my
      page work" calls when users improperly name their own files.
      You have to decide if the extra work suits your
      environment.</p>
  
      <p>When compiling an Apache server, this module should be at or
      near the top of the list of modules in the Configuration file.
      The modules are listed in increasing priority so that will mean
      this one is used only as a last resort, just like it was
      designed to.</p>
  
  <h2><a name="notes">Notes</a></h2>
  
      <p>The following notes apply to the mod_mime_magic module and are
      included here for compliance with contributors' copyright
      restrictions that require their acknowledgment. </p>
  <pre>
  /*
   * mod_mime_magic: MIME type lookup via file magic numbers
   * Copyright (c) 1996-1997 Cisco Systems, Inc.
   *
   * This software was submitted by Cisco Systems to the Apache Group in July
   * 1997.  Future revisions and derivatives of this source code must
   * acknowledge Cisco Systems as the original contributor of this module.
   * All other licensing and usage conditions are those of the Apache Group.
   *
   * Some of this code is derived from the free version of the file command
   * originally posted to comp.sources.unix.  Copyright info for that program
   * is included below as required.
   * ---------------------------------------------------------------------------
   * - Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.
   *
   * This software is not subject to any license of the American Telephone and
   * Telegraph Company or of the Regents of the University of California.
   *
   * Permission is granted to anyone to use this software for any purpose on any
   * computer system, and to alter it and redistribute it freely, subject to
   * the following restrictions:
   *
   * 1. The author is not responsible for the consequences of use of this
   * software, no matter how awful, even if they arise from flaws in it.
   *
   * 2. The origin of this software must not be misrepresented, either by
   * explicit claim or by omission.  Since few users ever read sources, credits
   * must appear in the documentation.
   *
   * 3. Altered versions must be plainly marked as such, and must not be
   * misrepresented as being the original software.  Since few users ever read
   * sources, credits must appear in the documentation.
   *
   * 4. This notice may not be removed or altered.
   * -------------------------------------------------------------------------
   *
   * For compliance with Mr Darwin's terms: this has been very significantly
   * modified from the free "file" command.
   * - all-in-one file for compilation convenience when moving from one
   *   version of Apache to the next.
   * - Memory allocation is done through the Apache API's pool structure.
   * - All functions have had necessary Apache API request or server
   *   structures passed to them where necessary to call other Apache API
   *   routines.  (<em>i.e.</em>, usually for logging, files, or memory allocation in
   *   itself or a called function.)
   * - struct magic has been converted from an array to a single-ended linked
   *   list because it only grows one record at a time, it's only accessed
   *   sequentially, and the Apache API has no equivalent of realloc().
   * - Functions have been changed to get their parameters from the server
   *   configuration instead of globals.  (It should be reentrant now but has
   *   not been tested in a threaded environment.)
   * - Places where it used to print results to stdout now saves them in a
   *   list where they're used to set the MIME type in the Apache request
   *   record.
   * - Command-line flags have been removed since they will never be used here.
   *
   */
  </pre>
  <hr/><h2><a name="MimeMagicFile">MimeMagicFile</a> <a name="mimemagicfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enable MIME-type determination based on file contents
  using the specified magic file</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MimeMagicFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_mime_magic</td></tr></table></td></tr></table>
      <p>The <code class="directive">MimeMagicFile</code> directive can be used to
      enable this module, the default file is distributed at
      <code>conf/magic</code>. Non-rooted paths are relative to the
      ServerRoot. Virtual hosts will use the same file as the main
      server unless a more specific setting is used, in which case
      the more specific setting overrides the main server's file.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_negotiation.html.en
  
  Index: mod_negotiation.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_negotiation- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_negotiation</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides for <a href="../content-negotiation.html">content negotiation</a></td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>negotiation_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>Content negotiation, or more accurately content selection, is
      the selection of the document that best matches the clients
      capabilities, from one of several available documents. There
      are two implementations of this.</p>
  
      <ul>
        <li>A type map (a file with the handler
        <code>type-map</code>) which explicitly lists the files
        containing the variants.</li>
  
        <li>A MultiViews search (enabled by the MultiViews <a href="core.html#options" class="directive"><code class="directive">Options</code></a>, where the server does an
        implicit filename pattern match, and choose from amongst the
        results.</li>
      </ul>
  <h2>Directives</h2><ul><li><a href="#cachenegotiateddocs">CacheNegotiatedDocs</a></li><li><a href="#forcelanguagepriority">ForceLanguagePriority</a></li><li><a href="#languagepriority">LanguagePriority</a></li></ul><p><strong>See also </strong></p><ul><li><a href="mod_mime.html#defaultlanguage" class="directive"><code class="directive">DefaultLanguage</code></a></li><li><a href="mod_mime.html#addencoding" class="directive"><code class="directive">AddEncoding</code></a></li><li><a href="mod_mime.html#addlanguage" class="directive"><code class="directive">AddLanguage</code></a></li><li><a href="mod_mime.html#addtype" class="directive"><code class="directive">AddType</code></a></li></ul><h2>Type maps</h2>
      <p>A type map has the same format as RFC822 mail headers. It
      contains document descriptions separated by blank lines, with
      lines beginning with a hash character ('#') treated as
      comments. A document description consists of several header
      records; records may be continued on multiple lines if the
      continuation lines start with spaces. The leading space will be
      deleted and the lines concatenated. A header record consists of
      a keyword name, which always ends in a colon, followed by a
      value. Whitespace is allowed between the header name and value,
      and between the tokens of value. The headers allowed are: </p>
  
      <dl>
        <dt>Content-Encoding:</dt>
  
        <dd>The encoding of the file. Apache only recognizes
        encodings that are defined by an <a href="mod_mime.html#addencoding" class="directive"><code class="directive">AddEncoding</code></a> directive.
        This normally includes the encodings <code>x-compress</code>
        for compress'd files, and <code>x-gzip</code> for gzip'd
        files. The <code>x-</code> prefix is ignored for encoding
        comparisons.</dd>
  
        <dt>Content-Language:</dt>
  
        <dd>The language of the variant, as an Internet standard
        language tag (RFC 1766). An example is <code>en</code>,
        meaning English.</dd>
  
        <dt>Content-Length:</dt>
  
        <dd>The length of the file, in bytes. If this header is not
        present, then the actual length of the file is used.</dd>
  
        <dt>Content-Type:</dt>
  
        <dd>
          The MIME media type of the document, with optional
          parameters. Parameters are separated from the media type
          and from one another by a semi-colon, with a syntax of
          <code>name=value</code>. Common parameters include: 
  
          <dl>
            <dt>level</dt>
  
            <dd>an integer specifying the version of the media type.
            For <code>text/html</code> this defaults to 2, otherwise
            0.</dd>
  
            <dt>qs</dt>
  
            <dd>a floating-point number with a value in the range 0.0
            to 1.0, indicating the relative 'quality' of this variant
            compared to the other available variants, independent of
            the client's capabilities. For example, a jpeg file is
            usually of higher source quality than an ascii file if it
            is attempting to represent a photograph. However, if the
            resource being represented is ascii art, then an ascii
            file would have a higher source quality than a jpeg file.
            All qs values are therefore specific to a given
            resource.</dd>
          </dl>
          Example: 
  
          <blockquote>
            <code>Content-Type: image/jpeg; qs=0.8</code>
          </blockquote>
        </dd>
  
        <dt>URI:</dt>
  
        <dd>The path to the file containing this variant, relative to
        the map file.</dd>
      </dl>
  <h2>MultiViews</h2>
  
      <p>A MultiViews search is enabled by the MultiViews <a href="core.html#options" class="directive"><code class="directive">Options</code></a>. If the server receives a
      request for <code>/some/dir/foo</code> and
      <code>/some/dir/foo</code> does <em>not</em> exist, then the
      server reads the directory looking for all files named
      <code>foo.*</code>, and effectively fakes up a type map which
      names all those files, assigning them the same media types and
      content-encodings it would have if the client had asked for one
      of them by name. It then chooses the best match to the client's
      requirements, and returns that document.</p>
  <hr/><h2><a name="CacheNegotiatedDocs">CacheNegotiatedDocs</a> <a name="cachenegotiateddocs">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Allows content-negotiated documents to be 
  cached by proxy servers</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CacheNegotiatedDocs on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>CacheNegotiatedDocs off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_negotiation</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>The syntax changed in version 2.0.</td></tr></table></td></tr></table>
      <p>If set, this directive allows content-negotiated documents
      to be cached by proxy servers. This could mean that clients
      behind those proxys could retrieve versions of the documents
      that are not the best match for their abilities, but it will
      make caching more efficient.</p>
  
      <p>This directive only applies to requests which come from
      HTTP/1.0 browsers. HTTP/1.1 provides much better control over
      the caching of negotiated documents, and this directive has no
      effect in responses to HTTP/1.1 requests.</p>
  
      <p>Prior to version 2.0,
      <code class="directive">CacheNegotiatedDocs</code> did not take an
      argument; it was turned on by the presence of the directive by
      itself.</p>
  <hr/><h2><a name="ForceLanguagePriority">ForceLanguagePriority</a> <a name="forcelanguagepriority">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Action to take if a single acceptable document is not 
  found</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ForceLanguagePriority None</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_negotiation</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in version 2.0.30 and later</td></tr></table></td></tr></table>
      <p>The <code class="directive">ForceLanguagePriority</code> directive uses
      the given <a href="#languagepriority" class="directive"><code class="directive">LanguagePriority</code></a> to satisfy
      negotation where the server could otherwise not return a single
      matching document.</p>
  
      <p><code>ForceLanguagePriority Prefer</code> uses
      <code>LanguagePriority</code> to serve a one valid result, rather
      than returning an HTTP result 300 (MULTIPLE CHOICES) when there
      are several equally valid choices.  If the directives below were
      given, and the user's Accept-Language header assigned en and de
      each as quality .500 (equally acceptable) then then first matching
      variant, en, will be served.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        LanguagePriority en fr de<br>
        ForceLanguagePriority Prefer
  </code></td></tr></table></blockquote>
  
      <p><code>ForceLanguagePriority Fallback</code> uses
      <code>LanguagePriority</code> to serve a valid result, rather than
      returning an HTTP result 406 (NOT ACCEPTABLE).  If the directives
      below were given, and the user's Accept-Language only permitted an
      es language response, but such a variant isn't found, then the
      first variant from the LanguagePriority list below will be
      served.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        LanguagePriority en fr de<br>
        ForceLanguagePriority Fallback
  </code></td></tr></table></blockquote>
  
      <p>Both options, Prefer and Fallback, may be specified, so either the
      first matching variant from LanguagePriority will be served if more
      that one variant is acceptable, or first available document will be
      served if none of the variants matched the client's acceptable list of
      languages.</p>
  <hr/><h2><a name="LanguagePriority">LanguagePriority</a> <a name="languagepriority">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>The precendence of language variants for cases where
  the client does not express a preference</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LanguagePriority <em>MIME-lang</em> [<em>MIME-lang</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_negotiation</td></tr></table></td></tr></table>
      <p>The <code class="directive">LanguagePriority</code> sets the precedence
      of language variants for the case where the client does not
      express a preference, when handling a MultiViews request. The list
      of <em>MIME-lang</em> are in order of decreasing preference.
      Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>LanguagePriority en fr de</code></td></tr></table></blockquote>
  
      <p>For a request for <code>foo.html</code>, where
      <code>foo.html.fr</code> and <code>foo.html.de</code> both
      existed, but the browser did not express a language preference,
      then <code>foo.html.fr</code> would be returned.</p>
  
      <p>Note that this directive only has an effect if a 'best'
      language cannot be determined by any other means or the <a href="#forcelanguagepriority" class="directive"><code class="directive">ForceLanguagePriority</code></a> directive
      is not <code>None</code>. Correctly implemented HTTP/1.1 requests
      will mean this directive has no effect.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_proxy.html.en
  
  Index: mod_proxy.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_proxy- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_proxy</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>HTTP/1.1 proxy/gateway server</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>proxy_module</td></tr></table></td></tr></table><h2>Summary</h2>
  <blockquote><table><tr><td bgcolor="#ffe5f5"><p align="center"><strong>Warning</strong></p>
  This document has been updated to take into account changes
  made in the 2.0 version of the Apache HTTP Server.  Some of the
  information may still be inaccurate, please use it
  with care.
  </td></tr></table></blockquote>
  
  <p>This module implements a proxy/gateway for Apache. It implements
  proxying capability for
  <code>FTP</code>,
  <code>CONNECT</code> (for SSL),
  <code>HTTP/0.9</code>,
  <code>HTTP/1.0</code>, and
  <code>HTTP/1.1</code>.
  The module can be configured to connect to other proxy modules for these
  and other protocols.</p>
  
  <p>This module was experimental in Apache 1.1.x. Improvements and bugfixes
  were made in Apache v1.2.x and Apache v1.3.x, then the module underwent a major
  overhaul for Apache v2.0. The protocol support was upgraded to HTTP/1.1,
  and filter support was enabled.</p>
  
  <p>Please note that the <strong>caching</strong> function present in
  mod_proxy up to Apache v1.3.x has been <strong>removed</strong> from
  mod_proxy and will be incorporated into a new module, mod_cache.</p>
  
  <blockquote><table><tr><td bgcolor="#ffe5f5"><p>Do not enable proxying with <a href="#proxyrequests" class="directive"><code class="directive">ProxyRequests</code></a> until you have 
  <a href="#access">secured your server</a>.  Open proxy servers are
  dangerous both to your network and to the Internet at large.</p></td></tr></table></blockquote>
  
  
  <h2>Directives</h2><ul><li><a href="#allowconnect">AllowCONNECT</a></li><li><a href="#noproxy">NoProxy</a></li><li><a href="#proxyblock">ProxyBlock</a></li><li><a href="#proxydomain">ProxyDomain</a></li><li><a href="#proxyerroroverride">ProxyErrorOverride</a></li><li><a href="#proxymaxforwards">ProxyMaxForwards</a></li><li><a href="#proxypass">ProxyPass</a></li><li><a href="#proxypassreverse">ProxyPassReverse</a></li><li><a href="#proxypreservehost">ProxyPreserveHost</a></li><li><a href="#proxyreceivebuffersize">ProxyReceiveBufferSize</a></li><li><a href="#proxyremote">ProxyRemote</a></li><li><a href="#proxyrequests">ProxyRequests</a></li><li><a href="#proxytimeout">ProxyTimeout</a></li><li><a href="#proxyvia">ProxyVia</a></li></ul><h2><a name="configs">Common configuration topics</a></h2>
  
  <ul>
  <li><a href="#forwardreverse">Forward and Reverse Proxies</a></li>
  <li><a href="#access">Controlling access to your proxy</a></li>
  <li><a href="#shortname">Using Netscape hostname shortcuts</a></li>
  <li><a href="#mimetypes">Why doesn't file type <em>xxx</em> download via FTP?</a></li>
  <li><a href="#type">How can I force an FTP ASCII download of File <em>xxx</em>?</a></li>
  <li><a href="#percent2fhack">How can I access FTP files outside of my home directory?</a></li>
  <li><a href="#ftppass">How can I hide the FTP cleartext password in my browser's URL line?</a></li>
  <li><a href="#startup">Why does Apache start more slowly when using the
          proxy module?</a></li>
  
  <li><a href="#intranet">What other functions are useful for an intranet proxy server?</a></li>
  </ul>
  
  <h3><a name="forwardreverse">Forward and Reverse Proxies</a></h3>
  
  <p>Apache can be configured in both a <em>forward</em> and <em>reverse</em>
  proxy configuration.</p>
  
  <p>A <em>forward proxy</em> is an intermediate system that enables a browser to connect to a
  remote network to which it normally does not have access. A forward proxy
  can also be used to cache data, reducing load on the networks between the
  forward proxy and the remote webserver.</p>
  
  <p>Apache's mod_proxy can be figured to behave like a forward proxy
  using the <a href="#proxyremote" class="directive"><code class="directive">ProxyRemote</code></a>
  directive. In addition, caching of data can be achieved by configuring
  Apache <code><a href="mod_cache.html">mod_cache</a></code>. Other dedicated forward proxy
  packages include <a href="http://www.squid.org">Squid</a>.</p>
  
  <p>A <em>reverse proxy</em> is a webserver system that is capable of serving webpages
  sourced from other webservers - in addition to webpages on disk or generated
  dynamically by CGI - making these pages look like they originated at the
  reverse proxy.</p>
  
  <p>When configured with the mod_cache module the reverse
  proxy can act as a cache for slower backend webservers. The reverse proxy
  can also enable advanced URL strategies and management techniques, allowing
  webpages served using different webserver systems or architectures to
  coexist inside the same URL space. Reverse proxy systems are also ideal for
  implementing centralised logging websites with many or diverse website
  backends. Complex multi-tier webserver systems can be constructed using an
  Apache mod_proxy frontend and any number of backend webservers.</p>
  
  <p>The reverse proxy is configured using the
  <a href="#proxypass" class="directive"><code class="directive">ProxyPass</code></a> and <a href="#proxypassreverse" class="directive"><code class="directive">ProxyPassReverse</code></a> directives. Caching can be
  enabled using mod_cache as with the forward proxy.</p>
  
  
  
  <h3><a name="access">Controlling access to your proxy</a></h3>
  
  
  
  <p>You can control who can access your proxy via the normal <a href="core.html#directory" class="directive"><code class="directive">&lt;Directory&gt;</code></a>
  control block using the following example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  &lt;Directory proxy:*&gt;<br>
  Order Deny,Allow<br>
  Deny from all<br>
  Allow from 192.168.0<br>
  &lt;/Directory&gt;
  </code></td></tr></table></blockquote>
  
  <p>A <a href="core.html#files" class="directive"><code class="directive">&lt;Files&gt;</code></a> block
  will also work, and is the only method known to work for all possible
  URLs in Apache versions earlier than 1.2b10.</p>
  
  <p>When configuring a reverse proxy, access control takes on the
  attributes of the normal server <a href="core.html#directory" class="directive"><code class="directive">&lt;directory&gt;</code></a> configuration.</p>
  
  
  
  
  
  
  <h3><a name="mimetypes">Why doesn't file type <em>xxx</em>
  download via FTP?</a></h3>
  
  <p>You probably don't have that particular file type defined as
  <em>application/octet-stream</em> in your proxy's mime.types configuration
  file. A useful line can be</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  application/octet-stream        bin dms lha lzh exe class tgz taz
  </code></td></tr></table></blockquote>
  
  
  <h3><a name="type">How can I force an FTP ASCII download of
  File <em>xxx</em>?</a></h3>
  
  <p>In the rare situation where you must download a specific file using the FTP
  <strong>ASCII</strong> transfer method (while the default transfer is in
  <strong>binary</strong> mode), you can override mod_proxy's default by
  suffixing the request with <code>;type=a</code> to force an ASCII transfer.
  (FTP Directory listings are always executed in ASCII mode, however.)</p>
  
  
  <h3><a name="percent2fhck">How can I access FTP files outside
  of my home directory?</a></h3>
  
  <p>
  An FTP URI is interpreted relative to the home directory of the user
  who is logging in. Alas, to reach higher directory levels you cannot
  use /../, as the dots are interpreted by the browser and not actually
  sent to the FTP server. To address this problem, the so called "Squid
  %2f hack" was implemented in the Apache FTP proxy; it is is a solution
  which is also used by other popular proxy servers like the <a href="http://www.squid-cache.org/">Squid Proxy Cache</a>.  By
  prepending /%2f to the path of your request, you can make such a proxy
  change the FTP starting directory to / (instead of the home
  directory). </p> 
  
  <p><strong>Example:</strong> To retrieve the file
  <code>/etc/motd</code>, you would use the URL</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>ftp://<em>user@host</em>/%2f/etc/motd</code></td></tr></table></blockquote>
  
  
  <h3><a name="ftppass">How can I hide the FTP cleartext password
  in my browser's URL line?</a></h3>
  
  <p>
  To log in to an FTP server by username and password, Apache
  uses different strategies.
  In absense of a user name and password in the URL altogether,
  Apache sends an anomymous login to the FTP server, i.e.,</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  user: anonymous<br>
  password: apache_proxy@
  </code></td></tr></table></blockquote>
  <p>This works for all popular FTP servers which are configured for
  anonymous access.</p>
  
  <p>For a personal login with a specific username, you can embed
  the user name into the URL, like in:
  <code>ftp://<em>username@host</em>/myfile</code>. If the FTP server
  asks for a password when given this username (which it should),
  then Apache will reply with a [401 Authorization required] response,
  which causes the Browser to pop up the username/password dialog.
  Upon entering the password, the connection attempt is retried,
  and if successful, the requested resource is presented.
  The advantage of this procedure is that your browser does not
  display the password in cleartext (which it would if you had used
  <code>ftp://<em>username:password@host</em>/myfile</code> in
  the first place).</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note</strong></p>
  The password which is transmitted in such a way
  is not encrypted on its way. It travels between your browser and
  the Apache proxy server in a base64-encoded cleartext string, and
  between the Apache proxy and the FTP server as plaintext. You should
  therefore think twice before accessing your FTP server via HTTP
  (or before accessing your personal files via FTP at all!) When
  using unsecure channels, an eavesdropper might intercept your
  password on its way.
  </td></tr></table></blockquote>
  
  
  <h3><a name="startup">Why does Apache start more slowly when
  using the proxy module?</a></h3>
  
  <p>If you're using the <a href="#proxyblock" class="directive"><code class="directive">ProxyBlock</code></a>
  directive, hostnames' IP addresses are looked up and cached during
  startup for later match test. This may take a few seconds (or more)
  depending on the speed with which the hostname lookups occur.</p>
  
  
  
  
  <h3><a name="intranet">What other functions are useful for an
  intranet proxy server?</a></h3>
  
  <p>An Apache proxy server situated in an intranet needs to forward
  external requests through the company's firewall. However, when it has
  to access resources within the intranet, it can bypass the firewall
  when accessing hosts. The <a href="#noproxy" class="directive"><code class="directive">NoProxy</code></a> directive is useful for
  specifying which hosts belong to the intranet and should be accessed
  directly.</p>
  
  <p>Users within an intranet tend to omit the local domain name from their
  WWW requests, thus requesting "http://somehost/" instead of
  "http://somehost.my.dom.ain/". Some commercial proxy servers let them get
  away with this and simply serve the request, implying a configured
  local domain. When the <a href="#proxydomain" class="directive"><code class="directive">ProxyDomain</code></a> directive
  is used and the server is <a href="#proxyrequests">configured for
  proxy service</a>, Apache can return a redirect response and send the client
  to the correct, fully qualified, server address. This is the preferred method
  since the user's bookmark files will then contain fully qualified hosts.</p>
  
  
  <hr/><h2><a name="AllowCONNECT">AllowCONNECT</a> <a name="allowconnect">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AllowCONNECT <em>port</em> [<em>port</em>] ...</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AllowCONNECT 443 563</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  <p>The <code class="directive">AllowCONNECT</code> directive specifies a list
  of port numbers to which the proxy <code>CONNECT</code> method may
  connect.  Today's browsers use this method when a <em>https</em>
  connection is requested and proxy tunneling over <em>http</em> is in
  effect.<br> By default, only the default https port (443) and the
  default snews port (563) are enabled. Use the
  <code class="directive">AllowCONNECT</code> directive to overrride this default and
  allow connections to the listed ports only.</p>
  <hr/><h2><a name="NoProxy">NoProxy</a> <a name="noproxy">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>NoProxy 
   <em>Domain</em>|
   <em>SubNet</em>|
   <em>IpAddr</em>| 
   <em>Hostname</em>
  [<em>Domain</em>| 
   <em>SubNet</em>|
   <em>IpAddr</em>| 
   <em>Hostname</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  <p>This directive is only useful for Apache proxy servers within
  intranets.  The <code class="directive">NoProxy</code> directive specifies a
  list of subnets, IP addresses, hosts and/or domains, separated by
  spaces. A request to a host which matches one or more of these is
  always served directly, without forwarding to the configured
  <a href="#proxyremote" class="directive"><code class="directive">ProxyRemote</code></a> proxy server(s).</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
    ProxyRemote  *  http://firewall.mycompany.com:81<br>
    NoProxy         .mycompany.com 192.168.112.0/21 
  </code></td></tr></table></blockquote>
  
  <p>The arguments to the NoProxy directive are one of the following type list:</p>
     <dl>
      
      <dt><a name="domain">
      <em>Domain</em></a></dt>
      <dd>A <em>Domain</em> is a partially qualified DNS domain name, preceded
          by a period.
          It represents a list of hosts which logically belong to the same DNS
          domain or zone (<em>i.e.</em>, the suffixes of the hostnames are all ending in 
          <em>Domain</em>).<br>
  		Examples: <code>.com</code>   <code>.apache.org.</code><br>
          To distinguish <em>Domain</em>s from <a href="#hostname"><em>Hostname</em></a>s (both
          syntactically and semantically; a DNS domain can have a DNS A record,
          too!), <em>Domain</em>s are always written
          with a leading period.<br>
          Note: Domain name comparisons are done without regard to the case,
          and <em>Domain</em>s are always assumed to be anchored in the root 
          of the DNS tree, therefore two domains <code>.MyDomain.com</code> and
          <code>.mydomain.com.</code> (note the trailing period) are
          considered equal. Since a domain comparison does not involve a DNS
  	lookup, it is much more efficient than subnet comparison.</dd>
  
      
      <dt><a name="subnet">
      <em>SubNet</em></a></dt>
      <dd>A <em>SubNet</em> is a partially qualified internet address in
          numeric (dotted quad) form, optionally followed by a slash and the
          netmask, specified as the number of significant bits in the
          <em>SubNet</em>. It is used to represent a subnet of hosts which can
          be reached over a common network interface. In the absence of the
          explicit net mask it is assumed that omitted (or zero valued)
          trailing digits specify the mask. (In this case, the netmask can
          only be multiples of 8 bits wide.)<br>
          Examples:
          <dl>
           <dt><code>192.168</code> or <code>192.168.0.0</code></dt>
           <dd>the subnet 192.168.0.0 with an implied netmask of 16 valid bits
               (sometimes used in the netmask form <code>255.255.0.0</code>)</dd>
           <dt><code>192.168.112.0/21</code></dt>
           <dd>the subnet <code>192.168.112.0/21</code> with a netmask of 21
               valid bits (also used in the form 255.255.248.0)</dd>
          </dl>
  		As a degenerate case, a <em>SubNet</em> with 32 valid bits is the
          equivalent to an <em>IPAddr</em>, while a <em>SubNet</em> with zero
          valid bits (<em>e.g.</em>, 0.0.0.0/0) is the same as the constant
          <em>_Default_</em>, matching any IP address. </dd>
  
      
      <dt><a name="ipaddr">
      <em>IPAddr</em></a></dt>
      <dd>A <em>IPAddr</em> represents a fully qualified internet address in
          numeric (dotted quad) form. Usually, this address represents a
          host, but there need not necessarily be a DNS domain name
          connected with the address.<br>
  		Example: 192.168.123.7<br>
          Note: An <em>IPAddr</em> does not need to be resolved by the DNS
  	system, so it can result in more effective apache performance.</dd>
  
      
      <dt><a name="hostname">
      <em>Hostname</em></a></dt>
      <dd>A <em>Hostname</em> is a fully qualified DNS domain name which can
          be resolved to one or more <a href="#ipaddr"><em>IPAddrs</em></a> via the DNS domain name service. 
          It represents a logical host (in contrast to
  	<a href="#domain"><em>Domain</em></a>s, see 
          above) and must be resolvable to at least one <a href="#ipaddr"><em>IPAddr</em></a> (or often to a list of hosts
  	with different <a href="#ipaddr"><em>IPAddr</em></a>'s).<br> 
  		Examples: <code>prep.ai.mit.edu</code>
                    <code>www.apache.org.</code><br>
          Note: In many situations, it is more effective to specify an
          <a href="#ipaddr"><em>IPAddr</em></a> in place of a
  	<em>Hostname</em> since a DNS lookup 
          can be avoided. Name resolution in Apache can take a remarkable deal
          of time when the connection to the name server uses a slow PPP
          link.<br>
          Note: <em>Hostname</em> comparisons are done without regard to the case,
          and <em>Hostname</em>s are always assumed to be anchored in the root
          of the DNS tree, therefore two hosts <code>WWW.MyDomain.com</code>
          and <code>www.mydomain.com.</code> (note the trailing period) are
          considered equal.</dd>
  </dl>
  <p><strong>See also </strong></p><ul><li><a href="../dns-caveats.html">DNS Issues</a></li></ul><hr/><h2><a name="ProxyBlock">ProxyBlock</a> <a name="proxyblock">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyBlock *|<em>word|host|domain</em>
  [<em>word|host|domain</em>] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  <p>The <code class="directive">ProxyBlock</code> directive specifies a list of
  words, hosts and/or domains, separated by spaces.  HTTP, HTTPS, and
  FTP document requests to sites whose names contain matched words,
  hosts or domains are <em>blocked</em> by the proxy server. The proxy
  module will also attempt to determine IP addresses of list items which
  may be hostnames during startup, and cache them for match test as
  well. Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
  </code></td></tr></table></blockquote>
  
  <p>'rocky.wotsamattau.edu' would also be matched if referenced by IP
  address.</p>
  
  <p>Note that 'wotsamattau' would also be sufficient to match
  'wotsamattau.edu'.</p>
  
  <p>Note also that</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  ProxyBlock *
  </code></td></tr></table></blockquote>
  
  <p>blocks connections to all sites.</p>
  
  <hr/><h2><a name="ProxyDomain">ProxyDomain</a> <a name="proxydomain">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyDomain <em>Domain</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  <p>This directive is only useful for Apache proxy servers within
  intranets.  The <code class="directive">ProxyDomain</code> directive specifies
  the default domain which the apache proxy server will belong to. If a
  request to a host without a domain name is encountered, a redirection
  response to the same host with the configured <em>Domain</em> appended
  will be generated.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
    ProxyRemote  *  http://firewall.mycompany.com:81<br>
    NoProxy         .mycompany.com 192.168.112.0/21<br>
    ProxyDomain     .mycompany.com
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="ProxyErrorOverride">ProxyErrorOverride</a> <a name="proxyerroroverride">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyErrorOverride On|Off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ProxyErrorOverride Off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in version 2.0 and later</td></tr></table></td></tr></table>
  <p>This directive is useful for reverse-proxy setups, where you want to 
  have a common look and feel on the error pages seen by the end user. 
  This also allows for included files (via mod_include's SSI) to get
  the error code and act accordingly (default behavior would display
  the error page of the proxied server, turning this on shows the SSI
  Error message).</p>
  <hr/><h2><a name="ProxyMaxForwards">ProxyMaxForwards</a> <a name="proxymaxforwards">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyMaxForwards <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ProxyMaxForwards 10</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in Apache 2.0 and later</td></tr></table></td></tr></table>
  <p>The <code class="directive">ProxyMaxForwards</code> directive specifies the
  maximum number of proxies through which a request may pass. This is
  set to prevent infinite proxy loops, or a DoS attack.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
    ProxyMaxForwards 10
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="ProxyPass">ProxyPass</a> <a name="proxypass">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyPass [<em>path</em>] !|<em>url</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  
  <p>This directive allows remote servers to be mapped into the space of
  the local server; the local server does not act as a proxy in the
  conventional sense, but appears to be a mirror of the remote
  server. <em>path</em> is the name of a local virtual path;
  <em>url</em> is a partial URL for the remote server.</p>
  
  <p>Suppose the local server has address <code>http://wibble.org/</code>; 
  then</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     ProxyPass /mirror/foo/ http://foo.com/
  </code></td></tr></table></blockquote>
  <p>will cause a local request for the
  &lt;<code>http://wibble.org/mirror/foo/bar</code>&gt; to be
  internally converted into a proxy request to
  &lt;<code>http://foo.com/bar</code>&gt;.</p>
  <p>
  The ! directive is useful in situations where you don't want to reverse-proxy
  a subdirectory. eg.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
          ProxyPass /mirror/foo/i !<br>
          ProxyPass /mirror/foo http://foo.com
  </code></td></tr></table></blockquote>
  <p>will proxy all requests to /mirror/foo to foo.com EXCEPT requests made to /mirror/foo/i</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">NB: order is important. you need to put the exclusions BEFORE the general proxypass directive</td></tr></table></blockquote>
  <hr/><h2><a name="ProxyPassReverse">ProxyPassReverse</a> <a name="proxypassreverse">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyPassReverse [<em>path</em>] <em>url</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  
  <p>This directive lets Apache adjust the URL in the <code>Location</code>,
  <code>Content-Location</code> and <code>URI</code> headers on
  HTTP redirect responses. This is essential when Apache is used as
  a reverse proxy to avoid by-passing the reverse proxy because of HTTP
  redirects on the backend servers which stay behind the reverse proxy.</p>
  
  <p><em>path</em> is the name of a local virtual path.<br>
  <em>url</em> is a partial URL for the remote server - the same way they are
  used for the <a href="#proxypass" class="directive"><code class="directive">ProxyPass</code></a> directive.</p>
  
  <p>
  Example:<br>
  Suppose the local server has address <code>http://wibble.org/</code>; then</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     ProxyPass         /mirror/foo/ http://foo.com/<br>
     ProxyPassReverse  /mirror/foo/ http://foo.com/
  </code></td></tr></table></blockquote>
  <p>will not only cause a local request for the
  &lt;<code>http://wibble.org/mirror/foo/bar</code>&gt; to be internally
  converted into a proxy request to &lt;<code>http://foo.com/bar</code>&gt; (the
  functionality <code>ProxyPass</code> provides here). It also takes care of
  redirects the server foo.com sends: when <code>http://foo.com/bar</code> is
  redirected by him to <code>http://foo.com/quux</code> Apache adjusts this to
  <code>http://wibble.org/mirror/foo/quux</code> before forwarding the HTTP
  redirect response to the client. </p>
  <p>
  Note that this <code class="directive">ProxyPassReverse</code> directive can
  also be used in conjunction with the proxy pass-through feature
  ("<code>RewriteRule ...  [P]</code>") from
  <code><a href="mod_rewrite.html">mod_rewrite</a></code> because its doesn't depend on a
  corresponding <a href="#proxypass" class="directive"><code class="directive">ProxyPass</code></a>
  directive.</p>
  <hr/><h2><a name="ProxyPreserveHost">ProxyPreserveHost</a> <a name="proxypreservehost">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyPreserveHost on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ProxyPreserveHost Off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in
  Apache 2.0.31 and later.</td></tr></table></td></tr></table>
  <p>When enabled, this option will pass the Host: line from the
  incoming request to the proxied host, instead of the hostname
  specified in the proxypass line.
  </p>
  <p>This option should normally be turned 'off'.</p>
  <hr/><h2><a name="ProxyReceiveBufferSize">ProxyReceiveBufferSize</a> <a name="proxyreceivebuffersize">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyReceiveBufferSize <em>bytes</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  <p>The <code class="directive">ProxyReceiveBufferSize</code> directive
  specifies an explicit network buffer size for outgoing HTTP and FTP
  connections, for increased throughput.  It has to be greater than 512
  or set to 0 to indicate that the system's default buffer size should
  be used.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
    ProxyReceiveBufferSize 2048
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="ProxyRemote">ProxyRemote</a> <a name="proxyremote">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyRemote <em>match remote-server</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  <p>This defines remote proxies to this proxy. <em>match</em> is either the
  name of a URL-scheme that the remote server supports, or a partial URL
  for which the remote server should be used, or '*' to indicate the
  server should be contacted for all requests. <em>remote-server</em> is a
  partial URL for the remote server. Syntax:</p>
  
  <pre>
    remote-server = protocol://hostname[:port]
  </pre>
  
  <p><em>protocol</em> is the protocol that should be used to communicate
  with the remote server; only "http" is supported by this module.</p>
  
  <p>
  Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000<br>
    ProxyRemote * http://cleversite.com<br>
    ProxyRemote ftp http://ftpproxy.mydomain.com:8080
  </code></td></tr></table></blockquote>
  
  <p>In the last example, the proxy will forward FTP requests, encapsulated
  as yet another HTTP proxy request, to another proxy which can handle
  them.</p>
  
  <p>This option also supports reverse proxy configuration - a backend
  webserver can be embedded within a virtualhost URL space even if that
  server is hidden by another forward proxy.</p>
  <hr/><h2><a name="ProxyRequests">ProxyRequests</a> <a name="proxyrequests">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyRequests on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ProxyRequests Off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  <p>This allows or prevents Apache from functioning as a forward proxy
  server. (Setting ProxyRequests to 'off' does not disable use of the 
  <a href="#proxypass" class="directive"><code class="directive">ProxyPass</code></a> directive.)</p>
  
  <p>In a typical reverse proxy configuration, this option should be set to
  'off'.</p>
  
  <blockquote><table><tr><td bgcolor="#ffe5f5"><p>Do not enable proxying with <a href="#proxyrequests" class="directive"><code class="directive">ProxyRequests</code></a> until you have 
  <a href="#access">secured your server</a>.  Open proxy servers are
  dangerous both to your network and to the Internet at large.</p></td></tr></table></blockquote>
  
  <hr/><h2><a name="ProxyTimeout">ProxyTimeout</a> <a name="proxytimeout">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyTimeout <em>seconds</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ProxyTimeout 300</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Available in
  Apache 2.0.31 and later</td></tr></table></td></tr></table>
  <p>This directive allows a user to specifiy a timeout on proxy requests.
  This is usefull when you have a slow/buggy appserver which hangs,
  and you would rather just return a timeout and fail gracefully instead
  of waiting however long it takes the server to return
  </p>
  <hr/><h2><a name="ProxyVia">ProxyVia</a> <a name="proxyvia">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ProxyVia on|off|full|block</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ProxyVia off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_proxy</td></tr></table></td></tr></table>
  <p>This directive controls the use of the <code>Via:</code> HTTP
  header by the proxy. Its intended use is to control the flow of of
  proxy requests along a chain of proxy servers.  See RFC2068 (HTTP/1.1)
  for an explanation of <code>Via:</code> header lines.</p>
  
  <ul> <li>If set
  to <em>off</em>, which is the default, no special processing is
  performed. If a request or reply contains a <code>Via:</code> header,
  it is passed through unchanged.</li>
  
  <li>If set to <em>on</em>, each
  request and reply will get a <code>Via:</code> header line added for
  the current host.</li>
  
  <li>If set to <em>full</em>, each generated <code>Via:</code> header
  line will additionally have the Apache server version shown as a
  <code>Via:</code> comment field.</li>
  
  <li>If set to <em>block</em>, every
  proxy request will have all its <code>Via:</code> header lines
  removed. No new <code>Via:</code> header will be generated.</li>
  </ul>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_rewrite.html.en
  
  Index: mod_rewrite.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_rewrite- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_rewrite</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides a rule-based rewriting engine to rewrite requested
  URLs on the fly</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>rewrite_module</td></tr><tr><td align="left" valign="top"><a href="module-dict.html#Compatibility" class="help">Compatibility:</a></td><td><compatibility>Available in Apache 1.3 and later</compatibility></td></tr></table></td></tr></table><h2>Summary</h2>
        <blockquote>
              <em>``The great thing about mod_rewrite is it gives you
              all the configurability and flexibility of Sendmail.
              The downside to mod_rewrite is that it gives you all
              the configurability and flexibility of Sendmail.''</em><br>
  
              &nbsp;&nbsp;&nbsp;&nbsp;  -- Brian Behlendorf<br>
              &nbsp;&nbsp;&nbsp;&nbsp;   Apache Group
  
        </blockquote>
  
        <blockquote>
              <em>`` Despite the tons of examples and docs,
              mod_rewrite is voodoo. Damned cool voodoo, but still
              voodoo. ''</em> <br>
  
                &nbsp;&nbsp;&nbsp;&nbsp;-- Brian Moore<br>
                &nbsp;&nbsp;&nbsp;&nbsp; bem@news.cmc.net
  
            </blockquote>
  
  
        <p>Welcome to mod_rewrite, the Swiss Army Knife of URL
        manipulation!</p>
  
        <p>This module uses a rule-based rewriting engine (based on a
        regular-expression parser) to rewrite requested URLs on the
        fly. It supports an unlimited number of rules and an
        unlimited number of attached rule conditions for each rule to
        provide a really flexible and powerful URL manipulation
        mechanism. The URL manipulations can depend on various tests,
        for instance server variables, environment variables, HTTP
        headers, time stamps and even external database lookups in
        various formats can be used to achieve a really granular URL
        matching.</p>
  
        <p>This module operates on the full URLs (including the
        path-info part) both in per-server context
        (<code>httpd.conf</code>) and per-directory context
        (<code>.htaccess</code>) and can even generate query-string
        parts on result. The rewritten result can lead to internal
        sub-processing, external request redirection or even to an
        internal proxy throughput.</p>
  
        <p>But all this functionality and flexibility has its
        drawback: complexity. So don't expect to understand this
        entire module in just one day.</p>
  
        <p>This module was invented and originally written in April
        1996 and gifted exclusively to the The Apache Group in July 1997
        by</p>
  
        <blockquote>
          <a href="http://www.engelschall.com/"><code>Ralf S.
          Engelschall</code></a><br>
           <a href="mailto:rse@engelschall.com"><code>rse@engelschall.com</code></a><br>
           <a href="http://www.engelschall.com/"><code>www.engelschall.com</code></a>
        </blockquote>
  <h2>Directives</h2><ul><li><a href="#rewritebase">RewriteBase</a></li><li><a href="#rewritecond">RewriteCond</a></li><li><a href="#rewriteengine">RewriteEngine</a></li><li><a href="#rewritelock">RewriteLock</a></li><li><a href="#rewritelog">RewriteLog</a></li><li><a href="#rewriteloglevel">RewriteLogLevel</a></li><li><a href="#rewritemap">RewriteMap</a></li><li><a href="#rewriteoptions">RewriteOptions</a></li><li><a href="#rewriterule">RewriteRule</a></li></ul><h2><a name="Internal">Interal Processing</a></h2>
  
        <p>The internal processing of this module is very complex but
        needs to be explained once even to the average user to avoid
        common mistakes and to let you exploit its full
        functionality.</p>
  
  <h3><a name="InternalAPI">API Phases</a></h3>
  
        <p>First you have to understand that when Apache processes a
        HTTP request it does this in phases. A hook for each of these
        phases is provided by the Apache API. Mod_rewrite uses two of
        these hooks: the URL-to-filename translation hook which is
        used after the HTTP request has been read but before any
        authorization starts and the Fixup hook which is triggered
        after the authorization phases and after the per-directory
        config files (<code>.htaccess</code>) have been read, but
        before the content handler is activated.</p>
  
        <p>So, after a request comes in and Apache has determined the
        corresponding server (or virtual server) the rewriting engine
        starts processing of all mod_rewrite directives from the
        per-server configuration in the URL-to-filename phase. A few
        steps later when the final data directories are found, the
        per-directory configuration directives of mod_rewrite are
        triggered in the Fixup phase. In both situations mod_rewrite
        rewrites URLs either to new URLs or to filenames, although
        there is no obvious distinction between them. This is a usage
        of the API which was not intended to be this way when the API
        was designed, but as of Apache 1.x this is the only way
        mod_rewrite can operate. To make this point more clear
        remember the following two points:</p>
  
        <ol>
          <li>Although mod_rewrite rewrites URLs to URLs, URLs to
          filenames and even filenames to filenames, the API
          currently provides only a URL-to-filename hook. In Apache
          2.0 the two missing hooks will be added to make the
          processing more clear. But this point has no drawbacks for
          the user, it is just a fact which should be remembered:
          Apache does more in the URL-to-filename hook than the API
          intends for it.</li>
  
          <li>
            Unbelievably mod_rewrite provides URL manipulations in
            per-directory context, <em>i.e.</em>, within
            <code>.htaccess</code> files, although these are reached
            a very long time after the URLs have been translated to
            filenames. It has to be this way because
            <code>.htaccess</code> files live in the filesystem, so
            processing has already reached this stage. In other
            words: According to the API phases at this time it is too
            late for any URL manipulations. To overcome this chicken
            and egg problem mod_rewrite uses a trick: When you
            manipulate a URL/filename in per-directory context
            mod_rewrite first rewrites the filename back to its
            corresponding URL (which is usually impossible, but see
            the <code>RewriteBase</code> directive below for the
            trick to achieve this) and then initiates a new internal
            sub-request with the new URL. This restarts processing of
            the API phases. 
  
            <p>Again mod_rewrite tries hard to make this complicated
            step totally transparent to the user, but you should
            remember here: While URL manipulations in per-server
            context are really fast and efficient, per-directory
            rewrites are slow and inefficient due to this chicken and
            egg problem. But on the other hand this is the only way
            mod_rewrite can provide (locally restricted) URL
            manipulations to the average user.</p>
          </li>
        </ol>
  
        <p>Don't forget these two points!</p>
  
  
  <h3><a name="InternalRuleset">Ruleset Processing</a></h3>
   
        <p>Now when mod_rewrite is triggered in these two API phases, it
        reads the configured rulesets from its configuration
        structure (which itself was either created on startup for
        per-server context or during the directory walk of the Apache
        kernel for per-directory context). Then the URL rewriting
        engine is started with the contained ruleset (one or more
        rules together with their conditions). The operation of the
        URL rewriting engine itself is exactly the same for both
        configuration contexts. Only the final result processing is
        different. </p>
  
        <p>The order of rules in the ruleset is important because the
        rewriting engine processes them in a special (and not very
        obvious) order. The rule is this: The rewriting engine loops
        through the ruleset rule by rule (<a href="#rewriterule" class="directive"><code class="directive">RewriteRule</code></a> directives) and
        when a particular rule matches it optionally loops through
        existing corresponding conditions (<code>RewriteCond</code>
        directives). For historical reasons the conditions are given
        first, and so the control flow is a little bit long-winded. See
        Figure 1 for more details.</p>
  <h3/>
        <img src="../images/mod_rewrite_fig1.gif" border="1" width="428" height="385" alt="[Needs graphics capability to display]">
        <p><strong>Figure 1:</strong>The control flow through the rewriting ruleset</p>
  
        <p>As you can see, first the URL is matched against the
        <em>Pattern</em> of each rule. When it fails mod_rewrite
        immediately stops processing this rule and continues with the
        next rule. If the <em>Pattern</em> matches, mod_rewrite looks
        for corresponding rule conditions. If none are present, it
        just substitutes the URL with a new value which is
        constructed from the string <em>Substitution</em> and goes on
        with its rule-looping. But if conditions exist, it starts an
        inner loop for processing them in the order that they are
        listed. For conditions the logic is different: we don't match
        a pattern against the current URL. Instead we first create a
        string <em>TestString</em> by expanding variables,
        back-references, map lookups, <em>etc.</em> and then we try
        to match <em>CondPattern</em> against it. If the pattern
        doesn't match, the complete set of conditions and the
        corresponding rule fails. If the pattern matches, then the
        next condition is processed until no more conditions are
        available. If all conditions match, processing is continued
        with the substitution of the URL with
        <em>Substitution</em>.</p>
  
  
  
  <h3><a name="quoting">Quoting Special Characters</a></h3>
  
        <p>As of Apache 1.3.20, special characters in
        <em>TestString</em> and <em>Substitution</em> strings can be
        escaped (that is, treated as normal characters without their
        usual special meaning) by prefixing them with a slosh ('\')
        character. In other words, you can include an actual
        dollar-sign character in a <em>Substitution</em> string by
        using '<code>\$</code>'; this keeps mod_rewrite from trying
        to treat it as a backreference.</p>
  
  
  <h3><a name="InternalBackRefs">Regex Back-Reference Availability</a></h3>
  
        <p>One important thing here has to be remembered: Whenever you
        use parentheses in <em>Pattern</em> or in one of the
        <em>CondPattern</em>, back-references are internally created
        which can be used with the strings <code>$N</code> and
        <code>%N</code> (see below). These are available for creating
        the strings <em>Substitution</em> and <em>TestString</em>.
        Figure 2 shows to which locations the back-references are
        transfered for expansion.</p>
  
  <h3/>
        <img src="../images/mod_rewrite_fig2.gif" border="1" width="381" height="179" alt="[Needs graphics capability to display]">
        <p><strong>Figure 2:</strong> The back-reference flow through a rule.</p>
  
        <p>We know this was a crash course on mod_rewrite's internal
        processing. But you will benefit from this knowledge when
        reading the following documentation of the available
        directives.</p>
  
  
  <h2><a name="EnvVar">Environment Variables</a></h2>
  
        <p>This module keeps track of two additional (non-standard)
        CGI/SSI environment variables named <code>SCRIPT_URL</code>
        and <code>SCRIPT_URI</code>. These contain the
        <em>logical</em> Web-view to the current resource, while the
        standard CGI/SSI variables <code>SCRIPT_NAME</code> and
        <code>SCRIPT_FILENAME</code> contain the <em>physical</em>
        System-view. </p>
  
        <p>Notice: These variables hold the URI/URL <em>as they were
        initially requested</em>, <em>i.e.</em>, <em>before</em> any
        rewriting. This is important because the rewriting process is
        primarily used to rewrite logical URLs to physical
        pathnames.</p>
  
        <p><strong>Example:</strong></p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  SCRIPT_NAME=/sw/lib/w3s/tree/global/u/rse/.www/index.html
  SCRIPT_FILENAME=/u/rse/.www/index.html
  SCRIPT_URL=/u/rse/
  SCRIPT_URI=http://en1.engelschall.com/u/rse/
  </pre>
  </code></td></tr></table></blockquote>
  
  <h2><a name="Solutions">Practical Solutions</a></h2>
  
        <p>We also have an <a href="../misc/rewriteguide.html">URL
        Rewriting Guide</a> available, which provides a collection of
        practical solutions for URL-based problems. There you can
        find real-life rulesets and additional information about
        mod_rewrite.</p>
  <hr/><h2><a name="RewriteBase">RewriteBase</a> <a name="rewritebase">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the base URL for per-directory rewrites</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RewriteBase <em>URL-path</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>See usage for information.</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_rewrite</td></tr></table></td></tr></table>
        <p>The <code class="directive">RewriteBase</code> directive explicitly
        sets the base URL for per-directory rewrites. As you will see
        below, <a href="#rewriterule" class="directive"><code class="directive">RewriteRule</code></a>
        can be used in per-directory config files
        (<code>.htaccess</code>). There it will act locally,
        <em>i.e.</em>, the local directory prefix is stripped at this
        stage of processing and your rewriting rules act only on the
        remainder. At the end it is automatically added back to the
        path. The default setting is; <code class="directive">RewriteBase</code> <em>physical-directory-path</em></p>
  
        <p>When a substitution occurs for a new URL, this module has
        to re-inject the URL into the server processing. To be able
        to do this it needs to know what the corresponding URL-prefix
        or URL-base is. By default this prefix is the corresponding
        filepath itself. <strong>But at most websites URLs are NOT
        directly related to physical filename paths, so this
        assumption will usually be wrong!</strong> There you have to
        use the <code>RewriteBase</code> directive to specify the
        correct URL-prefix.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"> If your webserver's URLs are <strong>not</strong> directly
  related to physical file paths, you have to use
  <code class="directive">RewriteBase</code> in every <code>.htaccess</code>
  files where you want to use <a href="#rewriterule" class="directive"><code class="directive">RewriteRule</code></a> directives.
  </td></tr></table></blockquote>
  
          <p> For example, assume the following per-directory config file:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  #
  #  /abc/def/.htaccess -- per-dir config file for directory /abc/def
  #  Remember: /abc/def is the physical path of /xyz, <em>i.e.</em>, the server
  #            has a 'Alias /xyz /abc/def' directive <em>e.g.</em>
  #
  
  RewriteEngine On
  
  #  let the server know that we were reached via /xyz and not
  #  via the physical path prefix /abc/def
  RewriteBase   /xyz
  
  #  now the rewriting rules
  RewriteRule   ^oldstuff\.html$  newstuff.html
  </pre>
  </code></td></tr></table></blockquote>
  
          <p>In the above example, a request to
          <code>/xyz/oldstuff.html</code> gets correctly rewritten to
          the physical file <code>/abc/def/newstuff.html</code>.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>For Apache Hackers</strong></p>
  <p>The following list gives detailed information about
                the internal processing steps:</p>
  <pre>
  Request:
    /xyz/oldstuff.html
  
  Internal Processing:
    /xyz/oldstuff.html     -&gt; /abc/def/oldstuff.html  (per-server Alias)
    /abc/def/oldstuff.html -&gt; /abc/def/newstuff.html  (per-dir    RewriteRule)
    /abc/def/newstuff.html -&gt; /xyz/newstuff.html      (per-dir    RewriteBase)
    /xyz/newstuff.html     -&gt; /abc/def/newstuff.html  (per-server Alias)
  
  Result:
    /abc/def/newstuff.html
  </pre>
                <p>This seems very complicated but is
                the correct Apache internal processing, because the
                per-directory rewriting comes too late in the
                process. So, when it occurs the (rewritten) request
                has to be re-injected into the Apache kernel! BUT:
                While this seems like a serious overhead, it really
                isn't, because this re-injection happens fully
                internally to the Apache server and the same
                procedure is used by many other operations inside
                Apache. So, you can be sure the design and
                implementation is correct.</p>
  </td></tr></table></blockquote>
  
  <hr/><h2><a name="RewriteCond">RewriteCond</a> <a name="rewritecond">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Defines a condition under which rewriting will take place
  </td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td> RewriteCond
        <em>TestString</em> <em>CondPattern</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>None</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_rewrite</td></tr></table></td></tr></table>
        <p>The <code class="directive">RewriteCond</code> directive defines a
        rule condition. Precede a <a href="#rewriterule" class="directive"><code class="directive">RewriteRule</code></a> directive with one
        or more <code class="directive">RewriteCond</code> directives. The following
        rewriting rule is only used if its pattern matches the current
        state of the URI <strong>and</strong> if these additional
        conditions apply too.</p>
  
        <p><em>TestString</em> is a string which can contains the
        following expanded constructs in addition to plain text:</p>
  
        <ul>
          <li>
            <strong>RewriteRule backreferences</strong>: These are
            backreferences of the form 
  
            <blockquote>
              <strong><code>$N</code></strong>
            </blockquote>
            (0 &lt;= N &lt;= 9) which provide access to the grouped
            parts (parenthesis!) of the pattern from the
            corresponding <code>RewriteRule</code> directive (the one
            following the current bunch of <code>RewriteCond</code>
            directives).
          </li>
  
          <li>
            <strong>RewriteCond backreferences</strong>: These are
            backreferences of the form 
  
            <blockquote>
              <strong><code>%N</code></strong>
            </blockquote>
            (1 &lt;= N &lt;= 9) which provide access to the grouped
            parts (parentheses!) of the pattern from the last matched
            <code>RewriteCond</code> directive in the current bunch
            of conditions.
          </li>
  
          <li>
            <strong>RewriteMap expansions</strong>: These are
            expansions of the form 
  
            <blockquote>
              <strong><code>${mapname:key|default}</code></strong>
            </blockquote>
            See <a href="#mapfunc">the documentation for
            RewriteMap</a> for more details.
          </li>
  
          <li>
            <strong>Server-Variables</strong>: These are variables of
            the form 
  
            <blockquote>
              <strong><code>%{</code> <em>NAME_OF_VARIABLE</em>
              <code>}</code></strong>
            </blockquote>
            where <em>NAME_OF_VARIABLE</em> can be a string taken
            from the following list: 
  
            <table bgcolor="#F0F0F0" cellspacing="0" cellpadding="5">
              <tr>
                <td>
                  <strong>HTTP headers:</strong> 
  
                  <p>HTTP_USER_AGENT<br>
                   HTTP_REFERER<br>
                   HTTP_COOKIE<br>
                   HTTP_FORWARDED<br>
                   HTTP_HOST<br>
                   HTTP_PROXY_CONNECTION<br>
                   HTTP_ACCEPT<br>
                  </p>
                </td>
  
                <td>
                  <strong>connection &amp; request:</strong> 
  
                  <p>REMOTE_ADDR<br>
                   REMOTE_HOST<br>
                   REMOTE_USER<br>
                   REMOTE_IDENT<br>
                   REQUEST_METHOD<br>
                   SCRIPT_FILENAME<br>
                   PATH_INFO<br>
                   QUERY_STRING<br>
                   AUTH_TYPE<br>
                  </p>
                </td>
              </tr>
  
              <tr>
                <td>
                  <strong>server internals:</strong> 
  
                  <p>DOCUMENT_ROOT<br>
                   SERVER_ADMIN<br>
                   SERVER_NAME<br>
                   SERVER_ADDR<br>
                   SERVER_PORT<br>
                   SERVER_PROTOCOL<br>
                   SERVER_SOFTWARE<br>
                  </p>
                </td>
  
                <td>
                  <strong>system stuff:</strong> 
  
                  <p>TIME_YEAR<br>
                   TIME_MON<br>
                   TIME_DAY<br>
                   TIME_HOUR<br>
                   TIME_MIN<br>
                   TIME_SEC<br>
                   TIME_WDAY<br>
                   TIME<br>
                  </p>
                </td>
  
                <td>
                  <strong>specials:</strong> 
  
                  <p>API_VERSION<br>
                   THE_REQUEST<br>
                   REQUEST_URI<br>
                   REQUEST_FILENAME<br>
                   IS_SUBREQ<br>
                  </p>
                </td>
              </tr>
            </table>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">
                  <p>These variables all
                  correspond to the similarly named HTTP
                  MIME-headers, C variables of the Apache server or
                  <code>struct tm</code> fields of the Unix system.
                  Most are documented elsewhere in the Manual or in
                  the CGI specification. Those that are special to
                  mod_rewrite include:</p>
  
                  <dl>
                    <dt><code>IS_SUBREQ</code></dt>
  
                    <dd>Will contain the text "true" if the request
                    currently being processed is a sub-request,
                    "false" otherwise. Sub-requests may be generated
                    by modules that need to resolve additional files
                    or URIs in order to complete their tasks.</dd>
  
                    <dt><code>API_VERSION</code></dt>
  
                    <dd>This is the version of the Apache module API
                    (the internal interface between server and
                    module) in the current httpd build, as defined in
                    include/ap_mmn.h. The module API version
                    corresponds to the version of Apache in use (in
                    the release version of Apache 1.3.14, for
                    instance, it is 19990320:10), but is mainly of
                    interest to module authors.</dd>
  
                    <dt><code>THE_REQUEST</code></dt>
  
                    <dd>The full HTTP request line sent by the
                    browser to the server (e.g., "<code>GET
                    /index.html HTTP/1.1</code>"). This does not
                    include any additional headers sent by the
                    browser.</dd>
  
                    <dt><code>REQUEST_URI</code></dt>
  
                    <dd>The resource requested in the HTTP request
                    line. (In the example above, this would be
                    "/index.html".)</dd>
  
                    <dt><code>REQUEST_FILENAME</code></dt>
  
                    <dd>The full local filesystem path to the file or
                    script matching the request.</dd>
                  </dl>
  </td></tr></table></blockquote>
          </li>
        </ul>
  
        <p>Special Notes:</p>
  
        <ol>
          <li>The variables SCRIPT_FILENAME and REQUEST_FILENAME
          contain the same value, <em>i.e.</em>, the value of the
          <code>filename</code> field of the internal
          <code>request_rec</code> structure of the Apache server.
          The first name is just the commonly known CGI variable name
          while the second is the consistent counterpart to
          REQUEST_URI (which contains the value of the
          <code>uri</code> field of <code>request_rec</code>).</li>
  
          <li>There is the special format:
          <code>%{ENV:variable}</code> where <em>variable</em> can be
          any environment variable. This is looked-up via internal
          Apache structures and (if not found there) via
          <code>getenv()</code> from the Apache server process.</li>
  
          <li>There is the special format:
          <code>%{HTTP:header}</code> where <em>header</em> can be
          any HTTP MIME-header name. This is looked-up from the HTTP
          request. Example: <code>%{HTTP:Proxy-Connection}</code> is
          the value of the HTTP header
          ``<code>Proxy-Connection:</code>''.</li>
  
          <li>There is the special format
          <code>%{LA-U:variable}</code> for look-aheads which perform
          an internal (URL-based) sub-request to determine the final
          value of <em>variable</em>. Use this when you want to use a
          variable for rewriting which is actually set later in an
          API phase and thus is not available at the current stage.
          For instance when you want to rewrite according to the
          <code>REMOTE_USER</code> variable from within the
          per-server context (<code>httpd.conf</code> file) you have
          to use <code>%{LA-U:REMOTE_USER}</code> because this
          variable is set by the authorization phases which come
          <em>after</em> the URL translation phase where mod_rewrite
          operates. On the other hand, because mod_rewrite implements
          its per-directory context (<code>.htaccess</code> file) via
          the Fixup phase of the API and because the authorization
          phases come <em>before</em> this phase, you just can use
          <code>%{REMOTE_USER}</code> there.</li>
  
          <li>There is the special format:
          <code>%{LA-F:variable}</code> which performs an internal
          (filename-based) sub-request to determine the final value
          of <em>variable</em>. Most of the time this is the same as
          LA-U above.</li>
        </ol>
  
        <p><em>CondPattern</em> is the condition pattern,
        <em>i.e.</em>, a regular expression which is applied to the
        current instance of the <em>TestString</em>, <em>i.e.</em>,
        <em>TestString</em> is evaluated and then matched against
        <em>CondPattern</em>.</p>
  
        <p><strong>Remember:</strong> <em>CondPattern</em> is a
        standard <em>Extended Regular Expression</em> with some
        additions:</p>
  
        <ol>
          <li>You can prefix the pattern string with a
          '<code>!</code>' character (exclamation mark) to specify a
          <strong>non</strong>-matching pattern.</li>
  
          <li>
            There are some special variants of <em>CondPatterns</em>.
            Instead of real regular expression strings you can also
            use one of the following: 
  
            <ul>
              <li>'<strong>&lt;CondPattern</strong>' (is lexically
              lower)<br>
               Treats the <em>CondPattern</em> as a plain string and
              compares it lexically to <em>TestString</em>. True if
              <em>TestString</em> is lexically lower than
              <em>CondPattern</em>.</li>
  
              <li>'<strong>&gt;CondPattern</strong>' (is lexically
              greater)<br>
               Treats the <em>CondPattern</em> as a plain string and
              compares it lexically to <em>TestString</em>. True if
              <em>TestString</em> is lexically greater than
              <em>CondPattern</em>.</li>
  
              <li>'<strong>=CondPattern</strong>' (is lexically
              equal)<br>
               Treats the <em>CondPattern</em> as a plain string and
              compares it lexically to <em>TestString</em>. True if
              <em>TestString</em> is lexically equal to
              <em>CondPattern</em>, i.e the two strings are exactly
              equal (character by character). If <em>CondPattern</em>
              is just <code>""</code> (two quotation marks) this
              compares <em>TestString</em> to the empty string.</li>
  
              <li>'<strong>-d</strong>' (is
              <strong>d</strong>irectory)<br>
               Treats the <em>TestString</em> as a pathname and tests
              if it exists and is a directory.</li>
  
              <li>'<strong>-f</strong>' (is regular
              <strong>f</strong>ile)<br>
               Treats the <em>TestString</em> as a pathname and tests
              if it exists and is a regular file.</li>
  
              <li>'<strong>-s</strong>' (is regular file with
              <strong>s</strong>ize)<br>
               Treats the <em>TestString</em> as a pathname and tests
              if it exists and is a regular file with size greater
              than zero.</li>
  
              <li>'<strong>-l</strong>' (is symbolic
              <strong>l</strong>ink)<br>
               Treats the <em>TestString</em> as a pathname and tests
              if it exists and is a symbolic link.</li>
  
              <li>'<strong>-F</strong>' (is existing file via
              subrequest)<br>
               Checks if <em>TestString</em> is a valid file and
              accessible via all the server's currently-configured
              access controls for that path. This uses an internal
              subrequest to determine the check, so use it with care
              because it decreases your servers performance!</li>
  
              <li>'<strong>-U</strong>' (is existing URL via
              subrequest)<br>
               Checks if <em>TestString</em> is a valid URL and
              accessible via all the server's currently-configured
              access controls for that path. This uses an internal
              subrequest to determine the check, so use it with care
              because it decreases your server's performance!</li>
            </ul>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Notice</strong></p>
                All of these tests can
                also be prefixed by an exclamation mark ('!') to
                negate their meaning.
  </td></tr></table></blockquote>
          </li>
        </ol>
  
        <p>Additionally you can set special flags for
        <em>CondPattern</em> by appending</p>
  
        <blockquote>
          <strong><code>[</code><em>flags</em><code>]</code></strong>
        </blockquote>
  
        <p>as the third argument to the <code>RewriteCond</code>
        directive. <em>Flags</em> is a comma-separated list of the
        following flags:</p>
  
        <ul>
          <li>'<strong><code>nocase|NC</code></strong>'
          (<strong>n</strong>o <strong>c</strong>ase)<br>
           This makes the test case-insensitive, <em>i.e.</em>, there
          is no difference between 'A-Z' and 'a-z' both in the
          expanded <em>TestString</em> and the <em>CondPattern</em>.
          This flag is effective only for comparisons between
          <em>TestString</em> and <em>CondPattern</em>. It has no
          effect on filesystem and subrequest checks.</li>
  
          <li>
            '<strong><code>ornext|OR</code></strong>'
            (<strong>or</strong> next condition)<br>
             Use this to combine rule conditions with a local OR
            instead of the implicit AND. Typical example: 
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  RewriteCond %{REMOTE_HOST}  ^host1.*  [OR]
  RewriteCond %{REMOTE_HOST}  ^host2.*  [OR]
  RewriteCond %{REMOTE_HOST}  ^host3.*
  RewriteRule ...some special stuff for any of these hosts...
  </pre>
  </code></td></tr></table></blockquote>
  
            Without this flag you would have to write the cond/rule
            three times.
          </li>
        </ul>
  
        <p><strong>Example:</strong></p>
  
         <p>To rewrite the Homepage of a site according to the
          ``<code>User-Agent:</code>'' header of the request, you can
          use the following: </p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
  RewriteRule  ^/$                 /homepage.max.html  [L]
  
  RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
  RewriteRule  ^/$                 /homepage.min.html  [L]
  
  RewriteRule  ^/$                 /homepage.std.html  [L]
  </pre>
  </code></td></tr></table></blockquote>
  
          <p>Interpretation: If you use Netscape Navigator as your
          browser (which identifies itself as 'Mozilla'), then you
          get the max homepage, which includes Frames, <em>etc.</em>
          If you use the Lynx browser (which is Terminal-based), then
          you get the min homepage, which contains no images, no
          tables, <em>etc.</em> If you use any other browser you get
          the standard homepage.</p>
  
  <hr/><h2><a name="RewriteEngine">RewriteEngine</a> <a name="rewriteengine">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enables or disables runtime rewriting engine</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RewriteEngine on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>RewriteEngine off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_rewrite</td></tr></table></td></tr></table>       
  
        <p>The <code class="directive">RewriteEngine</code> directive enables or
        disables the runtime rewriting engine. If it is set to
        <code>off</code> this module does no runtime processing at
        all. It does not even update the <code>SCRIPT_URx</code>
        environment variables.</p>
  
        <p>Use this directive to disable the module instead of
        commenting out all the <a href="#rewriterule" class="directive"><code class="directive">RewriteRule</code></a> directives!</p>
  
        <p>Note that, by default, rewrite configurations are not
        inherited. This means that you need to have a
        <code>RewriteEngine on</code> directive for each virtual host
        in which you wish to use it.</p>
  <hr/><h2><a name="RewriteLock">RewriteLock</a> <a name="rewritelock">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the name of the lock file used for RewriteMap
  synchronization</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RewriteLock <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>None</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_rewrite</td></tr></table></td></tr></table>
        <p>This directive sets the filename for a synchronization
        lockfile which mod_rewrite needs to communicate with <a href="#rewritemap" class="directive"><code class="directive">RewriteMap</code></a>
        <em>programs</em>. Set this lockfile to a local path (not on a
        NFS-mounted device) when you want to use a rewriting
        map-program. It is not required for other types of rewriting
        maps.</p>
  <hr/><h2><a name="RewriteLog">RewriteLog</a> <a name="rewritelog">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the name of the file used for logging rewrite engine
  processing</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RewriteLog <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_rewrite</td></tr></table></td></tr></table>
        <p>The <code class="directive">RewriteLog</code> directive sets the name
        of the file to which the server logs any rewriting actions it
        performs. If the name does not begin with a slash
        ('<code>/</code>') then it is assumed to be relative to the
        <em>Server Root</em>. The directive should occur only once per
        server config.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">    To disable the logging of
            rewriting actions it is not recommended to set
            <em>Filename</em> to <code>/dev/null</code>, because
            although the rewriting engine does not then output to a
            logfile it still creates the logfile output internally.
            <strong>This will slow down the server with no advantage
            to the administrator!</strong> To disable logging either
            remove or comment out the <code class="directive">RewriteLog</code>
            directive or use <code>RewriteLogLevel 0</code>!
  </td></tr></table></blockquote>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Security</strong></p>
  
  See the <a href="../misc/security_tips.html">Apache Security Tips</a>
  document for details on why your security could be compromised if the
  directory where logfiles are stored is writable by anyone other than
  the user that starts the server.
  </td></tr></table></blockquote>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  RewriteLog "/usr/local/var/apache/logs/rewrite.log"
  </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="RewriteLogLevel">RewriteLogLevel</a> <a name="rewriteloglevel">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the verbosity of the log file used by the rewrite
  engine</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RewriteLogLevel <em>Level</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>RerwiteLogLevel 0</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_rewrite</td></tr></table></td></tr></table>
        <p>The <code class="directive">RewriteLogLevel</code> directive sets the
        verbosity level of the rewriting logfile. The default level 0
        means no logging, while 9 or more means that practically all
        actions are logged.</p>
  
        <p>To disable the logging of rewriting actions simply set
        <em>Level</em> to 0. This disables all rewrite action
        logs.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"> Using a high value for
            <em>Level</em> will slow down your Apache server
            dramatically! Use the rewriting logfile at a
            <em>Level</em> greater than 2 only for debugging!
  </td></tr></table></blockquote>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  RewriteLogLevel 3
  </code></td></tr></table></blockquote>
  
  <hr/><h2><a name="RewriteMap">RewriteMap</a> <a name="rewritemap">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Defines a mapping function for key-lookup</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RewriteMap <em>MapName</em> <em>MapType</em>:<em>MapSource</em>
  </td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>None</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_rewrite</td></tr></table></td></tr></table>
        <p>The <code class="directive">RewriteMap</code> directive defines a
        <em>Rewriting Map</em> which can be used inside rule
        substitution strings by the mapping-functions to
        insert/substitute fields through a key lookup. The source of
        this lookup can be of various types.</p>
  
        <p>The <a id="mapfunc" name="mapfunc"><em>MapName</em></a> is
        the name of the map and will be used to specify a
        mapping-function for the substitution strings of a rewriting
        rule via one of the following constructs:</p>
  
        <blockquote>
          <strong><code>${</code> <em>MapName</em> <code>:</code>
          <em>LookupKey</em> <code>}</code><br>
           <code>${</code> <em>MapName</em> <code>:</code>
          <em>LookupKey</em> <code>|</code> <em>DefaultValue</em>
          <code>}</code></strong>
        </blockquote>
  
        <p>When such a construct occurs the map <em>MapName</em> is
        consulted and the key <em>LookupKey</em> is looked-up. If the
        key is found, the map-function construct is substituted by
        <em>SubstValue</em>. If the key is not found then it is
        substituted by <em>DefaultValue</em> or by the empty string
        if no <em>DefaultValue</em> was specified.</p>
  
        <p>The following combinations for <em>MapType</em> and
        <em>MapSource</em> can be used:</p>
  
        <ul>
          <li>
            <strong>Standard Plain Text</strong><br>
             MapType: <code>txt</code>, MapSource: Unix filesystem
            path to valid regular file 
  
            <p>This is the standard rewriting map feature where the
            <em>MapSource</em> is a plain ASCII file containing
            either blank lines, comment lines (starting with a '#'
            character) or pairs like the following - one per
            line.</p>
  
            <blockquote>
              <strong><em>MatchingKey</em>
              <em>SubstValue</em></strong>
            </blockquote>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  <pre>
  ##
  ##  map.txt -- rewriting map
  ##
  
  Ralf.S.Engelschall    rse   # Bastard Operator From Hell
  Mr.Joe.Average        joe   # Mr. Average
  </pre>
  </code></td></tr></table></blockquote>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  RewriteMap real-to-user txt:/path/to/file/map.txt
  </code></td></tr></table></blockquote>
          </li>
  
          <li>
            <strong>Randomized Plain Text</strong><br>
             MapType: <code>rnd</code>, MapSource: Unix filesystem
            path to valid regular file 
  
            <p>This is identical to the Standard Plain Text variant
            above but with a special post-processing feature: After
            looking up a value it is parsed according to contained
            ``<code>|</code>'' characters which have the meaning of
            ``or''. In other words they indicate a set of
            alternatives from which the actual returned value is
            chosen randomly. Although this sounds crazy and useless,
            it was actually designed for load balancing in a reverse
            proxy situation where the looked up values are server
            names. Example:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  ##
  ##  map.txt -- rewriting map
  ##
  
  static   www1|www2|www3|www4
  dynamic  www5|www6
  </pre>
  </code></td></tr></table></blockquote>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  RewriteMap servers rnd:/path/to/file/map.txt
  </code></td></tr></table></blockquote>
          </li>
  
          <li>
            <strong>Hash File</strong><br>
             MapType: <code>dbm</code>, MapSource: Unix filesystem
            path to valid regular file 
  
            <p>Here the source is a binary NDBM format file
            containing the same contents as a <em>Plain Text</em>
            format file, but in a special representation which is
            optimized for really fast lookups. You can create such a
            file with any NDBM tool or with the following Perl
            script:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  #!/path/to/bin/perl
  ##
  ##  txt2dbm -- convert txt map to dbm format
  ##
  
  use NDBM_File;
  use Fcntl;
  
  ($txtmap, $dbmmap) = @ARGV;
  
  open(TXT, "&lt;$txtmap") or die "Couldn't open $txtmap!\n";
  tie (%DB, 'NDBM_File', $dbmmap,O_RDWR|O_TRUNC|O_CREAT, 0644) or die "Couldn't create $dbmmap!\n";
  
  while (&lt;TXT&gt;) {
    next if (/^\s*#/ or /^\s*$/);
    $DB{$1} = $2 if (/^\s*(\S+)\s+(\S+)/);
  }
  
  untie %DB;
  close(TXT);
  </pre>
  </code></td></tr></table></blockquote>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  $ txt2dbm map.txt map.db
  </code></td></tr></table></blockquote>
          </li>
  
          <li>
            <strong>Internal Function</strong><br>
             MapType: <code>int</code>, MapSource: Internal Apache
            function 
  
            <p>Here the source is an internal Apache function.
            Currently you cannot create your own, but the following
            functions already exists:</p>
  
            <ul>
              <li><strong>toupper</strong>:<br>
               Converts the looked up key to all upper case.</li>
  
              <li><strong>tolower</strong>:<br>
               Converts the looked up key to all lower case.</li>
  
              <li><strong>escape</strong>:<br>
               Translates special characters in the looked up key to
              hex-encodings.</li>
  
              <li><strong>unescape</strong>:<br>
               Translates hex-encodings in the looked up key back to
              special characters.</li>
            </ul>
          </li>
  
          <li>
            <strong>External Rewriting Program</strong><br>
             MapType: <code>prg</code>, MapSource: Unix filesystem
            path to valid regular file 
  
            <p>Here the source is a program, not a map file. To
            create it you can use the language of your choice, but
            the result has to be a executable (<em>i.e.</em>, either
            object-code or a script with the magic cookie trick
            '<code>#!/path/to/interpreter</code>' as the first
            line).</p>
  
            <p>This program is started once at startup of the Apache
            servers and then communicates with the rewriting engine
            over its <code>stdin</code> and <code>stdout</code>
            file-handles. For each map-function lookup it will
            receive the key to lookup as a newline-terminated string
            on <code>stdin</code>. It then has to give back the
            looked-up value as a newline-terminated string on
            <code>stdout</code> or the four-character string
            ``<code>NULL</code>'' if it fails (<em>i.e.</em>, there
            is no corresponding value for the given key). A trivial
            program which will implement a 1:1 map (<em>i.e.</em>,
            key == value) could be:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  #!/usr/bin/perl
  $| = 1;
  while (&lt;STDIN&gt;) {
      # ...put here any transformations or lookups...
      print $_;
  }
  </pre>
  </code></td></tr></table></blockquote>
  
            <p>But be very careful:</p>
  
            <ol>
              <li>``<em>Keep it simple, stupid</em>'' (KISS), because
              if this program hangs it will hang the Apache server
              when the rule occurs.</li>
  
              <li>Avoid one common mistake: never do buffered I/O on
              <code>stdout</code>! This will cause a deadloop! Hence
              the ``<code>$|=1</code>'' in the above example...</li>
  
              <li>Use the <a href="#rewritelock" class="directive"><code class="directive">RewriteLock</code></a> directive to
              define a lockfile mod_rewrite can use to synchronize the
              communication to the program. By default no such
              synchronization takes place.</li>
            </ol>
          </li>
        </ul>
        <p>The <code class="directive">RewriteMap</code> directive can occur more than
        once. For each mapping-function use one
        <code class="directive">RewriteMap</code> directive to declare its rewriting
        mapfile. While you cannot <strong>declare</strong> a map in
        per-directory context it is of course possible to
        <strong>use</strong> this map in per-directory context. </p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note</strong></p> For plain text and DBM format files the
  looked-up keys are cached in-core until the <code>mtime</code> of the
  mapfile changes or the server does a restart. This way you can have
  map-functions in rules which are used for <strong>every</strong>
  request.  This is no problem, because the external lookup only happens
  once!
  </td></tr></table></blockquote>
  
  <hr/><h2><a name="RewriteOptions">RewriteOptions</a> <a name="rewriteoptions">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets some special options for the rewrite engine</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RewriteOptions <em>Options</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>None</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_rewrite</td></tr></table></td></tr></table>
  
        <p>The <code class="directive">RewriteOptions</code> directive sets some
        special options for the current per-server or per-directory
        configuration. The <em>Option</em> strings can be one of the
        following:</p>
  
        <ul>
          <li>'<strong><code>inherit</code></strong>'<br>
           This forces the current configuration to inherit the
          configuration of the parent. In per-virtual-server context
          this means that the maps, conditions and rules of the main
          server are inherited. In per-directory context this means
          that conditions and rules of the parent directory's
          <code>.htaccess</code> configuration are inherited.</li>
        </ul>
  <hr/><h2><a name="RewriteRule">RewriteRule</a> <a name="rewriterule">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Defines rules for the rewriting engine</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>RewriteRule
        <em>Pattern</em> <em>Substitution</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>None</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_rewrite</td></tr></table></td></tr></table>
        <p>The <code class="directive">RewriteRule</code> directive is the real
        rewriting workhorse. The directive can occur more than once.
        Each directive then defines one single rewriting rule. The
        <strong>definition order</strong> of these rules is
        <strong>important</strong>, because this order is used when
        applying the rules at run-time.</p>
  
        <p><a id="patterns" name="patterns"><em>Pattern</em></a> can
        be (for Apache 1.1.x a System V8 and for Apache 1.2.x and
        later a POSIX) <a id="regexp" name="regexp">regular
        expression</a> which gets applied to the current URL. Here
        ``current'' means the value of the URL when this rule gets
        applied. This may not be the originally requested URL,
        because any number of rules may already have matched and made
        alterations to it.</p>
  
        <p>Some hints about the syntax of regular expressions:</p>
  
        <table bgcolor="#F0F0F0" cellspacing="0" cellpadding="5">
          <tr>
            <td>
  <pre>
  <strong>Text:</strong>
    <strong><code>.</code></strong>           Any single character
    <strong><code>[</code></strong>chars<strong><code>]</code></strong>     Character class: One  of chars
    <strong><code>[^</code></strong>chars<strong><code>]</code></strong>    Character class: None of chars
    text1<strong><code>|</code></strong>text2 Alternative: text1 or text2
  
  <strong>Quantifiers:</strong>
    <strong><code>?</code></strong>           0 or 1 of the preceding text
    <strong><code>*</code></strong>           0 or N of the preceding text (N &gt; 0)
    <strong><code>+</code></strong>           1 or N of the preceding text (N &gt; 1)
  
  <strong>Grouping:</strong>
    <strong><code>(</code></strong>text<strong><code>)</code></strong>      Grouping of text
                (either to set the borders of an alternative or
                for making backreferences where the <strong>N</strong>th group can 
                be used on the RHS of a RewriteRule with <code>$</code><strong>N</strong>)
  
  <strong>Anchors:</strong>
    <strong><code>^</code></strong>           Start of line anchor
    <strong><code>$</code></strong>           End   of line anchor
  
  <strong>Escaping:</strong>
    <strong><code>\</code></strong>char       escape that particular char
                (for instance to specify the chars "<code>.[]()</code>" <em>etc.</em>)
  </pre>
            </td>
          </tr>
        </table>
  
        <p>For more information about regular expressions either have
        a look at your local regex(3) manpage or its
        <code>src/regex/regex.3</code> copy in the Apache 1.3
        distribution. If you are interested in more detailed
        information about regular expressions and their variants
        (POSIX regex, Perl regex, <em>etc.</em>) have a look at the
        following dedicated book on this topic:</p>
  
        <blockquote>
          <em>Mastering Regular Expressions</em><br>
           Jeffrey E.F. Friedl<br>
           Nutshell Handbook Series<br>
           O'Reilly &amp; Associates, Inc. 1997<br>
           ISBN 1-56592-257-3<br>
        </blockquote>
  
        <p>Additionally in mod_rewrite the NOT character
        ('<code>!</code>') is a possible pattern prefix. This gives
        you the ability to negate a pattern; to say, for instance:
        ``<em>if the current URL does <strong>NOT</strong> match this
        pattern</em>''. This can be used for exceptional cases, where
        it is easier to match the negative pattern, or as a last
        default rule.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Notice</strong></p>
  When using the NOT character
            to negate a pattern you cannot have grouped wildcard
            parts in the pattern. This is impossible because when the
            pattern does NOT match, there are no contents for the
            groups. In consequence, if negated patterns are used, you
            cannot use <code>$N</code> in the substitution
            string!
  </td></tr></table></blockquote>
  
        <p><a id="rhs" name="rhs"><em>Substitution</em></a> of a
        rewriting rule is the string which is substituted for (or
        replaces) the original URL for which <em>Pattern</em>
        matched. Beside plain text you can use</p>
  
        <ol>
          <li>back-references <code>$N</code> to the RewriteRule
          pattern</li>
  
          <li>back-references <code>%N</code> to the last matched
          RewriteCond pattern</li>
  
          <li>server-variables as in rule condition test-strings
          (<code>%{VARNAME}</code>)</li>
  
          <li><a href="#mapfunc">mapping-function</a> calls
          (<code>${mapname:key|default}</code>)</li>
        </ol>
        <p>Back-references are <code>$</code><strong>N</strong>
        (<strong>N</strong>=0..9) identifiers which will be replaced
        by the contents of the <strong>N</strong>th group of the
        matched <em>Pattern</em>. The server-variables are the same
        as for the <em>TestString</em> of a <code>RewriteCond</code>
        directive. The mapping-functions come from the
        <code>RewriteMap</code> directive and are explained there.
        These three types of variables are expanded in the order of
        the above list. </p>
  
        <p>As already mentioned above, all the rewriting rules are
        applied to the <em>Substitution</em> (in the order of
        definition in the config file). The URL is <strong>completely
        replaced</strong> by the <em>Substitution</em> and the
        rewriting process goes on until there are no more rules
        unless explicitly terminated by a
        <code><strong>L</strong></code> flag - see below.</p>
  
        <p>There is a special substitution string named
        '<code>-</code>' which means: <strong>NO
        substitution</strong>! Sounds silly? No, it is useful to
        provide rewriting rules which <strong>only</strong> match
        some URLs but do no substitution, <em>e.g.</em>, in
        conjunction with the <strong>C</strong> (chain) flag to be
        able to have more than one pattern to be applied before a
        substitution occurs.</p>
  
        <p>One more note: You can even create URLs in the
        substitution string containing a query string part. Just use
        a question mark inside the substitution string to indicate
        that the following stuff should be re-injected into the
        QUERY_STRING. When you want to erase an existing query
        string, end the substitution string with just the question
        mark.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note</strong></p>
  There is a special feature:
            When you prefix a substitution field with
            <code>http://</code><em>thishost</em>[<em>:thisport</em>]
            then <strong>mod_rewrite</strong> automatically strips it
            out. This auto-reduction on implicit external redirect
            URLs is a useful and important feature when used in
            combination with a mapping-function which generates the
            hostname part. Have a look at the first example in the
            example section below to understand this.
  </td></tr></table></blockquote>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Remember</strong></p>
   An unconditional external
            redirect to your own server will not work with the prefix
            <code>http://thishost</code> because of this feature. To
            achieve such a self-redirect, you have to use the
            <strong>R</strong>-flag (see below).
  </td></tr></table></blockquote>
  
        <p>Additionally you can set special flags for
        <em>Substitution</em> by appending</p>
  
        <blockquote>
          <strong><code>[</code><em>flags</em><code>]</code></strong>
        </blockquote>
        <p>
        as the third argument to the <code>RewriteRule</code>
        directive. <em>Flags</em> is a comma-separated list of the
        following flags: </p>
  
        <ul>
          <li>
            '<strong><code>redirect|R</code>
            [=<em>code</em>]</strong>' (force <a id="redirect" name="redirect"><strong>r</strong>edirect</a>)<br>
             Prefix <em>Substitution</em> with
            <code>http://thishost[:thisport]/</code> (which makes the
            new URL a URI) to force a external redirection. If no
            <em>code</em> is given a HTTP response of 302 (MOVED
            TEMPORARILY) is used. If you want to use other response
            codes in the range 300-400 just specify them as a number
            or use one of the following symbolic names:
            <code>temp</code> (default), <code>permanent</code>,
            <code>seeother</code>. Use it for rules which should
            canonicalize the URL and give it back to the client,
            <em>e.g.</em>, translate ``<code>/~</code>'' into
            ``<code>/u/</code>'' or always append a slash to
            <code>/u/</code><em>user</em>, etc.<br>
             
  
            <p><strong>Note:</strong> When you use this flag, make
            sure that the substitution field is a valid URL! If not,
            you are redirecting to an invalid location! And remember
            that this flag itself only prefixes the URL with
            <code>http://thishost[:thisport]/</code>, rewriting
            continues. Usually you also want to stop and do the
            redirection immediately. To stop the rewriting you also
            have to provide the 'L' flag.</p>
          </li>
  
          <li>'<strong><code>forbidden|F</code></strong>' (force URL
          to be <strong>f</strong>orbidden)<br>
           This forces the current URL to be forbidden,
          <em>i.e.</em>, it immediately sends back a HTTP response of
          403 (FORBIDDEN). Use this flag in conjunction with
          appropriate RewriteConds to conditionally block some
          URLs.</li>
  
          <li>'<strong><code>gone|G</code></strong>' (force URL to be
          <strong>g</strong>one)<br>
           This forces the current URL to be gone, <em>i.e.</em>, it
          immediately sends back a HTTP response of 410 (GONE). Use
          this flag to mark pages which no longer exist as gone.</li>
  
          <li>
            '<strong><code>proxy|P</code></strong>' (force
            <strong>p</strong>roxy)<br>
             This flag forces the substitution part to be internally
            forced as a proxy request and immediately (<em>i.e.</em>,
            rewriting rule processing stops here) put through the <a href="mod_proxy.html">proxy module</a>. You have to make
            sure that the substitution string is a valid URI
            (<em>e.g.</em>, typically starting with
            <code>http://</code><em>hostname</em>) which can be
            handled by the Apache proxy module. If not you get an
            error from the proxy module. Use this flag to achieve a
            more powerful implementation of the <a href="mod_proxy.html#proxypass">ProxyPass</a> directive,
            to map some remote stuff into the namespace of the local
            server. 
  
            <p>Notice: To use this functionality make sure you have
            the proxy module compiled into your Apache server
            program. If you don't know please check whether
            <code>mod_proxy.c</code> is part of the ``<code>httpd
            -l</code>'' output. If yes, this functionality is
            available to mod_rewrite. If not, then you first have to
            rebuild the ``<code>httpd</code>'' program with mod_proxy
            enabled.</p>
          </li>
  
          <li>'<strong><code>last|L</code></strong>'
          (<strong>l</strong>ast rule)<br>
           Stop the rewriting process here and don't apply any more
          rewriting rules. This corresponds to the Perl
          <code>last</code> command or the <code>break</code> command
          from the C language. Use this flag to prevent the currently
          rewritten URL from being rewritten further by following
          rules. For example, use it to rewrite the root-path URL
          ('<code>/</code>') to a real one, <em>e.g.</em>,
          '<code>/e/www/</code>'.</li>
  
          <li>'<strong><code>next|N</code></strong>'
          (<strong>n</strong>ext round)<br>
           Re-run the rewriting process (starting again with the
          first rewriting rule). Here the URL to match is again not
          the original URL but the URL from the last rewriting rule.
          This corresponds to the Perl <code>next</code> command or
          the <code>continue</code> command from the C language. Use
          this flag to restart the rewriting process, <em>i.e.</em>,
          to immediately go to the top of the loop.<br>
           <strong>But be careful not to create an infinite
          loop!</strong></li>
  
          <li>'<strong><code>chain|C</code></strong>'
          (<strong>c</strong>hained with next rule)<br>
           This flag chains the current rule with the next rule
          (which itself can be chained with the following rule,
          <em>etc.</em>). This has the following effect: if a rule
          matches, then processing continues as usual, <em>i.e.</em>,
          the flag has no effect. If the rule does
          <strong>not</strong> match, then all following chained
          rules are skipped. For instance, use it to remove the
          ``<code>.www</code>'' part inside a per-directory rule set
          when you let an external redirect happen (where the
          ``<code>.www</code>'' part should not to occur!).</li>
  
          <li>
          '<strong><code>type|T</code></strong>=<em>MIME-type</em>'
          (force MIME <strong>t</strong>ype)<br>
           Force the MIME-type of the target file to be
          <em>MIME-type</em>. For instance, this can be used to
          simulate the <code>mod_alias</code> directive
          <code>ScriptAlias</code> which internally forces all files
          inside the mapped directory to have a MIME type of
          ``<code>application/x-httpd-cgi</code>''.</li>
  
          <li>
            '<strong><code>nosubreq|NS</code></strong>' (used only if
            <strong>n</strong>o internal
            <strong>s</strong>ub-request)<br>
             This flag forces the rewriting engine to skip a
            rewriting rule if the current request is an internal
            sub-request. For instance, sub-requests occur internally
            in Apache when <code>mod_include</code> tries to find out
            information about possible directory default files
            (<code>index.xxx</code>). On sub-requests it is not
            always useful and even sometimes causes a failure to if
            the complete set of rules are applied. Use this flag to
            exclude some rules.<br>
             
  
            <p>Use the following rule for your decision: whenever you
            prefix some URLs with CGI-scripts to force them to be
            processed by the CGI-script, the chance is high that you
            will run into problems (or even overhead) on
            sub-requests. In these cases, use this flag.</p>
          </li>
  
          <li>'<strong><code>nocase|NC</code></strong>'
          (<strong>n</strong>o <strong>c</strong>ase)<br>
           This makes the <em>Pattern</em> case-insensitive,
          <em>i.e.</em>, there is no difference between 'A-Z' and
          'a-z' when <em>Pattern</em> is matched against the current
          URL.</li>
  
          <li>'<strong><code>qsappend|QSA</code></strong>'
          (<strong>q</strong>uery <strong>s</strong>tring
          <strong>a</strong>ppend)<br>
           This flag forces the rewriting engine to append a query
          string part in the substitution string to the existing one
          instead of replacing it. Use this when you want to add more
          data to the query string via a rewrite rule.</li>
  
          <li>
            '<strong><code>noescape|NE</code></strong>'
            (<strong>n</strong>o URI <strong>e</strong>scaping of
            output)<br>
             This flag keeps mod_rewrite from applying the usual URI
            escaping rules to the result of a rewrite. Ordinarily,
            special characters (such as '%', '$', ';', and so on)
            will be escaped into their hexcode equivalents ('%25',
            '%24', and '%3B', respectively); this flag prevents this
            from being done. This allows percent symbols to appear in
            the output, as in 
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]
  </code></td></tr></table></blockquote>
  
            which would turn '<code>/foo/zed</code>' into a safe
            request for '<code>/bar?arg=P1=zed</code>'. 
          </li>
  
          <li>
            '<strong><code>passthrough|PT</code></strong>'
            (<strong>p</strong>ass <strong>t</strong>hrough to next
            handler)<br>
             This flag forces the rewriting engine to set the
            <code>uri</code> field of the internal
            <code>request_rec</code> structure to the value of the
            <code>filename</code> field. This flag is just a hack to
            be able to post-process the output of
            <code>RewriteRule</code> directives by
            <code>Alias</code>, <code>ScriptAlias</code>,
            <code>Redirect</code>, <em>etc.</em> directives from
            other URI-to-filename translators. A trivial example to
            show the semantics: If you want to rewrite
            <code>/abc</code> to <code>/def</code> via the rewriting
            engine of <code>mod_rewrite</code> and then
            <code>/def</code> to <code>/ghi</code> with
            <code>mod_alias</code>: 
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      RewriteRule ^/abc(.*)  /def$1 [PT]<br>
      Alias       /def       /ghi
  </code></td></tr></table></blockquote>
            If you omit the <code>PT</code> flag then
            <code>mod_rewrite</code> will do its job fine,
            <em>i.e.</em>, it rewrites <code>uri=/abc/...</code> to
            <code>filename=/def/...</code> as a full API-compliant
            URI-to-filename translator should do. Then
            <code>mod_alias</code> comes and tries to do a
            URI-to-filename transition which will not work. 
  
            <p>Note: <strong>You have to use this flag if you want to
            intermix directives of different modules which contain
            URL-to-filename translators</strong>. The typical example
            is the use of <code>mod_alias</code> and
            <code>mod_rewrite</code>..</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>For Apache hackers</strong></p>
                 If the current Apache API had a filename-to-filename
                hook additionally to the URI-to-filename hook then we
                wouldn't need this flag! But without such a hook this
                flag is the only solution. The Apache Group has
                discussed this problem and will add such a hook in
                Apache version 2.0.
  </td></tr></table></blockquote>
          </li>
  
          <li>'<strong><code>skip|S</code></strong>=<em>num</em>'
          (<strong>s</strong>kip next rule(s))<br>
           This flag forces the rewriting engine to skip the next
          <em>num</em> rules in sequence when the current rule
          matches. Use this to make pseudo if-then-else constructs:
          The last rule of the then-clause becomes
          <code>skip=N</code> where N is the number of rules in the
          else-clause. (This is <strong>not</strong> the same as the
          'chain|C' flag!)</li>
  
          <li>
          '<strong><code>env|E=</code></strong><em>VAR</em>:<em>VAL</em>'
          (set <strong>e</strong>nvironment variable)<br>
           This forces an environment variable named <em>VAR</em> to
          be set to the value <em>VAL</em>, where <em>VAL</em> can
          contain regexp backreferences <code>$N</code> and
          <code>%N</code> which will be expanded. You can use this
          flag more than once to set more than one variable. The
          variables can be later dereferenced in many situations, but
          usually from within XSSI (via <code>&lt;!--#echo
          var="VAR"--&gt;</code>) or CGI (<em>e.g.</em>
          <code>$ENV{'VAR'}</code>). Additionally you can dereference
          it in a following RewriteCond pattern via
          <code>%{ENV:VAR}</code>. Use this to strip but remember
          information from URLs.</li>
        </ul>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note</strong></p> Never forget that <em>Pattern</em> is
  applied to a complete URL in per-server configuration
  files. <strong>But in per-directory configuration files, the
  per-directory prefix (which always is the same for a specific
  directory!) is automatically <em>removed</em> for the pattern matching
  and automatically <em>added</em> after the substitution has been
  done.</strong> This feature is essential for many sorts of rewriting,
  because without this prefix stripping you have to match the parent
  directory which is not always possible.
  
              <p>There is one exception: If a substitution string
              starts with ``<code>http://</code>'' then the directory
              prefix will <strong>not</strong> be added and an
              external redirect or proxy throughput (if flag
              <strong>P</strong> is used!) is forced!</p>
  </td></tr></table></blockquote>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note</strong></p>
   To enable the rewriting engine
            for per-directory configuration files you need to set
            ``<code>RewriteEngine On</code>'' in these files
            <strong>and</strong> ``<code>Options
            FollowSymLinks</code>'' must be enabled. If your
            administrator has disabled override of
            <code>FollowSymLinks</code> for a user's directory, then
            you cannot use the rewriting engine. This restriction is
            needed for security reasons.
  </td></tr></table></blockquote>
  
        <p>Here are all possible substitution combinations and their
        meanings:</p>
  
        <p><strong>Inside per-server configuration
        (<code>httpd.conf</code>)<br>
         for request ``<code>GET
        /somepath/pathinfo</code>'':</strong><br>
        </p>
  
        <table bgcolor="#F0F0F0" cellspacing="0" cellpadding="5">
          <tr>
            <td>
  <pre>
  <strong>Given Rule</strong>                                      <strong>Resulting Substitution</strong>
  ----------------------------------------------  ----------------------------------
  ^/somepath(.*) otherpath$1                      not supported, because invalid!
  
  ^/somepath(.*) otherpath$1  [R]                 not supported, because invalid!
  
  ^/somepath(.*) otherpath$1  [P]                 not supported, because invalid!
  ----------------------------------------------  ----------------------------------
  ^/somepath(.*) /otherpath$1                     /otherpath/pathinfo
  
  ^/somepath(.*) /otherpath$1 [R]                 http://thishost/otherpath/pathinfo
                                                  via external redirection
  
  ^/somepath(.*) /otherpath$1 [P]                 not supported, because silly!
  ----------------------------------------------  ----------------------------------
  ^/somepath(.*) http://thishost/otherpath$1      /otherpath/pathinfo
  
  ^/somepath(.*) http://thishost/otherpath$1 [R]  http://thishost/otherpath/pathinfo
                                                  via external redirection
  
  ^/somepath(.*) http://thishost/otherpath$1 [P]  not supported, because silly!
  ----------------------------------------------  ----------------------------------
  ^/somepath(.*) http://otherhost/otherpath$1     http://otherhost/otherpath/pathinfo
                                                  via external redirection
  
  ^/somepath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo
                                                  via external redirection
                                                  (the [R] flag is redundant)
  
  ^/somepath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
                                                  via internal proxy
  </pre>
            </td>
          </tr>
        </table>
  
        <p><strong>Inside per-directory configuration for
        <code>/somepath</code><br>
         (<em>i.e.</em>, file <code>.htaccess</code> in dir
        <code>/physical/path/to/somepath</code> containing
        <code>RewriteBase /somepath</code>)<br>
         for request ``<code>GET
        /somepath/localpath/pathinfo</code>'':</strong><br> 
       </p>
  
        <table bgcolor="#F0F0F0" cellspacing="0" cellpadding="5">
          <tr>
            <td>
  <pre>
  <strong>Given Rule</strong>                                      <strong>Resulting Substitution</strong>
  ----------------------------------------------  ----------------------------------
  ^localpath(.*) otherpath$1                      /somepath/otherpath/pathinfo
  
  ^localpath(.*) otherpath$1  [R]                 http://thishost/somepath/otherpath/pathinfo
                                                  via external redirection
  
  ^localpath(.*) otherpath$1  [P]                 not supported, because silly!
  ----------------------------------------------  ----------------------------------
  ^localpath(.*) /otherpath$1                     /otherpath/pathinfo
  
  ^localpath(.*) /otherpath$1 [R]                 http://thishost/otherpath/pathinfo
                                                  via external redirection
  
  ^localpath(.*) /otherpath$1 [P]                 not supported, because silly!
  ----------------------------------------------  ----------------------------------
  ^localpath(.*) http://thishost/otherpath$1      /otherpath/pathinfo
  
  ^localpath(.*) http://thishost/otherpath$1 [R]  http://thishost/otherpath/pathinfo
                                                  via external redirection
  
  ^localpath(.*) http://thishost/otherpath$1 [P]  not supported, because silly!
  ----------------------------------------------  ----------------------------------
  ^localpath(.*) http://otherhost/otherpath$1     http://otherhost/otherpath/pathinfo
                                                  via external redirection
  
  ^localpath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo
                                                  via external redirection
                                                  (the [R] flag is redundant)
  
  ^localpath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
                                                  via internal proxy
  </pre>
            </td>
          </tr>
        </table>
  
        <p><strong>Example:</strong></p>
  
        <p>We want to rewrite URLs of the form </p>
  
          <blockquote>
            <code>/</code> <em>Language</em> <code>/~</code>
            <em>Realname</em> <code>/.../</code> <em>File</em>
          </blockquote>
  
          <p>into </p>
  
          <blockquote>
            <code>/u/</code> <em>Username</em> <code>/.../</code>
            <em>File</em> <code>.</code> <em>Language</em>
          </blockquote>
  
          <p>We take the rewrite mapfile from above and save it under
          <code>/path/to/file/map.txt</code>. Then we only have to
          add the following lines to the Apache server configuration
          file:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  RewriteLog   /path/to/file/rewrite.log
  RewriteMap   real-to-user               txt:/path/to/file/map.txt
  RewriteRule  ^/([^/]+)/~([^/]+)/(.*)$   /u/${real-to-user:$2|nobody}/$3.$1
  </pre>
     </code></td></tr></table></blockquote>
    <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_setenvif.html.en
  
  Index: mod_setenvif.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_setenvif- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_setenvif</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Allows the setting of environment variables based
  on characteristics of the request</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>setenvif_module</td></tr><tr><td align="left" valign="top"><a href="module-dict.html#Compatibility" class="help">Compatibility:</a></td><td><compatibility>Available in Apache 1.3 and later</compatibility></td></tr></table></td></tr></table><h2>Summary</h2>
  
      <p>The <code><a href="mod_setenvif.html">mod_setenvif</a></code> module allows you to set
      environment variables according to whether different aspects of
      the request match regular expressions you specify. These
      environment variables can be used by other parts of the server
      to make decisions about actions to be taken.</p>
  
      <p>The directives are considered in the order they appear in
      the configuration files. So more complex sequences can be used,
      such as this example, which sets <code>netscape</code> if the
      browser is mozilla but not MSIE.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
    BrowserMatch ^Mozilla netscape<br>
    BrowserMatch MSIE !netscape<br>
  </code></td></tr></table></blockquote>
  <h2>Directives</h2><ul><li><a href="#browsermatch">BrowserMatch</a></li><li><a href="#browsermatchnocase">BrowserMatchNoCase</a></li><li><a href="#setenvif">SetEnvIf</a></li><li><a href="#setenvifnocase">SetEnvIfNoCase</a></li></ul><p><strong>See also </strong></p><ul><li><a href="../env.html">Environment Variables in Apache</a></li></ul><hr/><h2><a name="BrowserMatch">BrowserMatch</a> <a name="browsermatch">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets environment variables conditional on HTTP User-Agent
  </td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>BrowserMatch <em>regex env-variable</em>[=<em>value</em>]
  [<em>env-variable</em>[=<em>value</em>]] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_setenvif</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Apache 1.2 and
      above (in Apache 1.2 this directive was found in the
      now-obsolete mod_browser module)</td></tr></table></td></tr></table>
      <p>The <code class="directive">BrowserMatch</code> directive defines
      environment variables based on the <code>User-Agent</code> HTTP
      request header field.  The first argument should be a POSIX.2
      extended regular expression (similar to an
      <code>egrep</code>-style regex). The rest of the arguments give
      the names of variables to set, and optionally values to which they
      should be set. These take the form of</p>
  
      <ol>
        <li><code><em>varname</em></code>, or</li>
  
        <li><code>!<em>varname</em></code>, or</li>
  
        <li><code><em>varname</em>=<em>value</em></code></li>
      </ol>
  
      <p>In the first form, the value will be set to "1". The second
      will remove the given variable if already defined, and the
      third will set the variable to the value given by
      <code><em>value</em></code>. If a <code>User-Agent</code>
      string matches more than one entry, they will be merged.
      Entries are processed in the order in which they appear, and
      later entries can override earlier ones.</p>
  
      <p>For example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      BrowserMatch ^Mozilla forms jpeg=yes browser=netscape<br>
      BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript<br>
      BrowserMatch MSIE !javascript<br>
  </code></td></tr></table></blockquote>
   
      <p>Note that the regular expression string is
      <strong>case-sensitive</strong>. For case-INsensitive matching,
      see the <a href="#browsermatchnocase" class="directive"><code class="directive">BrowserMatchNoCase</code></a>
      directive.</p>
  
      <p>The <code class="directive">BrowserMatch</code> and
      <code class="directive">BrowserMatchNoCase</code> directives are special cases of
      the <a href="#setenvif" class="directive"><code class="directive">SetEnvIf</code></a> and <a href="#setenvifnocase" class="directive"><code class="directive">SetEnvIfNoCase</code></a>
      directives. The following two lines have the same effect:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     BrowserMatchNoCase Robot is_a_robot<br>
     SetEnvIfNoCase User-Agent Robot is_a_robot<br>
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="BrowserMatchNoCase">BrowserMatchNoCase</a> <a name="browsermatchnocase">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets environment variables conditional on User-Agent without
  respect to case</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>BrowserMatchNoCase  <em>regex env-variable</em>[=<em>value</em>]
      [<em>env-variable</em>[=<em>value</em>]] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_setenvif</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Apache 1.2 and
      above (in Apache 1.2 this directive was found in the
      now-obsolete mod_browser module)</td></tr></table></td></tr></table>
  
      <p>The <code class="directive">BrowserMatchNoCase</code> directive is
      semantically identical to the <a href="#browsermatch" class="directive"><code class="directive">BrowserMatch</code></a> directive.
      However, it provides for case-insensitive matching. For
      example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      BrowserMatchNoCase mac platform=macintosh<br>
      BrowserMatchNoCase win platform=windows<br>
  </code></td></tr></table></blockquote>
  
      <p>The <code class="directive">BrowserMatch</code> and
      <code class="directive">BrowserMatchNoCase</code> directives are special cases of
      the <a href="#setenvif" class="directive"><code class="directive">SetEnvIf</code></a> and <a href="#setenvifnocase" class="directive"><code class="directive">SetEnvIfNoCase</code></a>
      directives. The following two lines have the same effect:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     BrowserMatchNoCase Robot is_a_robot<br>
     SetEnvIfNoCase User-Agent Robot is_a_robot<br>
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SetEnvIf">SetEnvIf</a> <a name="setenvif">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets environment variables based on attributes of the request
  </td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SetEnvIf <em>attribute
      regex env-variable</em>[=<em>value</em>]
      [<em>env-variable</em>[=<em>value</em>]] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_setenvif</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Apache 1.3 and
      above; the Request_Protocol keyword and environment-variable
      matching are only available with 1.3.7 and later</td></tr></table></td></tr></table>
      <p>The <code class="directive">SetEnvIf</code> directive defines environment
      variables based on attributes of the request. These attributes
      can be the values of various HTTP request header fields (see <a href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a>
      for more information about these), or of other aspects of the
      request, including the following:</p>
  
      <ul>
        <li><code>Remote_Host</code> - the hostname (if available) of
        the client making the request</li>
  
        <li><code>Remote_Addr</code> - the IP address of the client
        making the request</li>
  
        <li><code>Remote_User</code> - the authenticated username (if
        available)</li>
  
        <li><code>Request_Method</code> - the name of the method
        being used (<code>GET</code>, <code>POST</code>, <em>et
        cetera</em>)</li>
  
        <li><code>Request_Protocol</code> - the name and version of
        the protocol with which the request was made (<em>e.g.</em>,
        "HTTP/0.9", "HTTP/1.1", <em>etc.</em>)</li>
  
        <li><code>Request_URI</code> - the portion of the URL
        following the scheme and host portion</li>
      </ul>
  
      <p>Some of the more commonly used request header field names
      include <code>Host</code>, <code>User-Agent</code>, and
      <code>Referer</code>.</p>
  
      <p>If the <em>attribute</em> name doesn't match any of the
      special keywords, nor any of the request's header field names,
      it is tested as the name of an environment variable in the list
      of those associated with the request. This allows
      <code class="directive">SetEnvIf</code> directives to test against the result of
      prior matches.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">
        <strong>Only those environment variables defined by earlier
        <code>SetEnvIf[NoCase]</code> directives are available for
        testing in this manner. 'Earlier' means that they were
        defined at a broader scope (such as server-wide) or
        previously in the current directive's scope.</strong>
  </td></tr></table></blockquote>
  
      <p><em>attribute</em> may be a regular expression when used to
      match a request header. If <em>attribute</em> is a regular
      expression and it doesn't match any of the request's header
      names, then <em>attribute</em> is not tested against the
      request's environment variable list.</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example:</strong></p><code>
  
     SetEnvIf Request_URI "\.gif$" object_is_image=gif<br>
     SetEnvIf Request_URI "\.jpg$" object_is_image=jpg<br>
     SetEnvIf Request_URI "\.xbm$" object_is_image=xbm<br>
          :<br>
     SetEnvIf Referer www\.mydomain\.com intra_site_referral<br>
          :<br>
     SetEnvIf object_is_image xbm XBIT_PROCESSING=1<br>
          :<br>
     SetEnvIf ^TS*  ^[a-z].*  HAVE_TS<br>
  </code></td></tr></table></blockquote>
  
      <p>The first three will set the environment variable
      <code>object_is_image</code> if the request was for an image
      file, and the fourth sets <code>intra_site_referral</code> if
      the referring page was somewhere on the
      <code>www.mydomain.com</code> Web site.</p>
  
      <p>The last example will set environment variable
      <code>HAVE_TS</code> if the request contains any headers that
      begin with "TS" whose values begins with any character in the
      set [a-z].</p>
  <hr/><h2><a name="SetEnvIfNoCase">SetEnvIfNoCase</a> <a name="setenvifnocase">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets environment variables based on attributes of the request
  without respect to case</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SetEnvIfNoCase <em>attribute regex env-variable</em>[=<em>value</em>]
      [<em>env-variable</em>[=<em>value</em>]] ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_setenvif</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>Apache 1.3 and above</td></tr></table></td></tr></table>
  
      <p>The <code class="directive">SetEnvIfNoCase</code> is semantically identical to
      the <a href="#setenvif" class="directive"><code class="directive">SetEnvIf</code></a> directive,
      and differs only in that the regular expression matching is
      performed in a case-insensitive manner. For example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     SetEnvIfNoCase Host Apache\.Org site=apache
  </code></td></tr></table></blockquote>
  
      <p>This will cause the <code>site</code> environment variable
      to be set to "<code>apache</code>" if the HTTP request header
      field <code>Host:</code> was included and contained
      <code>Apache.Org</code>, <code>apache.org</code>, or any other
      combination.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_so.html.en
  
  Index: mod_so.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_so- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_so</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>
   This module provides for loading of executable code and
   modules into the server at start-up or restart time.
  </td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base (Windows&gt;; Optional (Unix)</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>so_module</td></tr><tr><td align="left" valign="top"><a href="module-dict.html#Compatibility" class="help">Compatibility:</a></td><td><compatibility>Available in Apache 1.3 and later.</compatibility></td></tr></table></td></tr></table><h2>Summary</h2>
  
      <p>On selected operating systems this module can be used to
      load modules into Apache at runtime via the <a href="../dso.html">Dynamic Shared Object</a> (DSO) mechanism,
      rather than requiring a recompilation.</p>
  
      <p>On Unix, the loaded code typically comes from shared object
      files (usually with <code>.so</code> extension), on Windows
      this may either the <code>.so</code> or <code>.dll</code>
      extension. This module is only available in Apache 1.3 and
      up.</p>
  
      <p>In previous releases, the functionality of this module was
      provided for Unix by mod_dld, and for Windows by mod_dll. On
      Windows, mod_dll was used in beta release 1.3b1 through 1.3b5.
      mod_so combines these two modules into a single module for all
      operating systems.</p>
      <blockquote><table><tr><td bgcolor="#ffe5f5"><p align="center"><strong>Warning</strong></p>
      <p>Apache 1.3 modules cannot be directly used
      with Apache 2.0 - the module must be modified to dynamically
      load or compile into Apache 2.0.</p>
      </td></tr></table></blockquote>
  <h2>Directives</h2><ul><li><a href="#loadfile">LoadFile</a></li><li><a href="#loadmodule">LoadModule</a></li></ul><h2>Creating Loadable Modules for Windows</h2>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Note</strong></p>
      <p>The module name format changed for Windows
      with Apache 1.3.15 and 2.0 - the modules are now named as
      mod_foo.so</p>
      <p>While mod_so still loads modules with
      ApacheModuleFoo.dll names, the new naming convention is
      preferred; if you are converting your loadable module for 2.0,
      please fix the name to this 2.0 convention.</p></td></tr></table></blockquote>
  
      <p>The Apache module API is unchanged between the Unix and
      Windows versions. Many modules will run on Windows with no or
      little change from Unix, although others rely on aspects of the
      Unix architecture which are not present in Windows, and will
      not work.</p>
  
      <p>When a module does work, it can be added to the server in
      one of two ways. As with Unix, it can be compiled into the
      server. Because Apache for Windows does not have the
      <code>Configure</code> program of Apache for Unix, the module's
      source file must be added to the ApacheCore project file, and
      its symbols must be added to the
      <code>os\win32\modules.c</code> file.</p>
  
      <p>The second way is to compile the module as a DLL, a shared
      library that can be loaded into the server at runtime, using
      the <code><code class="directive">LoadModule</code></code>
      directive. These module DLLs can be distributed and run on any
      Apache for Windows installation, without recompilation of the
      server.</p>
  
      <p>To create a module DLL, a small change is necessary to the
      module's source file: The module record must be exported from
      the DLL (which will be created later; see below). To do this,
      add the <code>AP_MODULE_DECLARE_DATA</code> (defined in the
      Apache header files) to your module's module record definition.
      For example, if your module has:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      module foo_module;
  </code></td></tr></table></blockquote>
  
      <p>Replace the above with:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      module AP_MODULE_DECLARE_DATA foo_module;
  </code></td></tr></table></blockquote>
  
      <p>Note that this will only be activated on Windows, so the
      module can continue to be used, unchanged, with Unix if needed.
      Also, if you are familiar with <code>.DEF</code> files, you can
      export the module record with that method instead.</p>
  
      <p>Now, create a DLL containing your module. You will need to
      link this against the libhttpd.lib export library that is
      created when the libhttpd.dll shared library is compiled. You
      may also have to change the compiler settings to ensure that
      the Apache header files are correctly located. You can find
      this library in your server root's modules directory. It is
      best to grab an existing module .dsp file from the tree to
      assure the build environment is configured correctly, or
      alternately compare the compiler and link options to your
      .dsp.</p>
  
      <p>This should create a DLL version of your module. Now simply
      place it in the <code>modules</code> directory of your server
      root, and use the <code class="directive">LoadModule</code>
      directive to load it.</p>
  
  <hr/><h2><a name="LoadFile">LoadFile</a> <a name="loadfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Link in the named object file or library</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LoadFile <em>filename</em> [<em>filename</em>] ...</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>none</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base (Windows&gt;; Optional (Unix)</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_so</td></tr></table></td></tr></table>
  
      <p>The LoadFile directive links in the named object files or
      libraries when the server is started or restarted; this is used
      to load additional code which may be required for some module
      to work. <em>Filename</em> is either an absolute path or
      relative to <a href="core.html#serverroot">ServerRoot</a>.</p>
  
      <p>For example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>LoadFile libexex/libxmlparse.so</code></td></tr></table></blockquote>
  
  <hr/><h2><a name="LoadModule">LoadModule</a> <a name="loadmodule">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Links in the object file or library, and adds to the list
  of active modules</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LoadModule <em>module filename</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>none</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base (Windows&gt;; Optional (Unix)</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_so</td></tr></table></td></tr></table>
      <p>The LoadModule directive links in the object file or library
      <em>filename</em> and adds the module structure named
      <em>module</em> to the list of active modules. <em>Module</em>
      is the name of the external variable of type
      <code>module</code> in the file, and is listed as the <a href="module-dict.html#ModuleIdentifier">Module Identifier</a>
      in the module documentation. Example:</p>
  
      <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
        LoadModule status_module modules/mod_status.so
      </code></td></tr></table></blockquote>
  
      <p>loads the named module from the modules subdirectory of the
      ServerRoot.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_speling.html.en
  
  Index: mod_speling.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_speling- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_speling</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Attempts to correct mistaken URLs that
  users might have entered by ignoring capitalization and by
  allowing up to one misspelling</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>speling_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
      <p>Requests to documents sometimes cannot be served by the core
      apache server because the request was misspelled or
      miscapitalized. This module addresses this problem by trying to
      find a matching document, even after all other modules gave up.
      It does its work by comparing each document name in the
      requested directory against the requested document name
      <strong>without regard to case</strong>, and allowing
      <strong>up to one misspelling</strong> (character insertion /
      omission / transposition or wrong character). A list is built
      with all document names which were matched using this
      strategy.</p>
  
      <p>If, after scanning the directory,</p>
  
      <ul>
        <li>no matching document was found, Apache will proceed as
        usual and return a "document not found" error.</li>
  
        <li>only one document is found that "almost" matches the
        request, then it is returned in the form of a redirection
        response.</li>
  
        <li>more than one document with a close match was found, then
        the list of the matches is returned to the client, and the
        client can select the correct candidate.</li>
      </ul>
  
  <h2>Directives</h2><ul><li><a href="#checkspelling">CheckSpelling</a></li></ul><hr/><h2><a name="CheckSpelling">CheckSpelling</a> <a name="checkspelling">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Enables the spelling 
  module</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CheckSpelling on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>CheckSpelling Off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Options</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_speling</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>CheckSpelling was available as a separately available
  module for Apache 1.1, but was limited to miscapitalizations. As
  of Apache 1.3, it is part of the Apache distribution. Prior to Apache
  1.3.2, the CheckSpelling directive was only available in the
  "server" and "virtual host" contexts.</td></tr></table></td></tr></table>
  
      <p>This directive enables or disables the spelling module. When
      enabled, keep in mind that</p>
  
      <ul>
        <li>the directory scan which is necessary for the spelling
        correction will have an impact on the server's performance
        when many spelling corrections have to be performed at the
        same time.</li>
  
        <li>the document trees should not contain sensitive files
        which could be matched inadvertently by a spelling
        "correction".</li>
  
        <li>the module is unable to correct misspelled user names (as
        in <code>http://my.host/~apahce/</code>), just file names or
        directory names.</li>
  
        <li>spelling corrections apply strictly to existing files, so
        a request for the <code>&lt;Location /status&gt;</code> may
        get incorrectly treated as the negotiated file
        "<code>/stats.html</code>".</li>
      </ul>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_ssl.html.en
  
  Index: mod_ssl.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_ssl- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_ssl</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Strong cryptography using the Secure Sockets
  Layer (SSL) and Transport Layer Security (TLS) protocols</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>ssl_module</td></tr></table></td></tr></table><h2>Summary</h2>
  <p>This module provides SSL v2/v3 and TLS v1 support for the Apache
  HTTP Server.  It was contributed by Ralf S. Engeschall based on his
  mod_ssl project and originally derived from work by Ben Laurie.</p>
  
  <p>This module relies on <a href="http://www.openssl.org/">OpenSSL</a>
  to provide the cryptography engine.</p>
  
  <p>Further details, discussion, and examples are provided in the
  <a href="../ssl/">SSL documentation</a>.</p>
  <h2>Directives</h2><ul><li><a href="#sslcacertificatefile">SSLCACertificateFile</a></li><li><a href="#sslcacertificatepath">SSLCACertificatePath</a></li><li><a href="#sslcarevocationfile">SSLCARevocationFile</a></li><li><a href="#sslcarevocationpath">SSLCARevocationPath</a></li><li><a href="#sslcertificatechainfile">SSLCertificateChainFile</a></li><li><a href="#sslcertificatefile">SSLCertificateFile</a></li><li><a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></li><li><a href="#sslciphersuite">SSLCipherSuite</a></li><li><a href="#sslengine">SSLEngine</a></li><li><a href="#sslmutex">SSLMutex</a></li><li><a href="#ssloptions">SSLOptions</a></li><li><a href="#sslpassphrasedialog">SSLPassPhraseDialog</a></li><li><a href="#sslprotocol">SSLProtocol</a></li><li><a href="#sslrandomseed">SSLRandomSeed</a></li><li><a href="#sslrequire">SSLRequire</a></li><li><a href="#sslrequiressl">SSLRequireSSL</a></li><li><a href="#sslsessioncache">SSLSessionCache</a></li><li><a href="#sslsessioncachetimeout">SSLSessionCacheTimeout</a></li><li><a href="#sslverifyclient">SSLVerifyClient</a></li><li><a href="#sslverifydepth">SSLVerifyDepth</a></li></ul><h2>Environment Variables</h2>
  
  <p>This module provides a lot of SSL information as additional environment
  variables to the SSI and CGI namespace. The generated variables are listed in
  the table below. For backward compatibility the information can
  be made available under different names, too. Look in the <a href="../ssl/ssl_compat.html">Compatibility</a> chapter for details on the
  compatibility variables.</p>
  
  <table width="600" cellspacing="0" cellpadding="1" border="0" summary="">
  
  <tr><td bgcolor="#cccccc">
  <table width="598" cellpadding="5" cellspacing="0" border="0" summary="">
  <tr><td bgcolor="#ffffff">
  <table border="0" cellspacing="0" cellpadding="2" width="598" summary="">
  <tr>
   <td><strong>Variable Name:</strong></td>
   <td><strong>Value Type:</strong></td>
   <td><strong>Description:</strong></td>
  </tr>
  <tr><td><code>HTTPS</code></td>                         <td>flag</td>      <td>HTTPS is being used.</td></tr>
  <tr><td><code>SSL_PROTOCOL</code></td>                  <td>string</td>    <td>The SSL protocol version (SSLv2, SSLv3, TLSv1)</td></tr>
  <tr><td><code>SSL_SESSION_ID</code></td>                <td>string</td>    <td>The hex-encoded SSL session id</td></tr>
  <tr><td><code>SSL_CIPHER</code></td>                    <td>string</td>    <td>The cipher specification name</td></tr>
  <tr><td><code>SSL_CIPHER_EXPORT</code></td>             <td>string</td>    <td><code>true</code> if cipher is an export cipher</td></tr>
  <tr><td><code>SSL_CIPHER_USEKEYSIZE</code></td>         <td>number</td>    <td>Number of cipher bits (actually used)</td></tr>
  <tr><td><code>SSL_CIPHER_ALGKEYSIZE</code></td>         <td>number</td>    <td>Number of cipher bits (possible)</td></tr>
  <tr><td><code>SSL_VERSION_INTERFACE</code></td>         <td>string</td>    <td>The mod_ssl program version</td></tr>
  <tr><td><code>SSL_VERSION_LIBRARY</code></td>           <td>string</td>    <td>The OpenSSL program version</td></tr>
  <tr><td><code>SSL_CLIENT_M_VERSION</code></td>          <td>string</td>    <td>The version of the client certificate</td></tr>
  <tr><td><code>SSL_CLIENT_M_SERIAL</code></td>           <td>string</td>    <td>The serial of the client certificate</td></tr>
  <tr><td><code>SSL_CLIENT_S_DN</code></td>               <td>string</td>    <td>Subject DN in client's certificate</td></tr>
  <tr><td><code>SSL_CLIENT_S_DN_</code><em>x509</em></td> <td>string</td>    <td>Component of client's Subject DN</td></tr>
  <tr><td><code>SSL_CLIENT_I_DN</code></td>               <td>string</td>    <td>Issuer DN of client's certificate</td></tr>
  <tr><td><code>SSL_CLIENT_I_DN_</code><em>x509</em></td> <td>string</td>    <td>Component of client's Issuer DN</td></tr>
  <tr><td><code>SSL_CLIENT_V_START</code></td>            <td>string</td>    <td>Validity of client's certificate (start time)</td></tr>
  <tr><td><code>SSL_CLIENT_V_END</code></td>              <td>string</td>    <td>Validity of client's certificate (end time)</td></tr>
  <tr><td><code>SSL_CLIENT_A_SIG</code></td>              <td>string</td>    <td>Algorithm used for the signature of client's certificate</td></tr>
  <tr><td><code>SSL_CLIENT_A_KEY</code></td>              <td>string</td>    <td>Algorithm used for the public key of client's certificate</td></tr>
  <tr><td><code>SSL_CLIENT_CERT</code></td>               <td>string</td>    <td>PEM-encoded client certificate</td></tr>
  <tr><td><code>SSL_CLIENT_CERT_CHAIN</code><em>n</em></td> <td>string</td>    <td>PEM-encoded certificates in client certificate chain</td></tr>
  <tr><td><code>SSL_CLIENT_VERIFY</code></td>             <td>string</td>    <td><code>NONE</code>, <code>SUCCESS</code>, <code>GENEROUS</code> or <code>FAILED:</code><em>reason</em></td></tr>
  <tr><td><code>SSL_SERVER_M_VERSION</code></td>          <td>string</td>    <td>The version of the server certificate</td></tr>
  <tr><td><code>SSL_SERVER_M_SERIAL</code></td>           <td>string</td>    <td>The serial of the server certificate</td></tr>
  <tr><td><code>SSL_SERVER_S_DN</code></td>               <td>string</td>    <td>Subject DN in server's certificate</td></tr>
  <tr><td><code>SSL_SERVER_S_DN_</code><em>x509</em></td> <td>string</td>    <td>Component of server's Subject DN</td></tr>
  <tr><td><code>SSL_SERVER_I_DN</code></td>               <td>string</td>    <td>Issuer DN of server's certificate</td></tr>
  <tr><td><code>SSL_SERVER_I_DN_</code><em>x509</em></td> <td>string</td>    <td>Component of server's Issuer DN</td></tr>
  <tr><td><code>SSL_SERVER_V_START</code></td>            <td>string</td>    <td>Validity of server's certificate (start time)</td></tr>
  <tr><td><code>SSL_SERVER_V_END</code></td>              <td>string</td>    <td>Validity of server's certificate (end time)</td></tr>
  <tr><td><code>SSL_SERVER_A_SIG</code></td>              <td>string</td>    <td>Algorithm used for the signature of server's certificate</td></tr>
  <tr><td><code>SSL_SERVER_A_KEY</code></td>              <td>string</td>    <td>Algorithm used for the public key of server's certificate</td></tr>
  <tr><td><code>SSL_SERVER_CERT</code></td>               <td>string</td>    <td>PEM-encoded server certificate</td></tr>
  </table>
  [ where <em>x509</em> is a component of a X.509 DN:
    <code>C,ST,L,O,OU,CN,T,I,G,S,D,UID,Email</code> ]
  </td>
  </tr></table>
  </td></tr></table>
  <h2>Custom Log Formats</h2>
  
  <p>When <code><a href="mod_ssl.html">mod_ssl</a></code> is built into Apache or at least
  loaded (under DSO situation) additional functions exist for the <a href="../mod_log_config.html#formats">Custom Log Format</a> of 
  <code><a href="mod_log_config.html">mod_log_config</a></code>. First there is an
  additional ``<code>%{</code><em>varname</em><code>}x</code>''
  eXtension format function which can be used to expand any variables
  provided by any module, especially those provided by mod_ssl which can
  you find in the above table.</p>
  <p>
  For backward compatibility there is additionally a special
  ``<code>%{</code><em>name</em><code>}c</code>'' cryptography format function
  provided. Information about this function is provided in the <a href="../ssl/ssl_compat.html">Compatibility</a> chapter.</p>
  <p>
  Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  CustomLog logs/ssl_request_log \
            "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLCACertificateFile">SSLCACertificateFile</a> <a name="sslcacertificatefile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>File of concatenated PEM-encoded CA Certificates 
  for Client Auth</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLCACertificateFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive sets the <em>all-in-one</em> file where you can assemble the
  Certificates of Certification Authorities (CA) whose <em>clients</em> you deal
  with. These are used for Client Authentication. Such a file is simply the
  concatenation of the various PEM-encoded Certificate files, in order of
  preference. This can be used alternatively and/or additionally to 
  <a href="#sslcacertificatepath" class="directive"><code class="directive">SSLCACertificatePath</code></a>.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLCACertificateFile /usr/local/apache/conf/ssl.crt/ca-bundle-client.crt
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLCACertificatePath">SSLCACertificatePath</a> <a name="sslcacertificatepath">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Directory of PEM-encoded CA Certificates for 
  Client Auth</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLCACertificatePath <em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive sets the directory where you keep the Certificates of
  Certification Authorities (CAs) whose clients you deal with. These are used to
  verify the client certificate on Client Authentication.</p>
  <p>
  The files in this directory have to be PEM-encoded and are accessed through
  hash filenames. So usually you can't just place the Certificate files
  there: you also have to create symbolic links named
  <em>hash-value</em><code>.N</code>. And you should always make sure this directory
  contains the appropriate symbolic links. Use the <code>Makefile</code> which
  comes with mod_ssl to accomplish this task.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLCACertificatePath /usr/local/apache/conf/ssl.crt/
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLCARevocationFile">SSLCARevocationFile</a> <a name="sslcarevocationfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>File of concatenated PEM-encoded CA CRLs for 
  Client Auth</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLCARevocationFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive sets the <em>all-in-one</em> file where you can
  assemble the Certificate Revocation Lists (CRL) of Certification
  Authorities (CA) whose <em>clients</em> you deal with. These are used
  for Client Authentication.  Such a file is simply the concatenation of
  the various PEM-encoded CRL files, in order of preference. This can be
  used alternatively and/or additionally to <a href="#sslcarevocationpath" class="directive"><code class="directive">SSLCARevocationPath</code></a>.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLCARevocationFile /usr/local/apache/conf/ssl.crl/ca-bundle-client.crl
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLCARevocationPath">SSLCARevocationPath</a> <a name="sslcarevocationpath">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Directory of PEM-encoded CA CRLs for 
  Client Auth</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLCARevocationPath <em>directory-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive sets the directory where you keep the Certificate Revocation
  Lists (CRL) of Certification Authorities (CAs) whose clients you deal with.
  These are used to revoke the client certificate on Client Authentication.</p>
  <p>
  The files in this directory have to be PEM-encoded and are accessed through
  hash filenames. So usually you have not only to place the CRL files there.
  Additionally you have to create symbolic links named
  <em>hash-value</em><code>.rN</code>. And you should always make sure this directory
  contains the appropriate symbolic links. Use the <code>Makefile</code> which
  comes with <code><a href="mod_ssl.html">mod_ssl</a></code> to accomplish this task.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLCARevocationPath /usr/local/apache/conf/ssl.crl/
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLCertificateChainFile">SSLCertificateChainFile</a> <a name="sslcertificatechainfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>File of PEM-encoded Server CA Certificates</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLCertificateChainFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive sets the optional <em>all-in-one</em> file where you can
  assemble the certificates of Certification Authorities (CA) which form the
  certificate chain of the server certificate. This starts with the issuing CA
  certificate of of the server certificate and can range up to the root CA
  certificate. Such a file is simply the concatenation of the various
  PEM-encoded CA Certificate files, usually in certificate chain order.</p>
  <p>
  This should be used alternatively and/or additionally to <a href="#sslcacertificatepath" class="directive"><code class="directive">SSLCACertificatePath</code></a> for explicitly
  constructing the server certificate chain which is sent to the browser
  in addition to the server certificate. It is especially useful to
  avoid conflicts with CA certificates when using client
  authentication. Because although placing a CA certificate of the
  server certificate chain into <a href="#sslcacertificatepath" class="directive"><code class="directive">SSLCACertificatePath</code></a> has the same effect
  for the certificate chain construction, it has the side-effect that
  client certificates issued by this same CA certificate are also
  accepted on client authentication. That's usually not one expect.</p>
  <p>
  But be careful: Providing the certificate chain works only if you are using a
  <em>single</em> (either RSA <em>or</em> DSA) based server certificate. If you are
  using a coupled RSA+DSA certificate pair, this will work only if actually both
  certificates use the <em>same</em> certificate chain. Else the browsers will be
  confused in this situation.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLCertificateChainFile /usr/local/apache/conf/ssl.crt/ca.crt
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLCertificateFile">SSLCertificateFile</a> <a name="sslcertificatefile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Server PEM-encoded X.509 Certificate file</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLCertificateFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive points to the PEM-encoded Certificate file for the server and
  optionally also to the corresponding RSA or DSA Private Key file for it
  (contained in the same file). If the contained Private Key is encrypted the
  Pass Phrase dialog is forced at startup time. This directive can be used up to
  two times (referencing different filenames) when both a RSA and a DSA based
  server certificate is used in parallel.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLCertificateKeyFile">SSLCertificateKeyFile</a> <a name="sslcertificatekeyfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Server PEM-encoded Private Key file</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLCertificateKeyFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive points to the PEM-encoded Private Key file for the
  server. If the Private Key is not combined with the Certificate in the
  <code class="directive">SSLCertificateFile</code>, use this additional directive to
  point to the file with the stand-alone Private Key. When
  <code class="directive">SSLCertificateFile</code> is used and the file
  contains both the Certificate and the Private Key this directive need
  not be used. But we strongly discourage this practice.  Instead we
  recommend you to separate the Certificate and the Private Key. If the
  contained Private Key is encrypted, the Pass Phrase dialog is forced
  at startup time. This directive can be used up to two times
  (referencing different filenames) when both a RSA and a DSA based
  private key is used in parallel.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLCipherSuite">SSLCipherSuite</a> <a name="sslciphersuite">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Cipher Suite available for negotiation in SSL 
  handshake</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLCipherSuite <em>cipher-spec</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This complex directive uses a colon-separated <em>cipher-spec</em> string
  consisting of OpenSSL cipher specifications to configure the Cipher Suite the
  client is permitted to negotiate in the SSL handshake phase. Notice that this
  directive can be used both in per-server and per-directory context. In
  per-server context it applies to the standard SSL handshake when a connection
  is established. In per-directory context it forces a SSL renegotation with the
  reconfigured Cipher Suite after the HTTP request was read but before the HTTP
  response is sent.</p>
  <p>
  An SSL cipher specification in <em>cipher-spec</em> is composed of 4 major
  attributes plus a few extra minor ones:</p>
  <ul>
  <li><em>Key Exchange Algorithm</em>:<br>
      RSA or Diffie-Hellman variants.
  </li>
  <li><em>Authentication Algorithm</em>:<br>
      RSA, Diffie-Hellman, DSS or none.
  </li>
  <li><em>Cipher/Encryption Algorithm</em>:<br>
      DES, Triple-DES, RC4, RC2, IDEA or none.
  </li>
  <li><em>MAC Digest Algorithm</em>:<br>
      MD5, SHA or SHA1.
  </li>
  </ul>
  <p>An SSL cipher can also be an export cipher and is either a SSLv2 or SSLv3/TLSv1
  cipher (here TLSv1 is equivalent to SSLv3). To specify which ciphers to use,
  one can either specify all the Ciphers, one at a time, or use aliases to
  specify the preference and order for the ciphers (see <a href="#table1">Table
  1</a>).</p>
  
  <table width="600" cellspacing="0" cellpadding="1" border="0" summary="">
  
  <tr><td bgcolor="#cccccc">
  <table width="598" cellpadding="5" cellspacing="0" border="0" summary="">
  <tr><td bgcolor="#ffffff">
  <table border="0" cellspacing="0" cellpadding="2" width="598" summary="">
  <tr><td><strong>Tag</strong></td> <td><strong>Description</strong></td></tr>
  <tr><td colspan="2"><em>Key Exchange Algorithm:</em></td></tr>
  <tr><td><code>kRSA</code></td>   <td>RSA key exchange</td></tr>
  <tr><td><code>kDHr</code></td>   <td>Diffie-Hellman key exchange with RSA key</td></tr>
  <tr><td><code>kDHd</code></td>   <td>Diffie-Hellman key exchange with DSA key</td></tr>
  <tr><td><code>kEDH</code></td>   <td>Ephemeral (temp.key) Diffie-Hellman key exchange (no cert)</td>   </tr>
  <tr><td colspan="2"><em>Authentication Algorithm:</em></td></tr>
  <tr><td><code>aNULL</code></td>  <td>No authentication</td></tr>
  <tr><td><code>aRSA</code></td>   <td>RSA authentication</td></tr>
  <tr><td><code>aDSS</code></td>   <td>DSS authentication</td> </tr>
  <tr><td><code>aDH</code></td>    <td>Diffie-Hellman authentication</td></tr>
  <tr><td colspan="2"><em>Cipher Encoding Algorithm:</em></td></tr>
  <tr><td><code>eNULL</code></td>  <td>No encoding</td>         </tr>
  <tr><td><code>DES</code></td>    <td>DES encoding</td>        </tr>
  <tr><td><code>3DES</code></td>   <td>Triple-DES encoding</td> </tr>
  <tr><td><code>RC4</code></td>    <td>RC4 encoding</td>       </tr>
  <tr><td><code>RC2</code></td>    <td>RC2 encoding</td>       </tr>
  <tr><td><code>IDEA</code></td>   <td>IDEA encoding</td>       </tr>
  <tr><td colspan="2"><em>MAC Digest Algorithm</em>:</td></tr>
  <tr><td><code>MD5</code></td>    <td>MD5 hash function</td></tr>
  <tr><td><code>SHA1</code></td>   <td>SHA1 hash function</td></tr>
  <tr><td><code>SHA</code></td>    <td>SHA hash function</td> </tr>
  <tr><td colspan="2"><em>Aliases:</em></td></tr>
  <tr><td><code>SSLv2</code></td>  <td>all SSL version 2.0 ciphers</td></tr>
  <tr><td><code>SSLv3</code></td>  <td>all SSL version 3.0 ciphers</td> </tr>
  <tr><td><code>TLSv1</code></td>  <td>all TLS version 1.0 ciphers</td> </tr>
  <tr><td><code>EXP</code></td>    <td>all export ciphers</td>  </tr>
  <tr><td><code>EXPORT40</code></td> <td>all 40-bit export ciphers only</td>  </tr>
  <tr><td><code>EXPORT56</code></td> <td>all 56-bit export ciphers only</td>  </tr>
  <tr><td><code>LOW</code></td>    <td>all low strength ciphers (no export, single DES)</td></tr>
  <tr><td><code>MEDIUM</code></td> <td>all ciphers with 128 bit encryption</td> </tr>
  <tr><td><code>HIGH</code></td>   <td>all ciphers using Triple-DES</td>     </tr>
  <tr><td><code>RSA</code></td>    <td>all ciphers using RSA key exchange</td> </tr>
  <tr><td><code>DH</code></td>     <td>all ciphers using Diffie-Hellman key exchange</td> </tr>
  <tr><td><code>EDH</code></td>    <td>all ciphers using Ephemeral Diffie-Hellman key exchange</td> </tr>
  <tr><td><code>ADH</code></td>    <td>all ciphers using Anonymous Diffie-Hellman key exchange</td> </tr>
  <tr><td><code>DSS</code></td>    <td>all ciphers using DSS authentication</td> </tr>
  <tr><td><code>NULL</code></td>   <td>all ciphers using no encryption</td> </tr>
  </table>
  </td>
  </tr></table>
  </td></tr></table>
  <p>
  Now where this becomes interesting is that these can be put together
  to specify the order and ciphers you wish to use. To speed this up
  there are also aliases (<code>SSLv2, SSLv3, TLSv1, EXP, LOW, MEDIUM,
  HIGH</code>) for certain groups of ciphers. These tags can be joined
  together with prefixes to form the <em>cipher-spec</em>. Available
  prefixes are:</p>
  <ul>
  <li>none: add cipher to list</li>
  <li><code>+</code>: add ciphers to list and pull them to current location in list</li>
  <li><code>-</code>: remove cipher from list (can be added later again)</li>
  <li><code>!</code>: kill cipher from list completely (can <strong>not</strong> be added later again)</li>
  </ul>
  <p>A simpler way to look at all of this is to use the ``<code>openssl ciphers
  -v</code>'' command which provides a nice way to successively create the
  correct <em>cipher-spec</em> string. The default <em>cipher-spec</em> string
  is ``<code>ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP</code>'' which
  means the following: first, remove from consideration any ciphers that do not
  authenticate, i.e. for SSL only the Anonymous Diffie-Hellman ciphers. Next,
  use ciphers using RC4 and RSA. Next include the high, medium and then the low
  security ciphers. Finally <em>pull</em> all SSLv2 and export ciphers to the
  end of the list.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  <pre>
  $ openssl ciphers -v 'ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP'
  NULL-SHA                SSLv3 Kx=RSA      Au=RSA  Enc=None      Mac=SHA1
  NULL-MD5                SSLv3 Kx=RSA      Au=RSA  Enc=None      Mac=MD5
  EDH-RSA-DES-CBC3-SHA    SSLv3 Kx=DH       Au=RSA  Enc=3DES(168) Mac=SHA1
  ...                     ...               ...     ...           ...
  EXP-RC4-MD5             SSLv3 Kx=RSA(512) Au=RSA  Enc=RC4(40)   Mac=MD5  export
  EXP-RC2-CBC-MD5         SSLv2 Kx=RSA(512) Au=RSA  Enc=RC2(40)   Mac=MD5  export
  EXP-RC4-MD5             SSLv2 Kx=RSA(512) Au=RSA  Enc=RC4(40)   Mac=MD5  export
  </pre>
  </code></td></tr></table></blockquote>
  <p>The complete list of particular RSA &amp; DH ciphers for SSL is given in <a href="#table2">Table 2</a>.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLCipherSuite RSA:!EXP:!NULL:+HIGH:+MEDIUM:-LOW
  </code></td></tr></table></blockquote>
  <table width="600" cellspacing="0" cellpadding="1" border="0" summary="">
  
  <tr><td bgcolor="#cccccc">
  <table width="598" cellpadding="5" cellspacing="0" border="0" summary="">
  <tr><td bgcolor="#ffffff">
  <table border="0" cellspacing="0" cellpadding="2" width="598" summary="">
  <tr><td><strong>Cipher-Tag</strong></td> <td><strong>Protocol</strong></td> <td><strong>Key Ex.</strong></td> <td><strong>Auth.</strong></td> <td><strong>Enc.</strong></td> <td><strong>MAC</strong></td> <td><strong>Type</strong></td> </tr>
  <tr><td colspan="7"><em>RSA Ciphers:</em></td></tr>
  <tr><td><code>DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>3DES(168)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>DES-CBC3-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>3DES(168)</td> <td>MD5</td> <td>&nbsp; </td> </tr>
  <tr><td><code>IDEA-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>IDEA(128)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>RC4-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>RC4-MD5</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>MD5</td> <td>&nbsp; </td> </tr>
  <tr><td><code>IDEA-CBC-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>IDEA(128)</td> <td>MD5</td> <td>&nbsp; </td> </tr>
  <tr><td><code>RC2-CBC-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>RC2(128)</td> <td>MD5</td> <td>&nbsp; </td> </tr>
  <tr><td><code>RC4-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>MD5</td> <td>&nbsp; </td> </tr>
  <tr><td><code>DES-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>DES(56)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>RC4-64-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>RC4(64)</td> <td>MD5</td> <td>&nbsp; </td> </tr>
  <tr><td><code>DES-CBC-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>DES(56)</td> <td>MD5</td> <td>&nbsp; </td> </tr>
  <tr><td><code>EXP-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
  <tr><td><code>EXP-RC2-CBC-MD5</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>RC2(40)</td> <td>MD5</td> <td>  export</td> </tr>
  <tr><td><code>EXP-RC4-MD5</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>RC4(40)</td> <td>MD5</td> <td>  export</td> </tr>
  <tr><td><code>EXP-RC2-CBC-MD5</code></td> <td>SSLv2</td> <td>RSA(512)</td> <td>RSA</td> <td>RC2(40)</td> <td>MD5</td> <td>  export</td> </tr>
  <tr><td><code>EXP-RC4-MD5</code></td> <td>SSLv2</td> <td>RSA(512)</td> <td>RSA</td> <td>RC4(40)</td> <td>MD5</td> <td>  export</td> </tr>
  <tr><td><code>NULL-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>None</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>NULL-MD5</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>None</td> <td>MD5</td> <td>&nbsp; </td> </tr>
  <tr><td colspan="7"><em>Diffie-Hellman Ciphers:</em></td></tr>
  <tr><td><code>ADH-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>3DES(168)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>ADH-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>DES(56)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>ADH-RC4-MD5</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>RC4(128)</td> <td>MD5</td> <td>&nbsp; </td> </tr>
  <tr><td><code>EDH-RSA-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>RSA</td> <td>3DES(168)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>EDH-DSS-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>DSS</td> <td>3DES(168)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>EDH-RSA-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>RSA</td> <td>DES(56)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>EDH-DSS-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>DSS</td> <td>DES(56)</td> <td>SHA1</td> <td>&nbsp;</td> </tr>
  <tr><td><code>EXP-EDH-RSA-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>RSA</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
  <tr><td><code>EXP-EDH-DSS-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>DSS</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
  <tr><td><code>EXP-ADH-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>None</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
  <tr><td><code>EXP-ADH-RC4-MD5</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>None</td> <td>RC4(40)</td> <td>MD5</td> <td>  export</td> </tr>
  </table>
  </td>
  </tr></table>
  </td></tr></table>
  <hr/><h2><a name="SSLEngine">SSLEngine</a> <a name="sslengine">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>SSL Engine Operation Switch</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLEngine on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSLEngine off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive toggles the usage of the SSL/TLS Protocol Engine. This
  is usually used inside a <a href="core.html#virtualhost" class="directive"><code class="directive">&lt;VirtualHost&gt;</code></a> section to enable SSL/TLS for a
  particular virtual host. By default the SSL/TLS Protocol Engine is
  disabled for both the main server and all configured virtual hosts.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  &lt;VirtualHost _default_:443&gt;<br>
  SSLEngine on<br>
  ...<br>
  &lt;/VirtualHost&gt;
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLMutex">SSLMutex</a> <a name="sslmutex">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Semaphore for internal mutual exclusion of 
  operations</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLMutex <em>type</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSLMutex none</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This configures the SSL engine's semaphore (aka. lock) which is used for mutual
  exclusion of operations which have to be done in a synchronized way between the
  pre-forked Apache server processes. This directive can only be used in the
  global server context because it's only useful to have one global mutex.</p>
  <p>
  The following Mutex <em>types</em> are available:</p>
  <ul>
  <li><code>none</code>
      <p>
      This is the default where no Mutex is used at all. Use it at your own
      risk. But because currently the Mutex is mainly used for synchronizing
      write access to the SSL Session Cache you can live without it as long
      as you accept a sometimes garbled Session Cache. So it's not recommended
      to leave this the default. Instead configure a real Mutex.</p></li>
  <li><code>file:/path/to/mutex</code>
      <p>
      This is the portable and (under Unix) always provided Mutex variant where
      a physical (lock-)file is used as the Mutex. Always use a local disk
      filesystem for <code>/path/to/mutex</code> and never a file residing on a
      NFS- or AFS-filesystem. Note: Internally, the Process ID (PID) of the
      Apache parent process is automatically appended to
      <code>/path/to/mutex</code> to make it unique, so you don't have to worry
      about conflicts yourself. Notice that this type of mutex is not available
      under the Win32 environment. There you <em>have</em> to use the semaphore
      mutex.</p></li>
  <li><code>sem</code>
      <p>
      This is the most elegant but also most non-portable Mutex variant where a
      SysV IPC Semaphore (under Unix) and a Windows Mutex (under Win32) is used
      when possible. It is only available when the underlying platform
      supports it.</p></li>
  </ul>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLMutex file:/usr/local/apache/logs/ssl_mutex
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLOptions">SSLOptions</a> <a name="ssloptions">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configure various SSL engine run-time options</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLOptions [+|-]<em>option</em> ...</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Options</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive can be used to control various run-time options on a
  per-directory basis. Normally, if multiple <code>SSLOptions</code>
  could apply to a directory, then the most specific one is taken
  completely; the options are not merged. However if <em>all</em> the
  options on the <code>SSLOptions</code> directive are preceded by a
  plus (<code>+</code>) or minus (<code>-</code>) symbol, the options
  are merged. Any options preceded by a <code>+</code> are added to the
  options currently in force, and any options preceded by a
  <code>-</code> are removed from the options currently in force.</p>
  <p>
  The available <em>option</em>s are:</p>
  <ul>
  <li><code>StdEnvVars</code>
      <p>
      When this option is enabled, the standard set of SSL related CGI/SSI
      environment variables are created. This per default is disabled for
      performance reasons, because the information extraction step is a
      rather expensive operation. So one usually enables this option for
      CGI and SSI requests only.</p>
  </li>
  <li><code>CompatEnvVars</code>
      <p>
      When this option is enabled, additional CGI/SSI environment variables are
      created for backward compatibility to other Apache SSL solutions. Look in
      the <a href="../ssl/ssl_compat.html">Compatibility</a> chapter for details
      on the particular variables generated.</p>
  </li>
  <li><code>ExportCertData</code>
      <p>
      When this option is enabled, additional CGI/SSI environment variables are
      created: <code>SSL_SERVER_CERT</code>, <code>SSL_CLIENT_CERT</code> and
      <code>SSL_CLIENT_CERT_CHAIN</code><em>n</em> (with <em>n</em> = 0,1,2,..).
      These contain the PEM-encoded X.509 Certificates of server and client for
      the current HTTPS connection and can be used by CGI scripts for deeper
      Certificate checking. Additionally all other certificates of the client
      certificate chain are provided, too. This bloats up the environment a
      little bit which is why you have to use this option to enable it on
      demand.</p>
  </li>
  <li><code>FakeBasicAuth</code>
      <p>
      When this option is enabled, the Subject Distinguished Name (DN) of the
      Client X509 Certificate is translated into a HTTP Basic Authorization
      username. This means that the standard Apache authentication methods can
      be used for access control. The user name is just the Subject of the
      Client's X509 Certificate (can be determined by running OpenSSL's
      <code>openssl x509</code> command: <code>openssl x509 -noout -subject -in
      </code><em>certificate</em><code>.crt</code>). Note that no password is
      obtained from the user. Every entry in the user file needs this password:
      ``<code>xxj31ZMTZzkVA</code>'', which is the DES-encrypted version of the
      word `<code>password</code>''. Those who live under MD5-based encryption
      (for instance under FreeBSD or BSD/OS, etc.) should use the following MD5
      hash of the same word: ``<code>$1$OXLyS...$Owx8s2/m9/gfkcRVXzgoE/</code>''.</p>
  </li>
  <li><code>StrictRequire</code>
      <p>
      This <em>forces</em> forbidden access when <code>SSLRequireSSL</code> or
      <code>SSLRequire</code> successfully decided that access should be
      forbidden. Usually the default is that in the case where a ``<code>Satisfy
      any</code>'' directive is used, and other access restrictions are passed,
      denial of access due to <code>SSLRequireSSL</code> or
      <code>SSLRequire</code> is overridden (because that's how the Apache
      <code>Satisfy</code> mechanism should work.) But for strict access restriction
      you can use <code>SSLRequireSSL</code> and/or <code>SSLRequire</code> in
      combination with an ``<code>SSLOptions +StrictRequire</code>''. Then an
      additional ``<code>Satisfy Any</code>'' has no chance once mod_ssl has
      decided to deny access.</p>
  </li>
  <li><code>OptRenegotiate</code>
      <p>
      This enables optimized SSL connection renegotiation handling when SSL
      directives are used in per-directory context. By default a strict
      scheme is enabled where <em>every</em> per-directory reconfiguration of
      SSL parameters causes a <em>full</em> SSL renegotiation handshake. When this
      option is used mod_ssl tries to avoid unnecessary handshakes by doing more
      granular (but still safe) parameter checks. Nevertheless these granular
      checks sometimes maybe not what the user expects, so enable this on a
      per-directory basis only, please.</p>
  </li>
  </ul>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLOptions +FakeBasicAuth -StrictRequire<br>
  &lt;Files ~ "\.(cgi|shtml)$"&gt;<br>
      SSLOptions +StdEnvVars +CompatEnvVars -ExportCertData<br>
  &lt;Files&gt;
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLPassPhraseDialog">SSLPassPhraseDialog</a> <a name="sslpassphrasedialog">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Type of pass phrase dialog for encrypted private 
  keys</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLPassPhraseDialog <em>type</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSLPassPhraseDialog builtin</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  When Apache starts up it has to read the various Certificate (see
  <a href="#sslcertificatefile" class="directive"><code class="directive">SSLCertificateFile</code></a>) and
  Private Key (see <a href="#sslcertificatekeyfile" class="directive"><code class="directive">SSLCertificateKeyFile</code></a>) files of the
  SSL-enabled virtual servers. Because for security reasons the Private
  Key files are usually encrypted, mod_ssl needs to query the
  administrator for a Pass Phrase in order to decrypt those files. This
  query can be done in two ways which can be configured by
  <em>type</em>:</p>
  <ul>
  <li><code>builtin</code>
      <p>
      This is the default where an interactive terminal dialog occurs at startup
      time just before Apache detaches from the terminal. Here the administrator
      has to manually enter the Pass Phrase for each encrypted Private Key file.
      Because a lot of SSL-enabled virtual hosts can be configured, the
      following reuse-scheme is used to minimize the dialog: When a Private Key
      file is encrypted, all known Pass Phrases (at the beginning there are
      none, of course) are tried. If one of those known Pass Phrases succeeds no
      dialog pops up for this particular Private Key file. If none succeeded,
      another Pass Phrase is queried on the terminal and remembered for the next
      round (where it perhaps can be reused).</p>
      <p>
      This scheme allows mod_ssl to be maximally flexible (because for N encrypted
      Private Key files you <em>can</em> use N different Pass Phrases - but then
      you have to enter all of them, of course) while minimizing the terminal
      dialog (i.e. when you use a single Pass Phrase for all N Private Key files
      this Pass Phrase is queried only once).</p></li>
  
  <li><code>exec:/path/to/program</code>
      <p>
      Here an external program is configured which is called at startup for each
      encrypted Private Key file. It is called with two arguments (the first is
      of the form ``<code>servername:portnumber</code>'', the second is either
      ``<code>RSA</code>'' or ``<code>DSA</code>''), which indicate for which
      server and algorithm it has to print the corresponding Pass Phrase to
      <code>stdout</code>. The intent is that this external program first runs
      security checks to make sure that the system is not compromised by an
      attacker, and only when these checks were passed successfully it provides
      the Pass Phrase.</p>
      <p>
      Both these security checks, and the way the Pass Phrase is determined, can
      be as complex as you like. Mod_ssl just defines the interface: an
      executable program which provides the Pass Phrase on <code>stdout</code>.
      Nothing more or less! So, if you're really paranoid about security, here
      is your interface. Anything else has to be left as an exercise to the
      administrator, because local security requirements are so different.</p>
      <p>
      The reuse-algorithm above is used here, too. In other words: The external
      program is called only once per unique Pass Phrase.</p></li>
  </ul>
  <p>
  Example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  SSLPassPhraseDialog exec:/usr/local/apache/sbin/pp-filter
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLProtocol">SSLProtocol</a> <a name="sslprotocol">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Configure usable SSL protocol flavors</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLProtocol [+|-]<em>protocol</em> ...</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSLProtocol all</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>Options</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive can be used to control the SSL protocol flavors mod_ssl should
  use when establishing its server environment. Clients then can only connect
  with one of the provided protocols.</p>
  <p>
  The available (case-insensitive) <em>protocol</em>s are:</p>
  <ul>
  <li><code>SSLv2</code>
      <p>
      This is the Secure Sockets Layer (SSL) protocol, version 2.0. It is the
      original SSL protocol as designed by Netscape Corporation.</p></li>
  
  <li><code>SSLv3</code>
      <p>
      This is the Secure Sockets Layer (SSL) protocol, version 3.0. It is the
      successor to SSLv2 and the currently (as of February 1999) de-facto
      standardized SSL protocol from Netscape Corporation. It's supported by
      almost all popular browsers.</p></li>
  
  <li><code>TLSv1</code>
      <p>
      This is the Transport Layer Security (TLS) protocol, version 1.0. It is the
      successor to SSLv3 and currently (as of February 1999) still under
      construction by the Internet Engineering Task Force (IETF). It's still
      not supported by any popular browsers.</p></li>
  
  <li><code>All</code>
      <p>
      This is a shortcut for ``<code>+SSLv2 +SSLv3 +TLSv1</code>'' and a
      convinient way for enabling all protocols except one when used in
      combination with the minus sign on a protocol as the example above 
      shows.</p></li>
  </ul>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  #   enable SSLv3 and TLSv1, but not SSLv2<br>
  SSLProtocol all -SSLv2
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLRandomSeed">SSLRandomSeed</a> <a name="sslrandomseed">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Pseudo Random Number Generator (PRNG) seeding 
  source</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLRandomSeed <em>context</em> <em>source</em> 
  [<em>bytes</em>]</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This configures one or more sources for seeding the Pseudo Random Number
  Generator (PRNG) in OpenSSL at startup time (<em>context</em> is
  <code>startup</code>) and/or just before a new SSL connection is established
  (<em>context</em> is <code>connect</code>). This directive can only be used
  in the global server context because the PRNG is a global facility.</p>
  <p>
  The following <em>source</em> variants are available:</p>
  <ul>
  <li><code>builtin</code>
      <p> This is the always available builtin seeding source. It's usage
      consumes minimum CPU cycles under runtime and hence can be always used
      without drawbacks. The source used for seeding the PRNG contains of the
      current time, the current process id and (when applicable) a randomly
      choosen 1KB extract of the inter-process scoreboard structure of Apache.
      The drawback is that this is not really a strong source and at startup
      time (where the scoreboard is still not available) this source just
      produces a few bytes of entropy. So you should always, at least for the
      startup, use an additional seeding source.</p></li>
  <li><code>file:/path/to/source</code>
      <p>
      This variant uses an external file <code>/path/to/source</code> as the
      source for seeding the PRNG. When <em>bytes</em> is specified, only the
      first <em>bytes</em> number of bytes of the file form the entropy (and
      <em>bytes</em> is given to <code>/path/to/source</code> as the first
      argument). When <em>bytes</em> is not specified the whole file forms the
      entropy (and <code>0</code> is given to <code>/path/to/source</code> as
      the first argument). Use this especially at startup time, for instance
      with an available <code>/dev/random</code> and/or
      <code>/dev/urandom</code> devices (which usually exist on modern Unix
      derivates like FreeBSD and Linux).</p>
      <p>
      <em>But be careful</em>: Usually <code>/dev/random</code> provides only as
      much entropy data as it actually has, i.e. when you request 512 bytes of
      entropy, but the device currently has only 100 bytes available two things
      can happen: On some platforms you receive only the 100 bytes while on
      other platforms the read blocks until enough bytes are available (which
      can take a long time). Here using an existing <code>/dev/urandom</code> is
      better, because it never blocks and actually gives the amount of requested
      data. The drawback is just that the quality of the received data may not
      be the best.</p>
      <p>
      On some platforms like FreeBSD one can even control how the entropy is
      actually generated, i.e. by which system interrupts. More details one can
      find under <em>rndcontrol(8)</em> on those platforms. Alternatively, when
      your system lacks such a random device, you can use tool
      like <a href="http://www.lothar.com/tech/crypto/">EGD</a>
      (Entropy Gathering Daemon) and run it's client program with the
      <code>exec:/path/to/program/</code> variant (see below) or use
      <code>egd:/path/to/egd-socket</code> (see below).</p></li>
  
  <li><code>exec:/path/to/program</code>
      <p>
      This variant uses an external executable
      <code>/path/to/program</code> as the source for seeding the
      PRNG. When <em>bytes</em> is specified, only the first
      <em>bytes</em> number of bytes of its <code>stdout</code> contents
      form the entropy. When <em>bytes</em> is not specified, the
      entirety of the data produced on <code>stdout</code> form the
      entropy. Use this only at startup time when you need a very strong
      seeding with the help of an external program (for instance as in
      the example above with the <code>truerand</code> utility you can
      find in the mod_ssl distribution which is based on the AT&amp;T
      <em>truerand</em> library). Using this in the connection context
      slows down the server too dramatically, of course.  So usually you
      should avoid using external programs in that context.</p></li>
  <li><code>egd:/path/to/egd-socket</code> (Unix only)
      <p>
      This variant uses the Unix domain socket of the
      external Entropy Gathering Daemon (EGD) (see <a href="http://www.lothar.com/tech/crypto/">http://www.lothar.com/tech
      /crypto/</a>) to seed the PRNG. Use this if no random device exists
      on your platform.</p></li>
  </ul>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLRandomSeed startup builtin<br>
  SSLRandomSeed startup file:/dev/random<br>
  SSLRandomSeed startup file:/dev/urandom 1024<br>
  SSLRandomSeed startup exec:/usr/local/bin/truerand 16<br>
  SSLRandomSeed connect builtin<br>
  SSLRandomSeed connect file:/dev/random<br>
  SSLRandomSeed connect file:/dev/urandom 1024<br>
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLRequire">SSLRequire</a> <a name="sslrequire">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Allow access only when an arbitrarily complex 
  boolean expression is true</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLRequire <em>expression</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive specifies a general access requirement which has to be
  fulfilled in order to allow access. It's a very powerful directive because the
  requirement specification is an arbitrarily complex boolean expression
  containing any number of access checks.</p>
  <p>
  The <em>expression</em> must match the following syntax (given as a BNF
  grammar notation):</p>
  <blockquote>
  <pre>
  expr     ::= "<strong>true</strong>" | "<strong>false</strong>"
             | "<strong>!</strong>" expr
             | expr "<strong>&amp;&amp;</strong>" expr
             | expr "<strong>||</strong>" expr
             | "<strong>(</strong>" expr "<strong>)</strong>"
             | comp
  
  comp     ::= word "<strong>==</strong>" word | word "<strong>eq</strong>" word
             | word "<strong>!=</strong>" word | word "<strong>ne</strong>" word
             | word "<strong>&lt;</strong>"  word | word "<strong>lt</strong>" word
             | word "<strong>&lt;=</strong>" word | word "<strong>le</strong>" word
             | word "<strong>&gt;</strong>"  word | word "<strong>gt</strong>" word
             | word "<strong>&gt;=</strong>" word | word "<strong>ge</strong>" word
             | word "<strong>in</strong>" "<strong>{</strong>" wordlist "<strong>}</strong>"
             | word "<strong>=~</strong>" regex
             | word "<strong>!~</strong>" regex
  
  wordlist ::= word
             | wordlist "<strong>,</strong>" word
  
  word     ::= digit
             | cstring
             | variable
             | function
  
  digit    ::= [0-9]+
  cstring  ::= "..."
  variable ::= "<strong>%{</strong>" varname "<strong>}</strong>"
  function ::= funcname "<strong>(</strong>" funcargs "<strong>)</strong>"
  </pre>
  </blockquote>
  <p>while for <code>varname</code> any variable from <a href="#table3">Table 3</a> can be used. Finally for
  <code>funcname</code> the following functions are available:</p>
  <ul>
  <li><code>file(</code><em>filename</em><code>)</code>
      <p>
      This function takes one string argument and expands to the contents of the
      file. This is especially useful for matching this contents against a
      regular expression, etc.</p>
  </li>
  </ul>
  <p>Notice that <em>expression</em> is first parsed into an internal machine
  representation and then evaluated in a second step. Actually, in Global and
  Per-Server Class context <em>expression</em> is parsed at startup time and
  at runtime only the machine representation is executed. For Per-Directory
  context this is different: here <em>expression</em> has to be parsed and
  immediately executed for every request.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \<br>
              and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \<br>
              and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \<br>
              and %{TIME_WDAY} &gt;= 1 and %{TIME_WDAY} &lt;= 5 \<br>
              and %{TIME_HOUR} &gt;= 8 and %{TIME_HOUR} &lt;= 20       ) \<br>
             or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
  </code></td></tr></table></blockquote>
  <table width="600" cellspacing="0" cellpadding="1" border="0" summary="">
  
  <tr><td bgcolor="#cccccc">
  <table width="598" cellpadding="5" cellspacing="0" border="0" summary="">
  <tr><td bgcolor="#ffffff">
  <table summary=""><tr><td>
  <em>Standard CGI/1.0 and Apache variables:</em>
  <pre>
  HTTP_USER_AGENT        PATH_INFO             AUTH_TYPE
  HTTP_REFERER           QUERY_STRING          SERVER_SOFTWARE
  HTTP_COOKIE            REMOTE_HOST           API_VERSION
  HTTP_FORWARDED         REMOTE_IDENT          TIME_YEAR
  HTTP_HOST              IS_SUBREQ             TIME_MON
  HTTP_PROXY_CONNECTION  DOCUMENT_ROOT         TIME_DAY
  HTTP_ACCEPT            SERVER_ADMIN          TIME_HOUR
  HTTP:headername        SERVER_NAME           TIME_MIN
  THE_REQUEST            SERVER_PORT           TIME_SEC
  REQUEST_METHOD         SERVER_PROTOCOL       TIME_WDAY
  REQUEST_SCHEME         REMOTE_ADDR           TIME
  REQUEST_URI            REMOTE_USER           ENV:<strong>variablename</strong>
  REQUEST_FILENAME
  </pre>
  <em>SSL-related variables:</em>
  <pre>
  HTTPS                  SSL_CLIENT_M_VERSION   SSL_SERVER_M_VERSION
                         SSL_CLIENT_M_SERIAL    SSL_SERVER_M_SERIAL
  SSL_PROTOCOL           SSL_CLIENT_V_START     SSL_SERVER_V_START
  SSL_SESSION_ID         SSL_CLIENT_V_END       SSL_SERVER_V_END
  SSL_CIPHER             SSL_CLIENT_S_DN        SSL_SERVER_S_DN
  SSL_CIPHER_EXPORT      SSL_CLIENT_S_DN_C      SSL_SERVER_S_DN_C
  SSL_CIPHER_ALGKEYSIZE  SSL_CLIENT_S_DN_ST     SSL_SERVER_S_DN_ST
  SSL_CIPHER_USEKEYSIZE  SSL_CLIENT_S_DN_L      SSL_SERVER_S_DN_L
  SSL_VERSION_LIBRARY    SSL_CLIENT_S_DN_O      SSL_SERVER_S_DN_O
  SSL_VERSION_INTERFACE  SSL_CLIENT_S_DN_OU     SSL_SERVER_S_DN_OU
                         SSL_CLIENT_S_DN_CN     SSL_SERVER_S_DN_CN
                         SSL_CLIENT_S_DN_T      SSL_SERVER_S_DN_T
                         SSL_CLIENT_S_DN_I      SSL_SERVER_S_DN_I
                         SSL_CLIENT_S_DN_G      SSL_SERVER_S_DN_G
                         SSL_CLIENT_S_DN_S      SSL_SERVER_S_DN_S
                         SSL_CLIENT_S_DN_D      SSL_SERVER_S_DN_D
                         SSL_CLIENT_S_DN_UID    SSL_SERVER_S_DN_UID
                         SSL_CLIENT_S_DN_Email  SSL_SERVER_S_DN_Email
                         SSL_CLIENT_I_DN        SSL_SERVER_I_DN
                         SSL_CLIENT_I_DN_C      SSL_SERVER_I_DN_C
                         SSL_CLIENT_I_DN_ST     SSL_SERVER_I_DN_ST
                         SSL_CLIENT_I_DN_L      SSL_SERVER_I_DN_L
                         SSL_CLIENT_I_DN_O      SSL_SERVER_I_DN_O
                         SSL_CLIENT_I_DN_OU     SSL_SERVER_I_DN_OU
                         SSL_CLIENT_I_DN_CN     SSL_SERVER_I_DN_CN
                         SSL_CLIENT_I_DN_T      SSL_SERVER_I_DN_T
                         SSL_CLIENT_I_DN_I      SSL_SERVER_I_DN_I
                         SSL_CLIENT_I_DN_G      SSL_SERVER_I_DN_G
                         SSL_CLIENT_I_DN_S      SSL_SERVER_I_DN_S
                         SSL_CLIENT_I_DN_D      SSL_SERVER_I_DN_D
                         SSL_CLIENT_I_DN_UID    SSL_SERVER_I_DN_UID
                         SSL_CLIENT_I_DN_Email  SSL_SERVER_I_DN_Email
                         SSL_CLIENT_A_SIG       SSL_SERVER_A_SIG
                         SSL_CLIENT_A_KEY       SSL_SERVER_A_KEY
                         SSL_CLIENT_CERT        SSL_SERVER_CERT
                         SSL_CLIENT_CERT_CHAIN<strong>n</strong>
                         SSL_CLIENT_VERIFY
  </pre>
  </td></tr></table>
  </td>
  </tr></table>
  </td></tr></table>
  <hr/><h2><a name="SSLRequireSSL">SSLRequireSSL</a> <a name="sslrequiressl">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Deny access when SSL is not used for the 
  HTTP request</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLRequireSSL</td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive forbids access unless HTTP over SSL (i.e. HTTPS) is enabled for
  the current connection. This is very handy inside the SSL-enabled virtual
  host or directories for defending against configuration errors that expose
  stuff that should be protected. When this directive is present all requests
  are denied which are not using SSL.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLRequireSSL
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLSessionCache">SSLSessionCache</a> <a name="sslsessioncache">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Type of the global/inter-process SSL Session 
  Cache</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLSessionCache <em>type</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSLSessionCache none</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This configures the storage type of the global/inter-process SSL Session
  Cache. This cache is an optional facility which speeds up parallel request
  processing. For requests to the same server process (via HTTP keep-alive),
  OpenSSL already caches the SSL session information locally. But because modern
  clients request inlined images and other data via parallel requests (usually
  up to four parallel requests are common) those requests are served by
  <em>different</em> pre-forked server processes. Here an inter-process cache
  helps to avoid unneccessary session handshakes.</p>
  <p>
  The following two storage <em>type</em>s are currently supported:</p>
  <ul>
  <li><code>none</code>
      <p>
      This is the default and just disables the global/inter-process Session
      Cache. There is no drawback in functionality, but a noticeable speed
      penalty can be observed.</p></li>
  <li><code>dbm:/path/to/datafile</code>
      <p>
      This makes use of a DBM hashfile on the local disk to synchronize the
      local OpenSSL memory caches of the server processes. The slight increase
      in I/O on the server results in a visible request speedup for your
      clients, so this type of storage is generally recommended.</p></li>
  <li><code>shm:/path/to/datafile</code>[<code>(</code><em>size</em><code>)</code>]
      <p>
      This makes use of a high-performance hash table (approx. <em>size</em> bytes
      in size) inside a shared memory segment in RAM (established via
      <code>/path/to/datafile</code>) to synchronize the local OpenSSL memory
      caches of the server processes. This storage type is not available on all
      platforms. See the mod_ssl <code>INSTALL</code> document for details on
      how to build Apache+EAPI with shared memory support.</p></li>
  </ul>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Examples</strong></p><code>
  SSLSessionCache dbm:/usr/local/apache/logs/ssl_gcache_data<br>
  SSLSessionCache shm:/usr/local/apache/logs/ssl_gcache_data(512000)
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLSessionCacheTimeout">SSLSessionCacheTimeout</a> <a name="sslsessioncachetimeout">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Number of seconds before an SSL session expires
  in the Session Cache</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLSessionCacheTimeout <em>seconds</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSLSessionCacheTimeout 300</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive sets the timeout in seconds for the information stored in the
  global/inter-process SSL Session Cache and the OpenSSL internal memory cache.
  It can be set as low as 15 for testing, but should be set to higher
  values like 300 in real life.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLSessionCacheTimeout 600
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLVerifyClient">SSLVerifyClient</a> <a name="sslverifyclient">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Type of Client Certificate verification</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLVerifyClient <em>level</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSLVerifyClient none</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive sets the Certificate verification level for the Client
  Authentication. Notice that this directive can be used both in per-server and
  per-directory context. In per-server context it applies to the client
  authentication process used in the standard SSL handshake when a connection is
  established. In per-directory context it forces a SSL renegotation with the
  reconfigured client verification level after the HTTP request was read but
  before the HTTP response is sent.</p>
  <p>
  The following levels are available for <em>level</em>:</p>
  <ul>
  <li><strong>none</strong>:
       no client Certificate is required at all</li>
  <li><strong>optional</strong>:
       the client <em>may</em> present a valid Certificate</li>
  <li><strong>require</strong>:
       the client <em>has to</em> present a valid Certificate</li>
  <li><strong>optional_no_ca</strong>:
       the client may present a valid Certificate<br>
       but it need not to be (successfully) verifiable.</li>
  </ul>
  <p>In practice only levels <strong>none</strong> and
  <strong>require</strong> are really interesting, because level
  <strong>optional</strong> doesn't work with all browsers and level
  <strong>optional_no_ca</strong> is actually against the idea of
  authentication (but can be used to establish SSL test pages, etc.)</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLVerifyClient require
  </code></td></tr></table></blockquote>
  <hr/><h2><a name="SSLVerifyDepth">SSLVerifyDepth</a> <a name="sslverifydepth">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maximum depth of CA Certificates in Client 
  Certificate verification</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SSLVerifyDepth <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>SSLVerifyDepth 1</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>AuthConfig</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_ssl</td></tr></table></td></tr></table>
  <p>
  This directive sets how deeply mod_ssl should verify before deciding that the
  clients don't have a valid certificate. Notice that this directive can be
  used both in per-server and per-directory context. In per-server context it
  applies to the client authentication process used in the standard SSL
  handshake when a connection is established. In per-directory context it forces
  a SSL renegotation with the reconfigured client verification depth after the
  HTTP request was read but before the HTTP response is sent.</p>
  <p>
  The depth actually is the maximum number of intermediate certificate issuers,
  i.e. the number of CA certificates which are max allowed to be followed while
  verifying the client certificate. A depth of 0 means that self-signed client
  certificates are accepted only, the default depth of 1 means the client
  certificate can be self-signed or has to be signed by a CA which is directly
  known to the server (i.e. the CA's certificate is under
  <a href="#sslcacertificatepath" class="directive"><code class="directive">SSLCACertificatePath</code></a>), etc.</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><p align="center"><strong>Example</strong></p><code>
  SSLVerifyDepth 10
  </code></td></tr></table></blockquote>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_status.html.en
  
  Index: mod_status.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_status- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_status</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides information on server activity and
  performance</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>status_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">
    <strong>Warning:</strong> This document has not been updated
    to take into account changes made in the 2.0 version of the
    Apache HTTP Server. Some of the information may still be
    relevant, but please use it with care.
  </td></tr></table></blockquote>
  
      <p>The Status module allows a server administrator to find out
      how well their server is performing. A HTML page is presented
      that gives the current server statistics in an easily readable
      form. If required this page can be made to automatically
      refresh (given a compatible browser). Another page gives a
      simple machine-readable list of the current server state.</p>
  
      <p>The details given are:</p>
  
      <ul>
        <li>The number of children serving requests</li>
  
        <li>The number of idle children</li>
  
        <li>The status of each child, the number of requests that
        child has performed and the total number of bytes served by
        the child (*)</li>
  
        <li>A total number of accesses and byte count served (*)</li>
  
        <li>The time the server was started/restarted and the time it
        has been running for</li>
  
        <li>Averages giving the number of requests per second, the
        number of bytes served per second and the average number of
        bytes per request (*)</li>
  
        <li>The current percentage CPU used by each child and in
        total by Apache (*)</li>
  
        <li>The current hosts and requests being processed (*)</li>
      </ul>
  
      <p>A compile-time option must be used to display the details
      marked "(*)" as the instrumentation required for obtaining
      these statistics does not exist within standard Apache.</p>
  <h2>Directives</h2><ul><li><a href="#extendedstatus">ExtendedStatus</a></li></ul><h2>Enabling Status Support</h2>
      
  
      <p>To enable status reports only for browsers from the foo.com
      domain add this code to your <code>httpd.conf</code>
      configuration file</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      &lt;Location /server-status&gt;<br>
      SetHandler server-status<br>
  <br>
      Order Deny,Allow<br>
      Deny from all<br>
      Allow from .foo.com<br>
      &lt;/Location&gt;
  </code></td></tr></table></blockquote>
  
      <p>You can now access server statistics by using a Web browser
      to access the page
      <code>http://your.server.name/server-status</code></p>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5"><p>Note that <code><a href="mod_status.html">mod_status</a></code> will only work
      when you are running Apache in <a href="core.html#servertype">standalone</a> mode and not
      <a href="core.html#servertype">inetd</a> mode.</p></td></tr></table></blockquote>
  <h2>Automatic Updates</h2>
  
      
      <p>You can get the status page to update itself automatically if
      you have a browser that supports "refresh". Access the page
      <code>http://your.server.name/server-status?refresh=N</code> to
      refresh the page every N seconds.</p>
  
  <h2>Machine Readable Status File</h2>
  
      
      <p>A machine-readable version of the status file is available by
      accessing the page
      <code>http://your.server.name/server-status?auto</code>. This
      is useful when automatically run, see the Perl program in the
      <code>/support</code> directory of Apache,
      <code>log_server_status</code>.</p>
  
      <blockquote><table><tr><td bgcolor="#e0e5f5">
        <strong>It should be noted that if <code><a href="mod_status.html">mod_status</a></code> is
        compiled into the server, its handler capability is available
        in <em>all</em> configuration files, including
        <em>per</em>-directory files (<em>e.g.</em>,
        <code>.htaccess</code>). This may have security-related
        ramifications for your site.</strong>
      </td></tr></table></blockquote>
  
  <hr/><h2><a name="ExtendedStatus">ExtendedStatus</a> <a name="extendedstatus">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>This directive controls whether the server keeps track of
  extended status information for each request. This is only
  useful if the status module is enabled on the server.</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ExtendedStatus On|Off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ExtendedStatus Off</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_status</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>ExtendedStatus is only available in Apache 1.3.2 and 
  later.</td></tr></table></td></tr></table>
      <p>This setting applies to the entire server, and cannot be
      enabled or disabled on a virtualhost-by-virtualhost basis.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_suexec.html.en
  
  Index: mod_suexec.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_suexec- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_suexec</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Allows CGI scripts to run as a specified user
  and Group</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>suexec_module</td></tr><tr><td align="left" valign="top"><a href="module-dict.html#Compatibility" class="help">Compatibility:</a></td><td><compatibility>Available in Apache 2.0 and later</compatibility></td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This module allows CGI scripts to run as a specified user
      and Group.</p>
  <h2>Directives</h2><ul><li><a href="#suexecusergroup">SuexecUserGroup</a></li></ul><hr/><h2><a name="SuexecUserGroup">SuexecUserGroup</a> <a name="suexecusergroup">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SuexecUserGroup <em>User Group</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>None</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_suexec</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>SuexecUserGroup is only available in 2.0 and
  later.</td></tr></table></td></tr></table>
      <p>The <code class="directive">SuexecUserGroup</code> directive allows you to
      specify a user and group for CGI programs to run as. Non-CGI
      requests are still processes with the user specified in the
      User directive. This directive replaces using the User and
      Group directives inside of VirtualHosts.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_unique_id.html.en
  
  Index: mod_unique_id.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_unique_id- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_unique_id</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides an environment variable with a unique
  identifier for each request</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>unique_id_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
      <p>This module provides a magic token for each request which is
      guaranteed to be unique across "all" requests under very
      specific conditions. The unique identifier is even unique
      across multiple machines in a properly configured cluster of
      machines. The environment variable <code>UNIQUE_ID</code> is
      set to the identifier for each request. Unique identifiers are
      useful for various reasons which are beyond the scope of this
      document.</p>
  <h2>Directives</h2><p/><h2>Theory</h2>
      
  
      <p>First a brief recap of how the Apache server works on Unix
      machines. This feature currently isn't supported on Windows NT.
      On Unix machines, Apache creates several children, the children
      process requests one at a time. Each child can serve multiple
      requests in its lifetime. For the purpose of this discussion,
      the children don't share any data with each other. We'll refer
      to the children as httpd processes.</p>
  
      <p>Your website has one or more machines under your
      administrative control, together we'll call them a cluster of
      machines. Each machine can possibly run multiple instances of
      Apache. All of these collectively are considered "the
      universe", and with certain assumptions we'll show that in this
      universe we can generate unique identifiers for each request,
      without extensive communication between machines in the
      cluster.</p>
  
      <p>The machines in your cluster should satisfy these
      requirements. (Even if you have only one machine you should
      synchronize its clock with NTP.)</p>
  
      <ul>
        <li>The machines' times are synchronized via NTP or other
        network time protocol.</li>
  
        <li>The machines' hostnames all differ, such that the module
        can do a hostname lookup on the hostname and receive a
        different IP address for each machine in the cluster.</li>
      </ul>
  
      <p>As far as operating system assumptions go, we assume that
      pids (process ids) fit in 32-bits. If the operating system uses
      more than 32-bits for a pid, the fix is trivial but must be
      performed in the code.</p>
  
      <p>Given those assumptions, at a single point in time we can
      identify any httpd process on any machine in the cluster from
      all other httpd processes. The machine's IP address and the pid
      of the httpd process are sufficient to do this. So in order to
      generate unique identifiers for requests we need only
      distinguish between different points in time.</p>
  
      <p>To distinguish time we will use a Unix timestamp (seconds
      since January 1, 1970 UTC), and a 16-bit counter. The timestamp
      has only one second granularity, so the counter is used to
      represent up to 65536 values during a single second. The
      quadruple <em>( ip_addr, pid, time_stamp, counter )</em> is
      sufficient to enumerate 65536 requests per second per httpd
      process. There are issues however with pid reuse over time, and
      the counter is used to alleviate this issue.</p>
  
      <p>When an httpd child is created, the counter is initialized
      with ( current microseconds divided by 10 ) modulo 65536 (this
      formula was chosen to eliminate some variance problems with the
      low order bits of the microsecond timers on some systems). When
      a unique identifier is generated, the time stamp used is the
      time the request arrived at the web server. The counter is
      incremented every time an identifier is generated (and allowed
      to roll over).</p>
  
      <p>The kernel generates a pid for each process as it forks the
      process, and pids are allowed to roll over (they're 16-bits on
      many Unixes, but newer systems have expanded to 32-bits). So
      over time the same pid will be reused. However unless it is
      reused within the same second, it does not destroy the
      uniqueness of our quadruple. That is, we assume the system does
      not spawn 65536 processes in a one second interval (it may even
      be 32768 processes on some Unixes, but even this isn't likely
      to happen).</p>
  
      <p>Suppose that time repeats itself for some reason. That is,
      suppose that the system's clock is screwed up and it revisits a
      past time (or it is too far forward, is reset correctly, and
      then revisits the future time). In this case we can easily show
      that we can get pid and time stamp reuse. The choice of
      initializer for the counter is intended to help defeat this.
      Note that we really want a random number to initialize the
      counter, but there aren't any readily available numbers on most
      systems (<em>i.e.</em>, you can't use rand() because you need
      to seed the generator, and can't seed it with the time because
      time, at least at one second resolution, has repeated itself).
      This is not a perfect defense.</p>
  
      <p>How good a defense is it? Suppose that one of your machines
      serves at most 500 requests per second (which is a very
      reasonable upper bound at this writing, because systems
      generally do more than just shovel out static files). To do
      that it will require a number of children which depends on how
      many concurrent clients you have. But we'll be pessimistic and
      suppose that a single child is able to serve 500 requests per
      second. There are 1000 possible starting counter values such
      that two sequences of 500 requests overlap. So there is a 1.5%
      chance that if time (at one second resolution) repeats itself
      this child will repeat a counter value, and uniqueness will be
      broken. This was a very pessimistic example, and with real
      world values it's even less likely to occur. If your system is
      such that it's still likely to occur, then perhaps you should
      make the counter 32 bits (by editing the code).</p>
  
      <p>You may be concerned about the clock being "set back" during
      summer daylight savings. However this isn't an issue because
      the times used here are UTC, which "always" go forward. Note
      that x86 based Unixes may need proper configuration for this to
      be true -- they should be configured to assume that the
      motherboard clock is on UTC and compensate appropriately. But
      even still, if you're running NTP then your UTC time will be
      correct very shortly after reboot.</p>
  
      <p>The <code>UNIQUE_ID</code> environment variable is
      constructed by encoding the 112-bit (32-bit IP address, 32 bit
      pid, 32 bit time stamp, 16 bit counter) quadruple using the
      alphabet <code>[A-Za-z0-9@-]</code> in a manner similar to MIME
      base64 encoding, producing 19 characters. The MIME base64
      alphabet is actually <code>[A-Za-z0-9+/]</code> however
      <code>+</code> and <code>/</code> need to be specially encoded
      in URLs, which makes them less desirable. All values are
      encoded in network byte ordering so that the encoding is
      comparable across architectures of different byte ordering. The
      actual ordering of the encoding is: time stamp, IP address,
      pid, counter. This ordering has a purpose, but it should be
      emphasized that applications should not dissect the encoding.
      Applications should treat the entire encoded
      <code>UNIQUE_ID</code> as an opaque token, which can be
      compared against other <code>UNIQUE_ID</code>s for equality
      only.</p>
  
      <p>The ordering was chosen such that it's possible to change
      the encoding in the future without worrying about collision
      with an existing database of <code>UNIQUE_ID</code>s. The new
      encodings should also keep the time stamp as the first element,
      and can otherwise use the same alphabet and bit length. Since
      the time stamps are essentially an increasing sequence, it's
      sufficient to have a <em>flag second</em> in which all machines
      in the cluster stop serving and request, and stop using the old
      encoding format. Afterwards they can resume requests and begin
      issuing the new encodings.</p>
  
      <p>This we believe is a relatively portable solution to this
      problem. It can be extended to multithreaded systems like
      Windows NT, and can grow with future needs. The identifiers
      generated have essentially an infinite life-time because future
      identifiers can be made longer as required. Essentially no
      communication is required between machines in the cluster (only
      NTP synchronization is required, which is low overhead), and no
      communication between httpd processes is required (the
      communication is implicit in the pid value assigned by the
      kernel). In very specific situations the identifier can be
      shortened, but more information needs to be assumed (for
      example the 32-bit IP address is overkill for any site, but
      there is no portable shorter replacement for it). </p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_userdir.html.en
  
  Index: mod_userdir.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_userdir- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_userdir</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides for user-specific
  directories</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>userdir_module</td></tr></table></td></tr></table><h2>Summary</h2>
  <h2>Directives</h2><ul><li><a href="#userdir">UserDir</a></li></ul><hr/><h2><a name="UserDir">UserDir</a> <a name="userdir">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the directory from which to serve files when requests
  for a particular user are received, denoted by requests containing
  ~username, such as 
  http://server.example.com/~bob/</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>UserDir <em>directory-filename</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>UserDir public_html</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual
  host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Base</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_userdir</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>All forms except the UserDir public_html
  form are only available in Apache 1.1 or above. Use of the 
  enabled keyword, or disabled with a
  list of usernames, is only available in Apache 1.3 and
  above.</td></tr></table></td></tr></table>
  
      <p>The <code class="directive">UserDir</code> directive sets the real
      directory in a user's home directory to use when a request for a
      document for a user is received. <em>Directory-filename</em> is
      one of the following:</p>
  
      <ul>
        <li>The name of a directory or a pattern such as those shown
        below.</li>
  
        <li>The keyword <code>disabled</code>. This turns off
        <em>all</em> username-to-directory translations except those
        explicitly named with the <code>enabled</code> keyword (see
        below).</li>
  
        <li>The keyword <code>disabled</code> followed by a
        space-delimited list of usernames. Usernames that appear in
        such a list will <em>never</em> have directory translation
        performed, even if they appear in an <code>enabled</code>
        clause.</li>
  
        <li>The keyword <code>enabled</code> followed by a
        space-delimited list of usernames. These usernames will have
        directory translation performed even if a global disable is
        in effect, but not if they also appear in a
        <code>disabled</code> clause.</li>
      </ul>
  
      <p>If neither the <code>enabled</code> nor the
      <code>disabled</code> keywords appear in the
      <code>Userdir</code> directive, the argument is treated as a
      filename pattern, and is used to turn the name into a directory
      specification. A request for
      <code>http://www.foo.com/~bob/one/two.html</code> will be
      translated to:</p>
  
  <table>
  <tr><th>UserDir directive used</th>
  <th>Translated path</th></tr>
  <tr><td>UserDir public_html</td><td>~bob/public_html/one/two.html</td></tr>
  <tr><td>UserDir /usr/web</td><td>/usr/web/bob/one/two.html</td></tr>
  <tr><td>UserDir /home/*/www</td><td>/home/bob/www/one/two.html</td></tr>
  </table>
  
      <p>The following directives will send redirects to the client:</p> 
  
  <table>
  <tr><th>UserDir directive used</th>
  <th>Translated path</th></tr>
  <tr><td>UserDir http://www.foo.com/users</td><td>http://www.foo.com/users/bob/one/two.html</td></tr>
  <tr><td>UserDir
  http://www.foo.com/*/usr</td><td>http://www.foo.com/bob/usr/one/two.html</td></tr>
  <tr><td>UserDir
  http://www.foo.com/~*/</td><td>http://www.foo.com/~bob/one/two.html</td></tr>
  </table> 
  
  <blockquote><table><tr><td bgcolor="#e0e5f5">
        <strong>Be careful when using this directive; for instance,
        <code>"UserDir ./"</code> would map
        <code>"/~root"</code> to <code>"/"</code> - which is probably
        undesirable. If you are running Apache 1.3 or above, it is
        strongly recommended that your configuration include a
        "<code>UserDir disabled root</code>" declaration.
        See also the <a href="core.html#directory" class="directive"><code class="directive">Directory</code></a>
        directive and the <a href="../misc/security_tips.html">Security
        Tips</a> page for more information.</strong>
  </td></tr></table></blockquote>
  
  <p>Additional examples:</p>
  
  <p>To allow a few users to have <code>UserDir</code> directories, but
  not anyone else, use the following:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  UserDir disabled<br>
  UserDir enabled user1 user2 user3
  </code></td></tr></table></blockquote>
  
  <p>To allow most users to have <code>UserDir</code> directories, but
  deny this to a few, use the following:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  UserDir enabled<br>
  UserDir disabled user4 user5 user6
  </code></td></tr></table></blockquote>
  
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_usertrack.html.en
  
  Index: mod_usertrack.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_usertrack- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_usertrack</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>
      This module uses cookies to provide for a
      <em>clickstream</em> log of user activity on a site.
  </td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>usertrack_module</td></tr><tr><td align="left" valign="top"><a href="module-dict.html#Compatibility" class="help">Compatibility:</a></td><td><compatibility>Known as mod_cookies prior to Apache 1.3.</compatibility></td></tr></table></td></tr></table><h2>Summary</h2>
      <p>Previous releases of Apache have included a module which
      generates a 'clickstream' log of user activity on a site using
      cookies. This was called the "cookies" module, mod_cookies. In
      Apache 1.2 and later this module has been renamed the "user
      tracking" module, mod_usertrack. This module has been
      simplified and new directives added.</p>
  <h2>Directives</h2><ul><li><a href="#cookiedomain">CookieDomain</a></li><li><a href="#cookieexpires">CookieExpires</a></li><li><a href="#cookiename">CookieName</a></li><li><a href="#cookiestyle">CookieStyle</a></li><li><a href="#cookietracking">CookieTracking</a></li></ul><h2>Logging</h2>
  
  
      <p>Previously, the cookies module (now the user tracking
      module) did its own logging, using the <code class="directive">CookieLog</code>
      directive. In this release, this module does no logging at all.
      Instead, a configurable log format file should be used to log
      user click-streams. This is possible because the logging module
      now allows multiple log files. The cookie itself is logged by
      using the text <code>%{cookie}n</code> in the log file format. For
      example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
  CustomLog logs/clickstream "%{cookie}n %r %t"
  </code></td></tr></table></blockquote>
  
      <p>For backward compatibility the configurable log module
      implements the old <code class="directive">CookieLog</code> directive, but this
      should be upgraded to the above <code class="directive">CustomLog</code> directive. </p>
  <h2>2-digit or 4-digit dates for cookies?</h2>
  
  
      <p>(the following is from message
      &lt;022701bda43d$9d32bbb0$1201a8c0@christian.office.sane.com&gt;
      in the new-httpd archives) </p>
  <pre>
  From: "Christian Allen" &lt;christian@sane.com&gt;
  Subject: Re: Apache Y2K bug in mod_usertrack.c
  Date: Tue, 30 Jun 1998 11:41:56 -0400
  
  Did some work with cookies and dug up some info that might be useful.
  
  True, Netscape claims that the correct format NOW is four digit dates, and
  four digit dates do in fact work... for Netscape 4.x (Communicator), that
  is.  However, 3.x and below do NOT accept them.  It seems that Netscape
  originally had a 2-digit standard, and then with all of the Y2K hype and
  probably a few complaints, changed to a four digit date for Communicator.
  Fortunately, 4.x also understands the 2-digit format, and so the best way to
  ensure that your expiration date is legible to the client's browser is to
  use 2-digit dates.
  
  However, this does not limit expiration dates to the year 2000; if you use
  an expiration year of "13", for example, it is interpreted as 2013, NOT
  1913!  In fact, you can use an expiration year of up to "37", and it will be
  understood as "2037" by both MSIE and Netscape versions 3.x and up (not sure
  about versions previous to those).  Not sure why Netscape used that
  particular year as its cut-off point, but my guess is that it was in respect
  to UNIX's 2038 problem.  Netscape/MSIE 4.x seem to be able to understand
  2-digit years beyond that, at least until "50" for sure (I think they
  understand up until about "70", but not for sure).
  
  Summary:  Mozilla 3.x and up understands two digit dates up until "37"
  (2037).  Mozilla 4.x understands up until at least "50" (2050) in 2-digit
  form, but also understands 4-digit years, which can probably reach up until
  9999.  Your best bet for sending a long-life cookie is to send it for some
  time late in the year "37".
  </pre>
  
  <hr/><h2><a name="CookieDomain">CookieDomain</a> <a name="cookiedomain">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>controls the setting of the domain to which the tracking cookie applies.</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CookieDomain <em>domain</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>None</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_usertrack</td></tr></table></td></tr></table>
  
      <p>This directive controls the setting of the domain to which
      the tracking cookie applies. If not present, no domain is
      included in the cookie header field.</p>
  
      <p>The domain string <strong>must</strong> begin with a dot, and
      <strong>must</strong> include at least one embedded dot. That is,
      ".foo.com" is legal, but "foo.bar.com" and ".com" are not.</p>
  <hr/><h2><a name="CookieExpires">CookieExpires</a> <a name="cookieexpires">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CookieExpires <em>expiry-period</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code/></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_usertrack</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>In 1.3.20 and earlier, not usable in directory and
  .htaccess</td></tr></table></td></tr></table>
      <p>When used, this directive sets an expiry time on the cookie
      generated by the usertrack module. The <em>expiry-period</em>
      can be given either as a number of seconds, or in the format
      such as "2 weeks 3 days 7 hours". Valid denominations are:
      years, months, weeks, hours, minutes and seconds. If the expiry
      time is in any format other than one number indicating the
      number of seconds, it must be enclosed by double quotes.</p>
  
      <p>If this directive is not used, cookies last only for the
      current browser session.</p>
  <hr/><h2><a name="CookieName">CookieName</a> <a name="cookiename">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CookieName <em>token</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Apache</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_usertrack</td></tr></table></td></tr></table>
      <p>This directive allows you to change the name of the cookie
      this module uses for its tracking purposes. By default the
      cookie is named "<code>Apache</code>".</p>
  
      <p>You must specify a valid cookie name; results are
      unpredictable if you use a name containing unusual characters.
      Valid characters include A-Z, a-z, 0-9, "_", and "-".</p>
  <hr/><h2><a name="CookieStyle">CookieStyle</a> <a name="cookiestyle">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Controls the format of the cookie header field</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CookieStyle
      <em>Netscape|Cookie|Cookie2|RFC2109|RFC2965</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code/></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_usertrack</td></tr></table></td></tr></table>
      <p>This directive controls the format of the cookie header
      field. The three formats allowed are:</p>
  
      <ul>
        <li><strong>Netscape</strong>, which is the original but now deprecated
        syntax. This is the default, and the syntax Apache has
        historically used.</li>
  
        <li><strong>Cookie</strong> or <strong>RFC2109</strong>, which is the syntax that
        superseded the Netscape syntax.</li>
  
        <li><strong>Cookie2</strong> or <strong>RFC2965</strong>, which is the most
        current cookie syntax.</li>
      </ul>
  
      <p>Not all clients can understand all of these formats. but you
      should use the newest one that is generally acceptable to your
      users' browsers.</p>
  <hr/><h2><a name="CookieTracking">CookieTracking</a> <a name="cookietracking">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CookieTracking on|off</td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code/></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host, directory, .htaccess</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td>FileInfo</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_usertrack</td></tr></table></td></tr></table>
      <p>When the user track module is compiled in, and
      "CookieTracking on" is set, Apache will start sending a
      user-tracking cookie for all new requests. This directive can
      be used to turn this behavior on or off on a per-server or
      per-directory basis. By default, compiling mod_usertrack will
      not activate cookies. </p>
  
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mod_vhost_alias.html.en
  
  Index: mod_vhost_alias.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mod_vhost_alias- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mod_vhost_alias</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Provides for <a href="../vhosts/mass.html">dynamically configured mass virtual
  hosting</a></td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>vhost_alias_module</td></tr></table></td></tr></table><h2>Summary</h2>
  
      <p>This module creates dynamically configured virtual hosts, by
      allowing the IP address and/or the <code>Host:</code> header of
      the HTTP request to be used as part of the pathname to
      determine what files to serve. This allows for easy use of a
      huge number of virtual hosts with similar configurations.</p>
  
  
  <h2>Directives</h2><ul><li><a href="#virtualdocumentroot">VirtualDocumentRoot</a></li><li><a href="#virtualdocumentrootip">VirtualDocumentRootIP</a></li><li><a href="#virtualscriptalias">VirtualScriptAlias</a></li><li><a href="#virtualscriptaliasip">VirtualScriptAliasIP</a></li></ul><p><strong>See also </strong></p><ul><li><a href="core.html#usecanonicalname" class="directive"><code class="directive">UseCanonicalName</code></a>.</li></ul><h2>Directory Name Interpolation</h2>
      
  
      <p>All the directives in this module interpolate a string into
      a pathname. The interpolated string (henceforth called the
      "name") may be either the server name (see the <a href="core.html#usecanonicalname"><code>UseCanonicalName</code></a>
      directive for details on how this is determined) or the IP
      address of the virtual host on the server in dotted-quad
      format. The interpolation is controlled by specifiers inspired
      by <code>printf</code> which have a number of formats:</p>
  
  <table>
  
  <tr><td><code>%%</code></td>
  <td>insert a <code>%</code></td></tr>
  
  <tr><td><code>%p</code></td>
  <td>insert the port number of the virtual host</td></tr>
  
  <tr><td><code>%N.M</code></td>
  <td>insert (part of) the name</td></tr>
       
  </table>
  
      <p><code>N</code> and <code>M</code> are used to specify
      substrings of the name. <code>N</code> selects from the
      dot-separated components of the name, and <code>M</code>
      selects characters within whatever <code>N</code> has selected.
      <code>M</code> is optional and defaults to zero if it isn't
      present; the dot must be present if and only if <code>M</code>
      is present. The interpretation is as follows:</p>
  
      <table>
        <tr><td><code>0</code></td>
        <td>the whole name</td></tr>
  
        <tr><td><code>1</code></td>
        <td>the first part</td></tr>
  
        <tr><td><code>2</code></td>
        <td>the second part</td></tr>
  
        <tr><td><code>-1</code></td>
        <td>the last part</td></tr>
  
        <tr><td><code>-2</code></td>
        <td>the penultimate part</td></tr>
  
        <tr><td><code>2+</code></td>
        <td>the second and all subsequent parts</td></tr>
  
        <tr><td><code>-2+</code></td>
        <td>the penultimate and all preceding parts</td></tr>
  
        <tr><td><code>1+</code> and <code>-1+</code></td>
        <td>the same as <code>0</code></td></tr>
      </table>
  
      <p>If <code>N</code> or <code>M</code> is greater than the number
      of parts available a single underscore is interpolated. </p>
  
  <h2>Examples</h2>
      
  
      <p>For simple name-based virtual hosts you might use the
      following directives in your server configuration file:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      UseCanonicalName    Off<br>
      VirtualDocumentRoot /usr/local/apache/vhosts/%0
  </code></td></tr></table></blockquote>
  
      <p>A request for
      <code>http://www.example.com/directory/file.html</code> will be
      satisfied by the file
      <code>/usr/local/apache/vhosts/www.example.com/directory/file.html</code>.
      </p> 
  
      <p>For a very large number of virtual hosts it is a good idea
      to arrange the files to reduce the size of the
      <code>vhosts</code> directory. To do this you might use the
      following in your configuration file:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      UseCanonicalName    Off<br>
      VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2
  </code></td></tr></table></blockquote>
  
      <p>A request for
      <code>http://www.example.isp.com/directory/file.html</code>
      will be satisfied by the file
      <code>/usr/local/apache/vhosts/isp.com/e/x/a/example/directory/file.html</code>.</p>
  
      <p>A more even spread of files can be achieved by hashing from the
      end of the name, for example: </p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2
  </code></td></tr></table></blockquote>
  
      <p>The example request would come from
      <code>/usr/local/apache/vhosts/isp.com/e/l/p/example/directory/file.html</code>.</p>
  
      <p>Alternatively you might use: </p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+
  </code></td></tr></table></blockquote>
  
      <p>The example request would come from
      <code>/usr/local/apache/vhosts/isp.com/e/x/a/mple/directory/file.html</code>.</p>
  
      <p>For IP-based virtual hosting you might use the following in
      your configuration file:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      UseCanonicalName DNS<br>
      VirtualDocumentRootIP   /usr/local/apache/vhosts/%1/%2/%3/%4/docs<br>
      VirtualScriptAliasIP    /usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin
  </code></td></tr></table></blockquote>
  
      <p>A request for
      <code>http://www.example.isp.com/directory/file.html</code>
      would be satisfied by the file
      <code>/usr/local/apache/vhosts/10/20/30/40/docs/directory/file.html</code>
      if the IP address of <code>www.example.com</code> were
      10.20.30.40. A request for
      <code>http://www.example.isp.com/cgi-bin/script.pl</code> would
      be satisfied by executing the program
      <code>/usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl</code>.</p>
  
      <p>If you want to include the <code>.</code> character in a
      <code>VirtualDocumentRoot</code> directive, but it clashes with
      a <code>%</code> directive, you can work around the problem in
      the following way:</p>
  
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
      VirtualDocumentRoot /usr/local/apache/vhosts/%2.0.%3.0
  </code></td></tr></table></blockquote>
  
      <p>A request for
      <code>http://www.example.isp.com/directory/file.html</code>
      will be satisfied by the file
      <code>/usr/local/apache/vhosts/example.isp/directory/file.html</code>.</p>
       
      <p>The <a href="mod_log_config.html#logformat" class="directive"><code class="directive">LogFormat</code></a>
      directives <code>%V</code> and <code>%A</code> are useful
      in conjunction with this module.</p>
  <hr/><h2><a name="VirtualDocumentRoot">VirtualDocumentRoot</a> <a name="virtualdocumentroot">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Dynamically configure the location of the document root
  for a given virtual host</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>VirtualDocumentRoot <em>interpolated-directory</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>none</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_vhost_alias</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>VirtualDocumentRoot is only available in 1.3.7 and
  later.</td></tr></table></td></tr></table>
  
      <p>The <code>VirtualDocumentRoot</code> directive allows you to
      determine where Apache will find your documents based on the
      value of the server name. The result of expanding
      <em>interpolated-directory</em> is used as the root of the
      document tree in a similar manner to the <a href="core.html#documentroot" class="directive"><code class="directive">DocumentRoot</code></a> directive's argument. 
      If <em>interpolated-directory</em> is <code>none</code> then
      <code>VirtaulDocumentRoot</code> is turned off. This directive 
      cannot be used in the same context as
      <code class="directive">VirtualDocumentRootIP</code>.</p>
  
  <hr/><h2><a name="VirtualDocumentRootIP">VirtualDocumentRootIP</a> <a name="virtualdocumentrootip">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Dynamically configure the location of the document root
  for a given virtual host</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>VirtualDocumentRootIP <em>interpolated-directory</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>none</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_vhost_alias</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>VirtualDocumentRootIP is only available in 1.3.7 
  and later.</td></tr></table></td></tr></table>
  
  <p>The <code>VirtualDocumentRootIP</code> directive is like the
      <code class="directive">VirtualDocumentRoot</code>
      directive, except that it uses the IP address of the server end
      of the connection instead of the server name.</p>
  <hr/><h2><a name="VirtualScriptAlias">VirtualScriptAlias</a> <a name="virtualscriptalias">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Dynamically configure the location of the CGI directory for
  a given virtual host</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>VirtualScriptAlias <em>interpolated-directory</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>none</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_vhost_alias</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>VirtualScriptAlias is only available in 1.3.7
  and later.</td></tr></table></td></tr></table>
  
      <p>The <code>VirtualScriptAlias</code> directive allows you to
      determine where Apache will find CGI scripts in a similar
      manner to <code class="directive">VirtualDocumentRoot</code>
      does for other documents. It matches requests for URIs starting
      <code>/cgi-bin/</code>, much like <a href="mod_alias.html#scriptalias" class="directive"><code class="directive">ScriptAlias</code></a>
      <code>/cgi-bin/</code> would.</p>
  
  <hr/><h2><a name="VirtualScriptAliasIP">VirtualScriptAliasIP</a> <a name="virtualscriptaliasip">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Dynamically configure the location of the cgi directory for
  a given virtual host</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>VirtualScriptAliasIP <em>interpolated-directory</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>none</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Override" class="help">Override:</a></td><td/></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>Extension</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mod_vhost_alias</td></tr><tr><td align="left" valign="top"><a href="directive-dict.html#Compatibility" class="help">Compatibility:</a></td><td>VirtualScriptAliasIP is only available in 1.3.7 
  and later.</td></tr></table></td></tr></table>
  
      <p>The <code>VirtualScriptAliasIP</code> directive is like the
      <a href="#virtualscriptalias"><code>VirtualScriptAlias</code></a>
      directive, except that it uses the IP address of the server end
      of the connection instead of the server name.</p>
  
      <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mpm_common.html.en
  
  Index: mpm_common.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mpm_common- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mpm_common</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>A collection of directives that are implemented by
  more than one multi-processing module (MPM)</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr></table></td></tr></table><h2>Directives</h2><ul><li><a href="#coredumpdirectory">CoreDumpDirectory</a></li><li><a href="#group">Group</a></li><li><a href="#listen">Listen</a></li><li><a href="#listenbacklog">ListenBackLog</a></li><li><a href="#lockfile">LockFile</a></li><li><a href="#maxclients">MaxClients</a></li><li><a href="#maxrequestsperchild">MaxRequestsPerChild</a></li><li><a href="#maxsparethreads">MaxSpareThreads</a></li><li><a href="#maxthreadsperchild">MaxThreadsPerChild</a></li><li><a href="#minsparethreads">MinSpareThreads</a></li><li><a href="#numservers">NumServers</a></li><li><a href="#pidfile">PidFile</a></li><li><a href="#scoreboardfile">ScoreBoardFile</a></li><li><a href="#sendbuffersize">SendBufferSize</a></li><li><a href="#serverlimit">ServerLimit</a></li><li><a href="#startservers">StartServers</a></li><li><a href="#startthreads">StartThreads</a></li><li><a href="#threadlimit">ThreadLimit</a></li><li><a href="#threadsperchild">ThreadsPerChild</a></li><li><a href="#user">User</a></li></ul><hr/><h2><a name="CoreDumpDirectory">CoreDumpDirectory</a> <a name="coredumpdirectory">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the directory where Apache attempts to
  switch before dumping core</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>CoreDumpDirectory <em>directory</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>See usage for the default setting</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code>, <code><a href="prefork.html">prefork</a></code>, <code><a href="mpm_winnt.html">mpm_winnt</a></code></td></tr></table></td></tr></table>
  
      <p>This controls the directory to which Apache attempts to
      switch before dumping core. The default is in the 
      <a href="core.html#serverroot" class="directive"><code class="directive">ServerRoot</code></a> directory, however
      since this should not be writable by the user the server runs
      as, core dumps won't normally get written. If you want a core
      dump for debugging, you can use this directive to place it in a
      different location.</p>
  <hr/><h2><a name="Group">Group</a> <a name="group">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the group under which the server will answer
  requests</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Group <em>unix-group</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>Group #-1</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code>, <code><a href="prefork.html">prefork</a></code></td></tr></table></td></tr></table>
      <p>The <code class="directive">Group</code> directive sets the group under
      which the server will answer requests. In order to use this
      directive, the stand-alone server must be run initially as root.
      <em>Unix-group</em> is one of:</p>
  
      <dl>
        <dt>A group name</dt>
  
        <dd>Refers to the given group by name.</dd>
  
        <dt># followed by a group number.</dt>
  
        <dd>Refers to a group by its number.</dd>
      </dl>
      <p>It is recommended that you set up a new group specifically for
      running the server. Some admins use user <code>nobody</code>,
      but this is not always possible or desirable.</p>
  
      <p>Note: if you start the server as a non-root user, it will
      fail to change to the specified group, and will instead
      continue to run as the group of the original user.</p>
  
      <p>Special note: Use of this directive in &lt;VirtualHost&gt; is
      no longer supported. To implement the <a href="../suexec.html">suEXEC wrapper</a> with Apache 2.0, use the
      <a href="mod_suexec.html#suexecusergroup" class="directive"><code class="directive">SuexecUserGroup</code></a>
      directive. SECURITY: See <a href="#user" class="directive"><code class="directive">User</code></a> for a discussion of the
      security considerations.</p>
  <hr/><h2><a name="Listen">Listen</a> <a name="listen">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the IP addresses and ports that the server
  listens to</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>Listen [<em>IP-address</em>:]<em>portnumber</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code>, <code><a href="prefork.html">prefork</a></code>, <code><a href="mpm_winnt.html">mpm_winnt</a></code></td></tr></table></td></tr></table>
      <p>The <code class="directive">Listen</code> directive instructs Apache to
      listen to only specific IP addresses or ports; by default it
      responds to requests on all IP interfaces. The Listen directive is
      now a required directive. If it is not in the config file, the
      server will fail to start. This is a change from previous versions
      of Apache.</p>
  
      <p>The Listen directive tells the server to accept incoming
      requests on the specified port or address-and-port combination.
      If only a port number is specified, the server listens to the
      given port on all interfaces. If an IP address is given as well 
      as a port, the server will listen on the given port and
      interface.</p>
  
      <p>Multiple Listen directives may be used to specify a number
      of addresses and ports to listen to. The server will respond to
      requests from any of the listed addresses and ports.</p>
  
      <p>For example, to make the server accept connections on both
      port 80 and port 8000, use:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     Listen 80<br>
     Listen 8000
  </code></td></tr></table></blockquote>
      <p>To make the server accept connections on two specified
      interfaces and port numbers, use </p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     Listen 192.170.2.1:80<br>
     Listen 192.170.2.5:8000
  </code></td></tr></table></blockquote>
      <p>IPv6 addresses must be surrounded in square brackets, as in the
      following example:</p>
  <blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
     Listen [fe80::a00:20ff:fea7:ccea]:80
  </code></td></tr></table></blockquote>
  <p><strong>See also </strong></p><ul><li><a href="../dns-caveats.html">DNS Issues</a></li><li><a href="../bind.html">Setting
      which addresses and ports Apache uses</a></li></ul><hr/><h2><a name="ListenBackLog">ListenBackLog</a> <a name="listenbacklog">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maximum length of the queue of pending connections</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ListenBacklog <em>backlog</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ListenBacklog 511</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code>, <code><a href="prefork.html">prefork</a></code>, <code><a href="mpm_winnt.html">mpm_winnt</a></code></td></tr></table></td></tr></table>
      <p>The maximum length of the queue of pending connections.
      Generally no tuning is needed or desired, however on some
      systems it is desirable to increase this when under a TCP SYN
      flood attack. See the backlog parameter to the
      <code>listen(2)</code> system call.</p>
  
      <p>This will often be limited to a smaller number by the
      operating system. This varies from OS to OS. Also note that
      many OSes do not use exactly what is specified as the backlog,
      but use a number based on (but normally larger than) what is
      set.</p>
  <hr/><h2><a name="LockFile">LockFile</a> <a name="lockfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Location of the accept serialization lock file</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>LockFile <em>filename</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>LockFile logs/accept.lock</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code>, <code><a href="prefork.html">prefork</a></code></td></tr></table></td></tr></table>
      <p>The <code class="directive">LockFile</code> directive sets the path to
      the lockfile used when Apache is compiled with either
      USE_FCNTL_SERIALIZED_ACCEPT or USE_FLOCK_SERIALIZED_ACCEPT. This
      directive should normally be left at its default value. The main
      reason for changing it is if the <code>logs</code> directory is
      NFS mounted, since <strong>the lockfile must be stored on a local
      disk</strong>.  The PID of the main server process is
      automatically appended to the filename.</p>
  
      <p><strong>SECURITY:</strong> It is best to avoid putting this
      file in a world writable directory such as
      <code>/var/tmp</code> because someone could create a denial of
      service attack and prevent the server from starting by creating
      a lockfile with the same name as the one the server will try to
      create.</p>
  <hr/><h2><a name="MaxClients">MaxClients</a> <a name="maxclients">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maximum number of child processes that will be created
  to serve requests</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MaxClients <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>&gt;MaxClients
      8 (with threads) MaxClients 256</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="prefork.html">prefork</a></code></td></tr></table></td></tr></table>
      <p>The <code class="directive">MaxClients</code> directive sets the limit
      on the number of child processes that will be created to serve
      requests. When the server is built without threading, no more than
      this number of clients can be served simultaneously. To configure
      more than 256 clients with the prefork MPM, you must use the
      <a href="#serverlimit" class="directive"><code class="directive">ServerLimit</code></a> directive.
      To configure more than 1024 clients with the worker MPM, you must
      use the <a href="#serverlimit" class="directive"><code class="directive">ServerLimit</code></a> and
      <a href="#threadlimit" class="directive"><code class="directive">ThreadLimit</code></a> directives.</p>
  
      <p>Any connection attempts over the
      <code class="directive">MaxClients</code> limit will normally be queued,
      up to a number based on the <a href="#listenbacklog" class="directive"><code class="directive">ListenBacklog</code></a> directive. Once a child
      process is freed at the end of a different request, the connection
      will then be serviced.</p>
  
      <p>When the server is compiled with threading, then the maximum
      number of simultaneous requests that can be served is obtained
      from the value of this directive multiplied by
      <a href="#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a>.</p>
  <hr/><h2><a name="MaxRequestsPerChild">MaxRequestsPerChild</a> <a name="maxrequestsperchild">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Limit on the number of requests that an individual child server
  will handle during its life</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MaxRequestsPerChild <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MaxRequestsPerChild 10000</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code>, <code><a href="prefork.html">prefork</a></code>, <code><a href="mpm_winnt.html">mpm_winnt</a></code></td></tr></table></td></tr></table>
      <p>The <code class="directive">MaxRequestsPerChild</code> directive sets
      the limit on the number of requests that an individual child
      server process will handle. After
      <code class="directive">MaxRequestsPerChild</code> requests, the child
      process will die. If <code class="directive">MaxRequestsPerChild</code> is
      0, then the process will never expire.</p>
  
      <p>Setting <code class="directive">MaxRequestsPerChild</code> to a
      non-zero limit has two beneficial effects:</p>
  
      <ul>
        <li>it limits the amount of memory that process can consume
        by (accidental) memory leakage;</li>
  
        <li>by giving processes a finite lifetime, it helps reduce
        the number of processes when the server load reduces.</li>
      </ul>
  
      <p><strong>NOTE:</strong> For <em>KeepAlive</em> requests, only
      the first request is counted towards this limit. In effect, it
      changes the behavior to limit the number of
      <em>connections</em> per child.</p>
  <hr/><h2><a name="MaxSpareThreads">MaxSpareThreads</a> <a name="maxsparethreads">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maximum number of idle threads</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MaxSpareThreads <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MaxSpareThreads 10 (Perchild) or 500 (worker)</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code></td></tr></table></td></tr></table>
      <p>Maximum number of idle threads. Different MPMs deal with this
      directive differently. <code><a href="perchild.html">perchild</a></code> monitors the
      number of idle threads on a per-child basis. If there are too many
      idle threads in that child, the server will begin to kill threads
      within that child.</p>
  
      <p><code><a href="worker.html">worker</a></code> deals with idle threads on a
      server-wide basis. If there are too many idle threads in the
      server then child processes are killed until the number of idle
      threads is less than this number.</p>
  
  <p><strong>See also </strong></p><ul><li><a href="#minsparethreads" class="directive"><code class="directive">MinSpareThreads</code></a></li><li><a href="#startservers" class="directive"><code class="directive">StartServers</code></a></li></ul><hr/><h2><a name="MaxThreadsPerChild">MaxThreadsPerChild</a> <a name="maxthreadsperchild">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maximum number of threads per child process</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MaxThreadsPerChild <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MaxThreadsPerChild 64</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code></td></tr></table></td></tr></table>
      <p>Maximum number of threads per child. For MPMs with a
      variable number of threads per child, this directive sets the
      maximum number of threads that will be created in each child
      process. To increase this value beyond its default, it is
      necessary to change the value of the compile-time define
      <code>HARD_THREAD_LIMIT</code> and recompile the server.</p>
  <hr/><h2><a name="MinSpareThreads">MinSpareThreads</a> <a name="minsparethreads">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Minimum number of idle threads available to handle request
  spikes</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MinSpareServers <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MinSpareThreads 5 (Perchild) or 250 (worker)</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code></td></tr></table></td></tr></table>
      <p>Minimum number of idle threads to handle request spikes.
      Different MPMs deal with this directive
      differently. <code><a href="perchild.html">perchild</a></code> monitors the number of idle
      threads on a per-child basis. If there aren't enough idle threads
      in that child, the server will begin to create new threads within
      that child.</p>
  
      <p><code><a href="worker.html">worker</a></code> deals with idle threads on a
      server-wide basis. If there aren't enough idle threads in the
      server then child processes are created until the number of idle
      threads is greater than number.</p>
  <p><strong>See also </strong></p><ul><li><a href="#maxsparethreads" class="directive"><code class="directive">MaxSpareThreads</code></a></li><li><a href="#startservers" class="directive"><code class="directive">StartServers</code></a></li></ul><hr/><h2><a name="NumServers">NumServers</a> <a name="numservers">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Total number of children alive at the same time</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>NumServers <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>NumServers 2</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="perchild.html">perchild</a></code></td></tr></table></td></tr></table>
      <p>Number of children alive at the same time. MPMs that use
      this directive do not dynamically create new child processes so
      this number should be large enough to handle the requests for
      the entire site.</p>
  <hr/><h2><a name="PidFile">PidFile</a> <a name="pidfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the file where the server records the process ID
  of the daemon</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>PidFile <em>filename</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>PidFile logs/httpd.pid</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchilde.html">perchilde</a></code>, <code><a href="prefork.html">prefork</a></code>, <code><a href="mpm_winnt.html">mpm_winnt</a></code></td></tr></table></td></tr></table>
      <p>The <code class="directive">PidFile</code> directive sets the file to
      which the server records the process id of the daemon. If the
      filename does not begin with a slash (/) then it is assumed to be
      relative to the <a href="core.html#serverroot" class="directive"><code class="directive">ServerRoot</code></a>.</p>
  
      <p>It is often useful to be able to send the server a signal,
      so that it closes and then reopens its <a href="core.html#errorlog" class="directive"><code class="directive">ErrorLog</code></a> and TransferLog, and
      re-reads its configuration files. This is done by sending a
      SIGHUP (kill -1) signal to the process id listed in the
      PidFile.</p>
  
      <p>The PidFile is subject to the same warnings about log file
      placement and <a href="../misc/security_tips.html#serverroot">security</a>.</p>
  <hr/><h2><a name="ScoreBoardFile">ScoreBoardFile</a> <a name="scoreboardfile">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Location of the file used to store coordination data for
  the child processes</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ScoreBoardFile <em>file-path</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ScoreBoardFile logs/apache_status</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code>, <code><a href="prefork.html">prefork</a></code></td></tr></table></td></tr></table>
      <p>Apache uses a scoreboard to communicate between its parent
      and child processes.  Some architectures require a file to facilitate
      this communication. If the file is left unspecified, Apache first
      attempts to create the scoreboard entirely in memory (using anonymous
      shared memory) and, failing that, will attempt to create the file on
      disk (using file-based shared memory). Specifying this directive causes
      Apache to always create the file on the disk.</p>
  
      <p>File-based shared memory is useful for third-party applications
      that require direct access to the scoreboard.</p>
  
      <p>If you use a <code class="directive">ScoreBoardFile</code> then
      you may see improved speed by placing it on a RAM disk. But be
      careful that you heed the same warnings about log file placement
      and <a href="../misc/security_tips.html">security</a>.</p>
  <p><strong>See also </strong></p><ul><li><a href="../stopping.html">Stopping and Restarting Apache</a></li></ul><hr/><h2><a name="SendBufferSize">SendBufferSize</a> <a name="sendbuffersize">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>TCP buffer size</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>SendBufferSize <em>bytes</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code>, <code><a href="prefork.html">prefork</a></code>, <code><a href="mpm_winnt.html">mpm_winnt</a></code></td></tr></table></td></tr></table>
      <p>The server will set the TCP buffer size to the number of bytes
      specified. Very useful to increase past standard OS defaults on
      high speed high latency (<em>i.e.</em>, 100ms or so, such as
      transcontinental fast pipes).</p>
  <hr/><h2><a name="ServerLimit">ServerLimit</a> <a name="serverlimit">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Upper limit on configurable number of processes</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ServerLimit <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ServerLimit 256 (prefork), ServerLimit 16 (worker)</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="prefork.html">prefork</a></code></td></tr></table></td></tr></table>
      <p>For the <code><a href="prefork.html">prefork</a></code> MPM, this directive sets the
      maximum configured value for <a href="#maxclients" class="directive"><code class="directive">MaxClients</code></a> for the lifetime of the
      Apache process.  For the worker MPM, this directive in combination
      with <a href="#threadlimit" class="directive"><code class="directive">ThreadLimit</code></a> sets
      the maximum configured value for <a href="#maxclients" class="directive"><code class="directive">MaxClients</code></a> for the lifetime of the
      Apache process.  Any attempts to change this directive during a
      restart will be ignored, but <a href="#maxclients" class="directive"><code class="directive">MaxClients</code></a> can be modified during
      a restart.</p>
  
      <p>Special care must be taken when using this directive.  If
      <code class="directive">ServerLimit</code> is set to a value much higher
      than necessary, extra, unused shared memory will be allocated.  If
      both <code class="directive">ServerLimit</code> and <a href="#maxclients" class="directive"><code class="directive">MaxClients</code></a> are set to values
      higher than the system can handle, Apache may not start or the
      system may become unstable.</p>
  
      <p>With the <code><a href="prefork.html">prefork</a></code> MPM, use this directive only
      if you need to set <a href="#maxclients" class="directive"><code class="directive">MaxClients</code></a> higher higher than 256.
      Do not set the value of this directive any higher than what you
      might want to set <a href="#maxclients" class="directive"><code class="directive">MaxClients</code></a> to.</p>
  
      <p>With the <code><a href="worker.html">worker</a></code> MPM, use this directive only
      if your <a href="#maxclients" class="directive"><code class="directive">MaxClients</code></a> and
      <a href="#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a>
      settings require more than 16 server processes.  Do not set the
      value of this directive any higher than the number of server
      processes required by what you may want for <a href="#maxclients " class="directive"><code class="directive">MaxClients </code></a> and <a href="#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a>.</p>
  <hr/><h2><a name="StartServers">StartServers</a> <a name="startservers">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Number of child server processes created at startup</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>StartServers <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>StartServers 5</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code></td></tr></table></td></tr></table>
      <p>The <code class="directive">StartServers</code> directive sets the
      number of child server processes created on startup. As the number
      of processes is dynamically controlled depending on the load,
      there is usually little reason to adjust this parameter.</p>
  <p><strong>See also </strong></p><ul><li><a href="#minsparethreads" class="directive"><code class="directive">MinSpareThreads</code></a></li><li><a href="#maxsparethreads" class="directive"><code class="directive">MaxSpareThreads</code></a></li></ul><hr/><h2><a name="StartThreads">StartThreads</a> <a name="startthreads">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Nubmer of threads each child creates on startup</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>StartThreads <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>StartThreads 5</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="perchild.html">perchild</a></code></td></tr></table></td></tr></table>
      <p>Number of threads each child creates on startup. As the
      number of threads is dynamically controlled depending on the
      load, there is usually little reason to adjust this
      parameter.</p>
  <hr/><h2><a name="ThreadLimit">ThreadLimit</a> <a name="threadlimit">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Sets the upper limit on the configurable number of threads
  per child process</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ThreadLimit <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ThreadLimit 64</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code></td></tr></table></td></tr></table>
      <p>This directive sets the maximum configured value for <a href="#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a> for the lifetime
      of the Apache process.  Any attempts to change this directive
      during a restart will be ignored, but <a href="#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a> can be modified
      during a restart up to the value of this directive.</p>
  
      <p>Special care must be taken when using this directive.  If
      <code class="directive">ThreadLimit</code> is set to a value much higher
      than <a href="#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a>,
      extra unused shared memory will be allocated.  If both
      <code class="directive">ThreadLimit</code> and <a href="#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a> are set to values
      higher than the system can handle, Apache may not start or the
      system may become unstable.</p>
  
      <p>Use this directive only if you need to set <a href="#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a> higher than 64.  Do
      not set the value of this directive any higher than what you might
      want to set <a href="#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a> to.</p>
  <hr/><h2><a name="ThreadsPerChild">ThreadsPerChild</a> <a name="threadsperchild">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Number of threads created by each child process</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ThreadsPerChild <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ThreadsPerChild 50</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="mpm_winnt.html">mpm_winnt</a></code></td></tr></table></td></tr></table>
      <p>This directive sets the number of threads created by each
      child process. The child creates these threads at startup and
      never creates more. if using an MPM like mpmt_winnt, where
      there is only one child process, this number should be high
      enough to handle the entire load of the server. If using an MPM
      like worker, where there are multiple child processes, the
      total number of threads should be high enough to handle the
      common load on the server.</p>
  <hr/><h2><a name="User">User</a> <a name="user">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>The userid under which the server will answer
  requests</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>User <em>unix-userid</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>User #-1</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config, virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td><code><a href="worker.html">worker</a></code>, <code><a href="perchild.html">perchild</a></code>, <code><a href="prefork.html">prefork</a></code></td></tr></table></td></tr></table>
      <p>The <code class="directive">User</code> directive sets the userid as
      which the server will answer requests. In order to use this
      directive, the standalone server must be run initially as
      root. <em>Unix-userid</em> is one of:</p>
  
      <dl>
        <dt>A username</dt>
  
        <dd>Refers to the given user by name.</dd>
  
        <dt># followed by a user number.</dt>
  
        <dd>Refers to a user by their number.</dd>
      </dl>
  
      <p>The user should have no privileges which result in it being
      able to access files which are not intended to be visible to the
      outside world, and similarly, the user should not be able to
      execute code which is not meant for httpd requests. It is
      recommended that you set up a new user and group specifically for
      running the server. Some admins use user <code>nobody</code>, but
      this is not always possible or desirable. For example
      <code><a href="mod_proxy.html">mod_proxy</a></code>'s cache, when enabled, must be
      accessible to this user (see <a href="mod_proxy.html#cacheroot" class="directive"><code class="directive">CacheRoot</code></a>).</p>
  
      <p>Notes: If you start the server as a non-root user, it will
      fail to change to the lesser privileged user, and will instead
      continue to run as that original user. If you do start the
      server as root, then it is normal for the parent process to
      remain running as root.</p>
  
      <p>Special note: Use of this directive in <a href="core.html#virtualhost" class="directive"><code class="directive">&lt;VirtualHost&gt;</code></a> is no longer supported. To
      configure your server for <a href="mod_suexec.html">suexec</a> use
      <a href="mod_suexec.html#suexecusergroup" class="directive"><code class="directive">SuexecUserGroup</code></a>.</p>
  
  <blockquote><table><tr><td bgcolor="#e0e5f5"><p align="center"><strong>Security</strong></p> <p>Don't set <code class="directive">User</code>
  (or <a href="#group" class="directive"><code class="directive">Group</code></a>) to
  <code>root</code> unless you know exactly what you are doing, and what
  the dangers are.</p></td></tr></table></blockquote>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mpm_netware.html.en
  
  Index: mpm_netware.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mpm_netware- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mpm_netware</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Multi-Processing Module implementing an exclusively threaded web
      server optimized for Novell NetWare</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>mpm_netware_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This Multi-Processing Module (MPM) implements an exclusively threaded web server
      that has been optimized for Novell NetWare.</p>
  
      <p>The main thread is responsible for launching child
      worker threads which listen for connections and serve them when they
      arrive. Apache always tries to maintain several <em>spare</em>
      or idle worker threads, which stand ready to serve incoming
      requests. In this way, clients do not need to wait for a new
      child threads to be spawned before their requests can be
      served.</p>
  
      <p>The <code>StartThreads</code>, <code>MinSpareThreads</code>,
      <code>MaxSpareThreads</code>, and <code>MaxThreads</code>
      regulate how the main thread creates worker threads to serve
      requests. In general, Apache is very self-regulating, so most
      sites do not need to adjust these directives from their default
      values. Sites which need to serve more than 250 simultaneous
      requests may need to increase <code>MaxThreads</code>, while
      sites with limited memory may need to decrease
      <code>MaxThreads</code> to keep the server from thrashing (spawning and
      terminating idle threads). More information about
      tuning process creation is provided in the <a href="../misc/perf-tuning.html">performance hints</a>
      documentation.</p>
  
      <p><code>MaxRequestsPerChild</code> controls how frequently the
      server recycles processes by killing old ones and launching new
      ones.&nbsp; On the NetWare OS it is highly recommended that this directive
      remain set to 0.&nbsp; This allows worker threads to continue servicing
      requests indefinitely.</p>
  
      <p>See also: <a href="../bind.html">Setting which addresses and
      ports Apache uses</a>.</p>
  <h2>Directives</h2><ul><li><a href="mpm_common.html#listen">Listen</a></li><li><a href="mpm_common.html#listenbacklog">ListenBacklog</a></li><li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li><li><a href="#maxsparethreads">MaxSpareThreads</a></li><li><a href="#maxthreads">MaxThreads</a></li><li><a href="#minsparethreads">MinSpareThreads</a></li><li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li><li><a href="#startthreads">StartThreads</a></li><li><a href="#threadstacksize">ThreadStackSize</a></li></ul><hr/><h2><a name="MaxSpareThreads">MaxSpareThreads</a> <a name="maxsparethreads">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MaxSpareThreads <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MaxSpareThreads 100</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mpm_netware</td></tr></table></td></tr></table>
      <p>The <code class="directive">MaxSpareThreads</code> directive sets the
      desired maximum number of <em>idle</em> worker threads. An idle
      worker thread is one which is not handling a request. If there are
      more than MaxSpareThreads idle, then the main thread will kill off
      the excess worker threads.</p>
  
      <p>Tuning of this parameter should only be necessary on very
      busy sites. Setting this parameter to a large number is almost
      always a bad idea.</p>
  <hr/><h2><a name="MaxThreads">MaxThreads</a> <a name="maxthreads">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MaxThreads <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MaxThreads 250</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mpm_netware</td></tr></table></td></tr></table>
  <p>The MaxThreads directive sets the desired maximum
      number worker threads allowable.</p>
  <hr/><h2><a name="MinSpareThreads">MinSpareThreads</a> <a name="minsparethreads">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MinSpareThreads <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MinSpareThreads 10</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mpm_netware</td></tr></table></td></tr></table>
  <p>The <code class="directive">MinSpareThreads</code> directive sets the
  desired minimum number of <em>idle</em> worker threads. An idle worker
  thread is one which is not handling a request. If there are fewer than
  MinSpareThreads idle, then the main thread spawns new worker.</p>
  
      <p>Tuning of this parameter should only be necessary on very
      busy sites. Setting this parameter to a large number is almost
      always a bad idea.</p>
  <hr/><h2><a name="StartThreads">StartThreads</a> <a name="startthreads">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>StartThreads <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>StartThreads 50</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mpm_netware</td></tr></table></td></tr></table>
  <p>The StartThreads directive sets the desired
      number of worker threads to spawn and startup</p>
  <hr/><h2><a name="ThreadStackSize">ThreadStackSize</a> <a name="threadstacksize">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ThreadStackSize <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>ThreadStackSize 65536</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>mpm_netware</td></tr></table></td></tr></table>
      <p>This directive tells the server what stack size to use for
      each of the running threads. If you ever get a stack overflow
      you will need to bump this number to a higher setting.</p>
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/mpm_winnt.html.en
  
  Index: mpm_winnt.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>mpm_winnt- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module mpm_winnt</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>This Multi-Processing Module is optimized for Windows
      NT.</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>mpm_winnt_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This Multi-Processing Module (MPM) is the default for the
      Windows NT operating systems. It uses a single control process
      which launches a single child process which in turn creates
      threads to handle requests</p>
  <h2>Directives</h2><ul><li><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li><li><a href="mpm_common.html#listen">Listen</a></li><li><a href="mpm_common.html#listenbacklog">ListenBacklog</a></li><li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li><li><a href="mpm_common.html#pidfile">PidFile</a></li><li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li><li><a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li></ul><hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/perchild.html.en
  
  Index: perchild.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>perchild- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module perchild</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Multi-Processing Module allowing for daemon processes
      serving requests to be assigned a variety of different
      userids</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>mpm_perchild_module</td></tr></table></td></tr></table><h2>Summary</h2>
  <blockquote><table><tr><td bgcolor="#ffe5f5">
  This MPM does not currently work on most platforms.  Work is ongoing to
  make it functional.
  </td></tr></table></blockquote>
  
      <p>This Multi-Processing Module (MPM) implements a hybrid
      multi-process, multi-threaded web server. A fixed number of
      processes create threads to handle requests. Fluctuations in
      load are handled by increasing or decreasing the number of
      threads in each process.</p>
  
      <p>A single control process launches the number of child processes
      indicated by the <a href="mpm_common.html#numservers" class="directive"><code class="directive">NumServers</code></a> directive at server
      startup. Each child process creates threads as specified in the
      <code>StartThreads</code> directive. The individual threads then
      listen for connections and serve them when they arrive.</p>
  
      <p>Apache always tries to maintain a pool of <em>spare</em> or
      idle server threads, which stand ready to serve incoming
      requests. In this way, clients do not need to wait for new
      threads to be created. For each child process, Apache assesses
      the number of idle threads and creates or destroys threads to
      keep this number within the boundaries specified by
      <code>MinSpareThreads</code> and <code>MaxSpareThreads</code>.
      Since this process is very self-regulating, it is rarely
      necessary to modify these directives from their default values.
      The maximum number of clients that may be served simultaneously
      is determined by multiplying the number of server processes
      that will be created (<code>NumServers</code>) by the maximum
      number of threads created in each process
      (<code>MaxThreadsPerChild</code>).</p>
  
      <p>While the parent process is usually started as root under
      Unix in order to bind to port 80, the child processes and
      threads are launched by Apache as a less-privileged user. The
      <code>User</code> and <code>Group</code> directives are used to
      set the privileges of the Apache child processes. The child
      processes must be able to read all the content that will be
      served, but should have as few privileges beyond that as
      possible. In addition, unless <a href="../suexec.html">suexec</a> is used, these directives also
      set the privileges which will be inherited by CGI scripts.</p>
  
      <p><code>MaxRequestsPerChild</code> controls how frequently the
      server recycles processes by killing old ones and launching new
      ones.</p>
  
      <p>See also: <a href="../bind.html">Setting which addresses and
      ports Apache uses</a>.</p>
  
      <p>In addition it adds the extra ability to specify that
      specific processes should serve requests under different
      userids. These processes can then be associated with specific
      virtual hosts.</p>
      
  <h2>Directives</h2><ul><li><a href="#assignuserid">AssignUserId</a></li><li><a href="#childperuserid">ChildPerUserId</a></li><li><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li><li><a href="mpm_common.html#group">Group</a></li><li><a href="mpm_common.html#listen">Listen</a></li><li><a href="mpm_common.html#listenbacklog">ListenBacklog</a></li><li><a href="mpm_common.html#lockfile">LockFile</a></li><li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li><li><a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li><li><a href="mpm_common.html#maxthreadsperchild">MaxThreadsPerChild</a></li><li><a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li><li><a href="mpm_common.html#numservers">NumServers</a></li><li><a href="mpm_common.html#pidfile">PidFile</a></li><li><a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li><li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li><li><a href="mpm_common.html#startthreads">StartThreads</a></li><li><a href="mpm_common.html#user">User</a></li></ul><hr/><h2><a name="AssignUserId">AssignUserId</a> <a name="assignuserid">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AssignUserID <em>user_id</em> <em>group_id</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>virtual host</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>perchild</td></tr></table></td></tr></table>
      <p>Tie a virtual host to a specific child process. Requests addressed to
  the virtual host where this directive appears will be served by the process
  running with the specified user and group id.</p>
  <hr/><h2><a name="ChildPerUserId">ChildPerUserId</a> <a name="childperuserid">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>ChildPerUserID <em>user_id</em>
  <em>group_id</em> <em>child_id</em></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>perchild</td></tr></table></td></tr></table>
      <p>Specify a user id and group id for a specific child process. The number of
  children if set by the <a href="mpm_common.html#numservers">NumServers</a>
  directive. For example, the default value for <a href="mpm_common.html#numservers">NumServers</a> is 5 and that means
  children ids 1,2,3,4 and 5 are available for assigment. If a child does not
  have an associated ChildPerUserID, it inherits the <a href="mpm_common.html#user">User</a> and <a href="mpm_common.html#group">Group</a> settings from the main server </p> 
  <hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/prefork.html.en
  
  Index: prefork.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>prefork- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module prefork</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Implements a non-threaded, pre-forking web server</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>mpm_prefork_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This Multi-Processing Module (MPM) implements a
      non-threaded, pre-forking web server which handles request in a
      manner very similar to the default behavior of Apache 1.3 on
      Unix.</p>
  
      <p>A single control process is responsible for launching child
      processes which listen for connections and serve them when they
      arrive. Apache always tries to maintain several <em>spare</em>
      or idle server processes, which stand ready to serve incoming
      requests. In this way, clients do not need to wait for a new
      child processes to be forked before their requests can be
      served.</p>
  
      <p>The <a href="mpm_common.html#startservers" class="directive"><code class="directive">StartServers</code></a>,
      <a href="#minspareservers" class="directive"><code class="directive">MinSpareServers</code></a>,
      <a href="#maxspareservers" class="directive"><code class="directive">MaxSpareServers</code></a>, and
      <a href="mpm_common.html#maxclients" class="directive"><code class="directive">MaxClients</code></a> regulate how
      the parent process creates children to serve requests. In general,
      Apache is very self-regulating, so most sites do not need to
      adjust these directives from their default values. Sites which
      need to serve more than 256 simultaneous requests may need to
      increase <a href="mpm_common.html#maxclients" class="directive"><code class="directive">MaxClients</code></a>,
      while sites with limited memory may need to decrease <a href="mpm_common.html#maxclients" class="directive"><code class="directive">MaxClients</code></a> to keep the server from
      thrashing (swapping memory to disk and back). More information
      about tuning process creation is provided in the <a href="../misc/perf-tuning.html">performance hints</a>
      documentation.</p>
  
      <p>While the parent process is usually started as root under Unix
      in order to bind to port 80, the child processes are launched by
      Apache as a less-privileged user. The <a href="mpm_common.html#user" class="directive"><code class="directive">User</code></a> and <a href="mpm_common.html#group" class="directive"><code class="directive">Group</code></a> directives are used to set
      the privileges of the Apache child processes. The child processes
      must be able to read all the content that will be served, but
      should have as few privileges beyond that as possible. In
      addition, unless <a href="../suexec.html">suexec</a> is used,
      these directives also set the privileges which will be inherited
      by CGI scripts.</p>
  
      <p><a href="mpm_common.html#maxrequestsperchild" class="directive"><code class="directive">MaxRequestsPerChild</code></a>
      controls how frequently the server recycles processes by killing
      old ones and launching new ones.</p>
  <h2>Directives</h2><ul><li><a href="#acceptmutex">AcceptMutex</a></li><li><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li><li><a href="mpm_common.html#listen">Listen</a></li><li><a href="mpm_common.html#listenbacklog">ListenBacklog</a></li><li><a href="mpm_common.html#lockfile">LockFile</a></li><li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li><li><a href="mpm_common.html#maxspareservers">MaxSpareServers</a></li><li><a href="#maxspareservers">MaxSpareServers</a></li><li><a href="mpm_common.html#minspareservers">MinSpareServers</a></li><li><a href="#minspareservers">MinSpareServers</a></li><li><a href="mpm_common.html#pidfile">PidFile</a></li><li><a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li><li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li><li><a href="mpm_common.html#serverlimit">ServerLimit</a></li><li><a href="mpm_common.html#startservers">StartServers</a></li><li><a href="mpm_common.html#user">User</a></li></ul><p><strong>See also </strong></p><ul><li><a href="../bind.html">Setting which addresses and
      ports Apache uses</a></li></ul><hr/><h2><a name="AcceptMutex">AcceptMutex</a> <a name="acceptmutex">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Method that Apache uses to serialize multiple children
  accepting requests on network sockets</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AcceptMutex default|<em>method</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AcceptMutex default</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>prefork</td></tr></table></td></tr></table>
      <p>The <code class="directive">AcceptMutex</code> directives sets the
      method that Apache uses to serialize multiple children accepting
      requests on network sockets. Prior to Apache 2.0, the method was
      selectable only at compile time. The optimal method to use is
      highly architecture and platform dependent. For further details,
      see the <a href="../misc/perf-tuning.html">performance tuning</a>
      documentation.</p>
  
      <p>If this directive is set to <code>default</code>, then the
      compile-time selected default will be used. Other possible
      methods are listed below. Note that not all methods are
      available on all platforms. If a method is specified which is
      not available, a message will be written to the error log
      listing the available methods.</p>
  
      <dl>
        <dt><code>flock</code></dt>
  
        <dd>uses the <code>flock(2)</code> system call to lock the
        file defined by the <a href="mpm_common.html#lockfile" class="directive"><code class="directive">LockFile</code></a> directive.</dd>
  
        <dt><code>fcntl</code></dt>
  
        <dd>uses the <code>fnctl(2)</code> system call to lock the
        file defined by the <a href="mpm_common.html#lockfile" class="directive"><code class="directive">LockFile</code></a> directive.</dd>
  
        <dt><code>sysvsem</code></dt>
  
        <dd>uses SySV-style semaphores to implement the mutex.</dd>
  
        <dt><code>pthread</code></dt>
  
        <dd>uses POSIX mutexes as implemented by the POSIX Threads
        (PThreads) specification.</dd>
      </dl>
  <hr/><h2><a name="MaxSpareServers">MaxSpareServers</a> <a name="maxspareservers">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Maximum number of idle child server processes</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MaxSpareServers <em>number</em><br></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MaxSpareServers 10</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>prefork</td></tr></table></td></tr></table>
      <p>The <code class="directive">MaxSpareServers</code> directive sets the
      desired maximum number of <em>idle</em> child server processes. An
      idle process is one which is not handling a request. If there are
      more than MaxSpareServers idle, then the parent process will kill
      off the excess processes.</p>
  
      <p>Tuning of this parameter should only be necessary on very
      busy sites. Setting this parameter to a large number is almost
      always a bad idea.</p>
  <p><strong>See also </strong></p><ul><li><a href="#minspareservers" class="directive"><code class="directive">MinSpareServers</code></a></li><li><a href="mpm_common.html#startservers" class="directive"><code class="directive">StartServers</code></a></li></ul><hr/><h2><a name="MinSpareServers">MinSpareServers</a> <a name="minspareservers">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td>Minimum number of idle child server processes</td></tr><tr><td><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MinSpareServers <em>number</em></td></tr><tr><td><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MinSpareServers  5</code></td></tr><tr><td><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="directive-dict.html#Module" class="help">Module:</a></td><td>prefork</td></tr></table></td></tr></table>
      <p>The <code class="directive">MinSpareServers</code> directive sets the
      desired minimum number of <em>idle</em> child server processes. An
      idle process is one which is not handling a request. If there are
      fewer than MinSpareServers idle, then the parent process creates
      new children at a maximum rate of 1 per second.</p>
  
      <p>Tuning of this parameter should only be necessary on very
      busy sites. Setting this parameter to a large number is almost
      always a bad idea.</p>
  
      <p>This directive has no effect on Microsoft Windows.</p>
  <p><strong>See also </strong></p><ul><li><a href="#maxspareservers" class="directive"><code class="directive">MaxSpareServers</code></a></li><li><a href="mpm_common.html#startservers" class="directive"><code class="directive">StartServers</code></a></li></ul><hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>
  
  
  1.1                  httpd-2.0/docs/manual/mod/worker.html.en
  
  Index: worker.html.en
  ===================================================================
  <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  This file is generated from xml source: DO NOT EDIT
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          --><title>worker- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module worker</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Multi-Processing Module implementing a hybrid
      multi-threaded multi-process web server</td></tr><tr><td><a href="module-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">Module&nbsp;Identifier:</a></td><td>mpm_worker_module</td></tr></table></td></tr></table><h2>Summary</h2>
      <p>This Multi-Processing Module (MPM) implements a hybrid
      multi-process multi-threaded server. Each process has a fixed
      number of threads. The server adjusts to handle load by
      increasing or decreasing the number of processes.</p>
  
      <p>A single control process is responsible for launching child
      processes. Each child process creates a fixed number of threads
      as specified in the <code>ThreadsPerChild</code> directive. The
      individual threads then listen for connections and serve them
      when they arrive.</p>
  
      <p>Apache always tries to maintain a pool of <em>spare</em> or
      idle server threads, which stand ready to serve incoming
      requests. In this way, clients do not need to wait for a new
      threads or processes to be created before their requests can be
      served. Apache assesses the total number of idle threads in all
      processes, and forks or kills processes to keep this number
      within the boundaries specified by <code>MinSpareThreads</code>
      and <code>MaxSpareThreads</code>. Since this process is very
      self-regulating, it is rarely necessary to modify these
      directives from their default values. The maximum number of
      clients that may be served simultaneously is determined by
      multiplying the maximum number of server processes that will be
      created (<code>MaxClients</code>) by the number of threads
      created in each process (<code>ThreadsPerChild</code>).</p>
  
      <p>While the parent process is usually started as root under
      Unix in order to bind to port 80, the child processes and
      threads are launched by Apache as a less-privileged user. The
      <code>User</code> and <code>Group</code> directives are used to
      set the privileges of the Apache child processes. The child
      processes must be able to read all the content that will be
      served, but should have as few privileges beyond that as
      possible. In addition, unless <a href="../suexec.html">suexec</a> is used, these directives also
      set the privileges which will be inherited by CGI scripts.</p>
  
      <p><code>MaxRequestsPerChild</code> controls how frequently the
      server recycles processes by killing old ones and launching new
      ones.</p>
  
      <p>See also: <a href="../bind.html">Setting which addresses and
      ports Apache uses</a>.</p>
  <h2>Directives</h2><ul><li><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li><li><a href="mpm_common.html#group">Group</a></li><li><a href="mpm_common.html#listen">Listen</a></li><li><a href="mpm_common.html#listenbacklog">ListenBacklog</a></li><li><a href="mpm_common.html#lockfile">LockFile</a></li><li><a href="mpm_common.html#maxclients">MaxClients</a></li><li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li><li><a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li><li><a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li><li><a href="mpm_common.html#pidfile">PidFile</a></li><li><a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li><li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li><li><a href="mpm_common.html#serverlimit">ServerLimit</a></li><li><a href="mpm_common.html#startservers">StartServers</a></li><li><a href="mpm_common.html#threadlimit">ThreadLimit</a></li><li><a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li><li><a href="mpm_common.html#user">User</a></li></ul><hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html>