mirror of
https://github.com/apache/httpd.git
synced 2025-06-12 05:41:55 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@97134 13f79535-47bb-0310-9956-ffa450edef68
289 lines
14 KiB
XML
289 lines
14 KiB
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
|
||
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||
This file is generated from xml source: DO NOT EDIT
|
||
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||
--><title>mod_mime_magic - Apache HTTP Server</title><link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /><link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /><link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link href="../images/favicon.ico" rel="shortcut icon" /></head><body><div id="page-header"><p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p><p class="apache">Apache HTTP Server Version 2.0</p><img alt="" src="../images/feather.gif" /></div><div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div><div id="path"><a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs-project/">Documentation</a> > <a href="../">Version 2.0</a> > <a href="./">Modules</a></div><div id="page-content"><div id="preamble"><h1>Apache Module mod_mime_magic</h1><table class="module"><tr><th><a href="module-dict.html#Description">Description:
|
||
</a></th><td>Determines the MIME type of a file
|
||
by looking at a few bytes of its contents</td></tr><tr><th><a href="module-dict.html#Status">Status:
|
||
</a></th><td>Extension</td></tr><tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:
|
||
</a></th><td>mime_magic_module</td></tr><tr><th><a href="module-dict.html#SourceFile">Source File:
|
||
</a></th><td>mod_mime_magic.c</td></tr></table><h3>Summary</h3>
|
||
<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 class="module"><a href="../mod/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 <code class="directive"><a href="#mimemagicfile">MimeMagicFile</a></code> directive.</p>
|
||
</div><div id="quickview"><h3 class="directives">Directives</h3><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#mimemagicfile">MimeMagicFile</a></li>
|
||
</ul><h3>Topics</h3><ul id="topics"><li><img alt="" src="../images/down.gif" /> Format of the Magic File</li><li><img alt="" src="../images/down.gif" /> Performance Issues</li><li><img alt="" src="../images/down.gif" /> <a href="#notes">Notes</a></li></ul></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><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 class="bordered">
|
||
<tr>
|
||
<th>Column</th>
|
||
|
||
<th>Description</th>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>1</td>
|
||
|
||
<td>byte number to begin checking from<br />
|
||
">" indicates a dependency upon the previous non-">"
|
||
line</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>2</td>
|
||
|
||
<td>
|
||
type of data to match
|
||
|
||
<table class="bordered">
|
||
<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>
|
||
<td>3</td>
|
||
|
||
<td>contents of data to match</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>4</td>
|
||
|
||
<td>MIME type if matched</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<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>
|
||
<div class="example"><pre>
|
||
# Sun/NeXT audio data
|
||
0 string .snd
|
||
>12 belong 1 audio/basic
|
||
>12 belong 2 audio/basic
|
||
>12 belong 3 audio/basic
|
||
>12 belong 4 audio/basic
|
||
>12 belong 5 audio/basic
|
||
>12 belong 6 audio/basic
|
||
>12 belong 7 audio/basic
|
||
>12 belong 23 audio/x-adpcm
|
||
</pre></div>
|
||
<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>
|
||
<div class="example"><pre>
|
||
# Frame
|
||
0 string \<MakerFile application/x-frame
|
||
0 string \<MIFFile application/x-frame
|
||
0 string \<MakerDictionary application/x-frame
|
||
0 string \<MakerScreenFon application/x-frame
|
||
0 string \<MML application/x-frame
|
||
0 string \<Book application/x-frame
|
||
0 string \<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></div>
|
||
<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>
|
||
<div class="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></div>
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><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>
|
||
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="notes" id="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>
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="MimeMagicFile" id="MimeMagicFile">MimeMagicFile</a> <a name="mimemagicfile" id="mimemagicfile">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:
|
||
</a></th><td>Enable MIME-type determination based on file contents
|
||
using the specified magic file</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
|
||
</a></th><td><code>MimeMagicFile <em>file-path</em></code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
|
||
</a></th><td>server config, virtual host</td></tr><tr><th><a href="directive-dict.html#Status">Status:
|
||
</a></th><td>Extension</td></tr><tr><th><a href="directive-dict.html#Module">Module:
|
||
</a></th><td>mod_mime_magic</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>
|
||
|
||
<p>For example</p>
|
||
|
||
<div class="example"><p><code>MimeMagicFile conf/magic</code></p></div>
|
||
|
||
</div></div><div id="footer"><p class="apache">Maintained by the <a href="http://httpd.apache.org/docs-project/">Apache HTTP Server Documentation Project</a></p><p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div></body></html> |