mirror of
				https://github.com/apache/httpd.git
				synced 2025-10-31 19:10:37 +03:00 
			
		
		
		
	git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@96735 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			288 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			288 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>MimeMagicFile <em>file-path</em></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> |