<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Apache module mod_mime</TITLE>
</HEAD>

<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
 BGCOLOR="#FFFFFF"
 TEXT="#000000"
 LINK="#0000FF"
 VLINK="#000080"
 ALINK="#FF0000"
>
<!--#include virtual="header.html" -->
<H1 ALIGN="CENTER">Module mod_mime</H1>

This module is contained in the <CODE>mod_mime.c</CODE> file, and is
compiled in by default. It provides for determining the types of files
from the filename.

<H2>Summary</H2>

This module is used to determine various bits of "meta information"
about documents. This information relates to the content of the
document and is returned to the browser or used in content-negotiation
within the server. In addition, a "handler" can be set for a document,
which determines how the document will be processed within the server.

<P>

The directives <a href="#addcharset">AddCharset</a>,
<A HREF="#addencoding">AddEncoding</A>, <A HREF="#addhandler">AddHandler</A>,
<A HREF="#addlanguage">AddLanguage</A> and <A HREF="#addtype">AddType</A>
are all used to map file extensions onto the meta-information for that
file.  Respectively they set the character set, content-encoding, handler,
content-language, and MIME-type (content-type) of documents.  The
directive <A HREF="#typesconfig">TypesConfig</A> is used to specify a
file which also maps extensions onto MIME types. The directives <A
HREF="#forcetype">ForceType</A> and <A
HREF="#sethandler">SetHandler</A> are used to associated all the files
in a given location (<EM>e.g.</EM>, a particular directory) onto a particular
MIME type or handler.

<P>

Note that changing the type or encoding of 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.

<H2><A NAME="multipleext">Files with Multiple Extensions</A></H2>

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. The only exception to this is if an
extension is given which Apache does not know how to handle. In this
case it will "forget" about any information it obtained from
extensions to the left of the unknown extension. So, for example, if
the extensions fr and html are mapped to the appropriate language and
type but extension xxx is not assigned to anything, then the file
<CODE>welcome.fr.xxx.html</CODE> will be associated with content-type
text/html but <EM>no</EM> language.

<P>

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>

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.

<H2>Directives</H2>
<UL>
<li><a href="#addcharset">AddCharset</a></li>
<LI><A HREF="#addencoding">AddEncoding</A>
<LI><A HREF="#addhandler">AddHandler</A>
<LI><A HREF="#addlanguage">AddLanguage</A>
<LI><A HREF="#addtype">AddType</A>
<LI><A HREF="#defaultlanguage">DefaultLanguage</A>
<LI><A HREF="#forcetype">ForceType</A>
<LI><A HREF="#removehandler">RemoveHandler</A>
<LI><A HREF="#sethandler">SetHandler</A>
<LI><A HREF="#typesconfig">TypesConfig</A>
</UL>
<HR>

<H2><A NAME="addcharset">AddCharset</A></H2>
<A HREF="directive-dict.html#Syntax" REL="Help"
><STRONG>Syntax:</STRONG></A> AddCharset <i>charset extension
 [extension...]</i><br>
<A HREF="directive-dict.html#Context" REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime
<br>
<A HREF="directive-dict.html#Compatibility" REL="Help"
><STRONG>Compatibility:</STRONG></A> AddCharset is only available in Apache
1.3.10 and later

<P>
The AddCharset directive maps the given filename extensions to the
specified content charset. <i>charset</i> is the MIME charset
parameter of filenames containing <i>extension</i>.  This mapping is
added to any already in force, overriding any mappings that already
exist for the same <i>extension</i>.
</P>
<P>
Example:
<pre>
    AddLanguage ja .ja
    AddCharset EUC-JP .euc
    AddCharset ISO-2022-JP .jis
    AddCharset SHIFT_JIS .sjis
</pre>

<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>
<STRONG>See also</STRONG>: <A HREF="mod_negotiation.html">mod_negotiation</A>
</P>

<hr>

<H2><A NAME="addencoding">AddEncoding</A></H2>
<!--%plaintext &lt;?INDEX {\tt AddEncoding} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> AddEncoding <EM>MIME-enc extension extension...</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime<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:
<BLOCKQUOTE><CODE> AddEncoding x-gzip gz<BR> AddEncoding x-compress Z
</CODE></BLOCKQUOTE>

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>

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>

<STRONG>See also</STRONG>: <A HREF="#multipleext">Files with
multiple extensions</A>

<P><HR>

<H2><A NAME="addhandler">AddHandler</A></H2>

<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> AddHandler <EM>handler-name extension extension...</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> AddHandler is only available in Apache
1.1 and later<P>

<P>AddHandler maps the filename extensions <EM>extension</EM> to the
<A HREF="../handler.html">handler</A> <EM>handler-name</EM>.  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:
<PRE>
    AddHandler cgi-script cgi
</PRE>

<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>

<STRONG>See also</STRONG>: <A HREF="#multipleext">Files with
multiple extensions</A>

<HR>

<H2><A NAME="addlanguage">AddLanguage</A></H2>
<!--%plaintext &lt;?INDEX {\tt AddLanguage} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> AddLanguage <EM>MIME-lang extension extension...</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime

<P>
The AddLanguage directive maps the given filename extensions 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: <BLOCKQUOTE><CODE>
AddEncoding x-compress Z<BR> AddLanguage en .en<BR> AddLanguage fr
.fr<BR> </CODE></BLOCKQUOTE>
</P>
<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>
<PRE>
    AddLanguage en .en
    AddLanguage en-uk .en
    AddLanguage en-us .en
</PRE>
<P>
documents with the extension "<CODE>.en</CODE>" would be treated as
being "<CODE>en-us</CODE>".
</P>
<P>
<STRONG>See also</STRONG>: <A HREF="#multipleext">Files with
multiple extensions</A>
<BR>
<STRONG>See also</STRONG>: <A
HREF="./mod_negotiation.html">mod_negotiation</A>
</P>

<HR>

<H2><A NAME="addtype">AddType</A></H2>
<!--%plaintext &lt;?INDEX {\tt AddType} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> AddType <EM>MIME-type extension extension...</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime<P>

The AddType directive maps the given filename extensions onto the
specified content type. <EM>MIME-enc</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 <CODE><A
HREF="#typesconfig">TypesConfig</A></CODE> directive).

Example:
<BLOCKQUOTE><CODE>
AddType image/gif GIF
</CODE></BLOCKQUOTE>
It is recommended that new MIME types be added using the AddType directive
rather than changing the <A HREF="#typesconfig">TypesConfig</A> file.<P>
Note that, unlike the NCSA httpd, this directive cannot be used to set the
type of particular files.<P>

<P>

<STRONG>See also</STRONG>: <A HREF="#multipleext">Files with
multiple extensions</A>

<HR>

<H2><A NAME="defaultlanguage">DefaultLanguage</A></H2>
<!--%plaintext &lt;?INDEX {\tt DefaultLanguage} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> DefaultLanguage <EM>MIME-lang</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> DefaultLanguage is only available in Apache
1.3.4 and later.<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 <SAMP>.fr</SAMP> or <SAMP>.de</SAMP> as
configured by <SAMP>AddLanguage</SAMP>) 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, <SAMP>DefaultLanguage</SAMP> can only specify a
single language.

<P>

If no <SAMP>DefaultLanguage</SAMP> directive is in force, and a file
does not have any language extensions as configured by
<SAMP>AddLanguage</SAMP>, then that file will be considered to have no
language attribute.

<P>

<STRONG>See also</STRONG>: <A
HREF="./mod_negotiation.html">mod_negotiation</A>
<BR>
<STRONG>See also</STRONG>: <A HREF="#multipleext">Files with
multiple extensions</A>

<HR>

<H2><A NAME="forcetype">ForceType</A></H2>

<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> ForceType <EM>media type</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> ForceType is only available in Apache
1.1 and later.<P>

<P>When placed into an <CODE>.htaccess</CODE> file or a
<CODE>&lt;Directory&gt;</CODE> or <CODE>&lt;Location&gt;</CODE> section,
this directive forces all matching files to be served
as the content type given by <EM>media 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:
<PRE>
    ForceType image/gif
</PRE>
<P>Note that this will override any filename extensions that might determine
the media type.</P><HR>

<H2><A NAME="removehandler">RemoveHandler</A></H2>

<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> RemoveHandler <EM>extension extension...</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> RemoveHandler is only available in Apache
1.3.4 and later.<P>

<P>
The <SAMP>RemoveHandler</SAMP> 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>
<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>
<P>
This has the effect of returning <SAMP>.html</SAMP> files in the
<SAMP>/foo/bar</SAMP> directory to being treated as normal
files, rather than as candidates for parsing (see the
<A HREF="mod_include.html"><SAMP>mod_include</SAMP></A> module).
</P>
<HR>

<H2><A NAME="sethandler">SetHandler</A></H2>

<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> SetHandler <EM>handler-name</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> SetHandler is only available in Apache
1.1 and later.<P>

<P>When placed into an <CODE>.htaccess</CODE> file or a
<CODE>&lt;Directory&gt;</CODE> or <CODE>&lt;Location&gt;</CODE> 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:
<PRE>
    SetHandler imap-file
</PRE>

<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 access.conf:
<PRE>
    &lt;Location /status&gt;
    SetHandler server-status
    &lt;/Location&gt;
</PRE>
<HR>

<H2><A NAME="typesconfig">TypesConfig</A></H2>
<!--%plaintext &lt;?INDEX {\tt TypesConfig} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> TypesConfig <EM>filename</EM><BR>
<A
 HREF="directive-dict.html#Default"
 REL="Help"
><STRONG>Default:</STRONG></A> <CODE>TypesConfig conf/MIME.types</CODE><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_mime<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; changing this file is not
recommended. Use the <A HREF="#addtype">AddType</A> directive instead. The
file contains lines in the format of the arguments to an AddType command:
<BLOCKQUOTE><EM>MIME-type extension extension ...</EM></BLOCKQUOTE>
The extensions are lower-cased. Blank lines, and lines beginning with a hash
character (`#') are ignored.<P>

<!--#include virtual="footer.html" -->
</BODY>
</HTML>

