| <!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="#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 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="#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="addencoding">AddEncoding</A></H2> |
| <!--%plaintext <?INDEX {\tt AddEncoding} directive> --> |
| <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 <?INDEX {\tt AddLanguage} directive> --> |
| <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 <?INDEX {\tt AddType} directive> --> |
| <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 <?INDEX {\tt DefaultLanguage} directive> --> |
| <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<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><Directory></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><Directory></CODE> or <CODE><Location></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><Directory></CODE> or <CODE><Location></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> |
| <Location /status> |
| SetHandler server-status |
| </Location> |
| </PRE> |
| <HR> |
| |
| <H2><A NAME="typesconfig">TypesConfig</A></H2> |
| <!--%plaintext <?INDEX {\tt TypesConfig} directive> --> |
| <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> |
| |