summaryrefslogtreecommitdiff
path: root/docs/manual/mod
diff options
context:
space:
mode:
authorJoshua Slive <slive@apache.org>2002-03-09 18:31:00 +0000
committerJoshua Slive <slive@apache.org>2002-03-09 18:31:00 +0000
commitadad84a7cebea4c2cc818a7e71365e49e9b89723 (patch)
tree0313949846c8b712b22a0147f76a8c831c2c4a8d /docs/manual/mod
parent30a517c723b2b13a8c2a6d16008cc947deb95d3d (diff)
downloadhttpd-adad84a7cebea4c2cc818a7e71365e49e9b89723.tar.gz
New xml versions.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93814 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'docs/manual/mod')
-rw-r--r--docs/manual/mod/mod_isapi.xml271
-rw-r--r--docs/manual/mod/mod_mime_magic.xml304
-rw-r--r--docs/manual/mod/mod_negotiation.xml243
3 files changed, 818 insertions, 0 deletions
diff --git a/docs/manual/mod/mod_isapi.xml b/docs/manual/mod/mod_isapi.xml
new file mode 100644
index 0000000000..c64cbd0b18
--- /dev/null
+++ b/docs/manual/mod/mod_isapi.xml
@@ -0,0 +1,271 @@
+<?xml version="1.0"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.xsl"?>
+<modulesynopsis>
+
+<name>mod_isapi</name>
+<description>ISAPI Extensions within Apache for Windows</description>
+<status>Base</status>
+<sourcefile>mod_isapi.c</sourcefile>
+<identifier>isapi_module</identifier>
+<compatibility>Win32 only</compatibility>
+
+<summary>
+ <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>
+</summary>
+
+<section><title>Usage</title> <p>In the server configuration file, use
+the <directive module="mod_mime">AddHandler</directive> 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>
+<example>
+ AddHandler isapi-isa .dll
+</example>
+
+ <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>
+<example>
+ ISAPICacheFile c:/WebWork/Scripts/ISAPI/mytest.dll
+</example>
+
+ <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>
+</section>
+
+<section id="notes"><title>Additional Notes</title>
+
+ <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>
+</section>
+
+<section id="journal"><title>Programmer's Journal</title>
+
+ <p>If you are programming Apache 2.0 <module>mod_isapi</module>
+ 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 <module>mod_isapi</module> 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>
+</section>
+
+<directivesynopsis>
+<name>ISAPIFileChache</name>
+<description>ISAPI .dll files to be loaded at startup</description>
+<syntax>ISAPIFileCache <em>file-path</em> [<em>file-path</em>] ...</syntax>
+<contextlist><context>server config</context></contextlist>
+
+<usage>
+ <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>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>ISAPIReadAheadBuffer</name>
+<description>Size of the Read Ahead Buffer sent to ISAPI
+extensions</description>
+<syntax>ISAPIReadAheadBuffer <em>size</em></syntax>
+<default>ISAPIReadAheadBuffer 49152</default>
+<contextlist><context>server config</context></contextlist>
+
+<usage>
+ <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>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>ISAPILogNotSupported</name>
+<description>Log unsupported feature requests from ISAPI
+extensions</description>
+<syntax>ISAPILogNotSupported on|off</syntax>
+<default>ISAPILogNotSupported on</default>
+<contextlist><context>server config</context></contextlist>
+
+<usage>
+ <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>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>ISAPIAppendLogToErrors</name>
+<description>Record HSE_APPEND_LOG_PARAMETER requests from ISAPI
+extensions to the error log</description>
+<syntax>ISAPIAppendLogToErrors on|off</syntax>
+<default>ISAPIAppendLogToErrors off</default>
+<contextlist><context>server config</context></contextlist>
+
+<usage>
+ <p>Record HSE_APPEND_LOG_PARAMETER requests from ISAPI
+ extensions to the server error log.</p>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>ISAPIAppendLogToQuery</name>
+<description>Record HSE_APPEND_LOG_PARAMETER requests from ISAPI
+extensions to the query field</description>
+<syntax>ISAPIAppendLogToQuery on|off</syntax>
+<default>ISAPIAppendLogToQuery off</default>
+<contextlist><context>server config</context></contextlist>
+
+<usage>
+ <p>Record HSE_APPEND_LOG_PARAMETER requests from ISAPI
+ extensions to the query field (appended to the CustomLog %q
+ component).</p>
+</usage>
+</directivesynopsis>
+
+</modulesynopsis> \ No newline at end of file
diff --git a/docs/manual/mod/mod_mime_magic.xml b/docs/manual/mod/mod_mime_magic.xml
new file mode 100644
index 0000000000..18f22158d1
--- /dev/null
+++ b/docs/manual/mod/mod_mime_magic.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.xsl"?>
+<modulesynopsis>
+
+<name>mod_mime_magic</name>
+<description>Determines the MIME type of a file
+ by looking at a few bytes of its contents</description>
+<status>Extension</status>
+<sourcefile>mod_mime_magic.c</sourcefile>
+<identifier>mime_magic_module</identifier>
+
+<summary>
+ <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 <module>mod_mime</module> 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 <directive module="mod_mime_magic"
+ >MimeMagicFile</directive> directive.</p>
+</summary>
+
+<section><title>Format of the Magic File</title>
+
+ <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>
+<example>
+<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>
+</example>
+ <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>
+<example>
+<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>
+</example>
+ <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>
+<example>
+<pre>
+# gzip (GNU zip, not to be confused with [Info-ZIP/PKWARE] zip archiver)
+0 string \037\213 application/octet-stream x-gzip
+</pre>
+</example>
+</section>
+
+<section><title>Performance Issues</title>
+ <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>
+
+</section>
+
+<section id="notes"><title>Notes</title>
+
+ <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>
+</section>
+
+<directivesynopsis>
+<name>MimeMagicFile</name>
+<description>Enable MIME-type determination based on file contents
+using the specified magic file</description>
+<syntax>MimeMagicFile <em>file-path</em></syntax>
+<contextlist><context>server config</context>
+<context>virtual host</context></contextlist>
+
+<usage>
+ <p>The <directive>MimeMagicFile</directive> 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>
+</usage>
+</directivesynopsis>
+</modulesynopsis>
+
diff --git a/docs/manual/mod/mod_negotiation.xml b/docs/manual/mod/mod_negotiation.xml
new file mode 100644
index 0000000000..12904441a8
--- /dev/null
+++ b/docs/manual/mod/mod_negotiation.xml
@@ -0,0 +1,243 @@
+<?xml version="1.0"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.xsl"?>
+<modulesynopsis>
+
+<name>mod_negotiation</name>
+<description>Provides for <a
+ href="../content-negotiation.html">content negotiation</a></description>
+<status>Base</status>
+<sourcefile>mod_negotiation.c</sourcefile>
+<identifier>negotiation_module</identifier>
+
+<summary>
+ <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 <directive
+ module="core.html">Options</directive>, where the server does an
+ implicit filename pattern match, and choose from amongst the
+ results.</li>
+ </ul>
+</summary>
+
+<seealso><directive module="mod_mime">DefaultLangauge</directive></seealso>
+<seealso><directive module="mod_mime">AddEncoding</directive></seealso>
+<seealso><directive module="mod_mime">AddLanguage</directive></seealso>
+<seealso><directive module="mod_mime">AddType</directive></seealso>
+
+<section><title>Type maps</title>
+ <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 <directive
+ module="mod_mime">AddEncoding</directive> 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>
+</section>
+
+<section><title>MultiViews</title>
+
+ <p>A MultiViews search is enabled by the MultiViews <directive
+ module="core">Options</directive>. 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>
+</section>
+
+<directivesynopsis>
+<name>CacheNegotiatedDocs</name>
+<description>Allows content-negotiated documents to be
+cached by proxy servers</description>
+<syntax>CacheNegotiatedDocs on|off</syntax>
+<default>CacheNegotiatedDocs off</default>
+<contextlist><context>server config</context></contextlist>
+<compatibility>The syntax changed in version 2.0.</compatibility>
+
+<usage>
+ <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,
+ <directive>CacheNegotiatedDocs</directive> did not take an
+ argument; it was turned on by the presence of the directive by
+ itself.</p>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>ForceLangaugePriority</name>
+<description>Action to take if a single acceptable document is not
+found</description>
+<syntax>ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]</syntax>
+<default>ForceLangaugePriority None</default>
+<contextlist><context>server config</context>
+<context>virtual host</context>
+<context>directory</context>
+<context>.htaccess</context>
+</contextlist>
+<override>FileInfo</override>
+<compatibility>Available in version 2.0.30 and later</compatibility>
+
+<usage>
+ <p>The <directive>ForceLanguagePriority</directive> directive uses
+ the given <directive
+ module="mod_negotiation">LanguagePriority</directive> 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>
+
+<example>
+ LanguagePriority en fr de<br />
+ ForceLanguagePriority Prefer
+</example>
+
+ <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 langauge response, but such a variant isn't found, then the
+ first variant from the LanguagePriority list below will be
+ served.</p>
+
+<example>
+ LanguagePriority en fr de<br />
+ ForceLanguagePriority Fallback
+</example>
+
+ <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>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>LanguagePriority</name>
+<description>The precendence of language variants for cases where
+the client does not express a preference</description>
+<syntax>LanguagePriority <em>MIME-lang</em> [<em>MIME-lang</em>] ...</syntax>
+<contextlist><context>server config</context>
+<context>virtual host</context>
+<context>directory</context>
+<context>.htaccess</context>
+</contextlist>
+<override>FileInfo</override>
+
+<usage>
+ <p>The <directive>LanguagePriority</directive> 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>
+
+<example>LanguagePriority en fr de</example>
+
+ <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 <directive
+ module="mod_negotiation">ForceLanguagePriority</directive> directive
+ is not <code>None</code>. Correctly implemented HTTP/1.1 requests
+ will mean this directive has no effect.</p>
+</usage>
+</directivesynopsis>
+
+</modulesynopsis> \ No newline at end of file