<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Module mod_cern_meta</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">Apache module mod_cern_meta</H1>

This module is contained in the <CODE>mod_cern_meta.c</CODE> file, and
is not compiled in by default. It provides for CERN httpd metafile
semantics. It is only available in Apache 1.1 and later.

<H2>Summary</H2>

Emulate the CERN HTTPD Meta file semantics.  Meta files are HTTP
headers that can be output in addition to the normal range of headers
for each file accessed.  They appear rather like the Apache
.asis files, and are able to provide a crude way of influencing
the Expires: header, as well as providing other curiosities.
There are many ways to manage meta information, this one was
chosen because there is already a large number of CERN users
who can exploit this module.

<P>More information on the
<A HREF="http://www.w3.org/pub/WWW/Daemon/User/Config/General.html#MetaDir"
>CERN metafile semantics</A> is available.

<H2>Directives</H2>
<UL>
<LI><A HREF="#metafiles">MetaFiles</A>
<LI><A HREF="#metadir">MetaDir</A>
<LI><A HREF="#metasuffix">MetaSuffix</A>
</UL>

<HR>

<H2><A NAME="metafiles">MetaFiles</A></H2>
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> MetaFiles <EM>on/off</EM><BR>
<A
 HREF="directive-dict.html#Default"
 REL="Help"
><STRONG>Default:</STRONG></A> <CODE>MetaFiles off</CODE><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> per-directory 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_cern_meta<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> MetaFiles is only available in Apache 1.3
and later.<P>

Turns on/off Meta file processing on a per-directory basis. This option was introduced in Apache 1.3.

<H2><A NAME="metadir">MetaDir</A></H2>
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> MetaDir <EM>directory name</EM><BR>
<A
 HREF="directive-dict.html#Default"
 REL="Help"
><STRONG>Default:</STRONG></A> <CODE>MetaDir .web</CODE><BR>
<STRONG>Context: (Apache prior to 1.3)</STRONG> server config<BR>
<STRONG>Context: (Apache 1.3)</STRONG> per-directory 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_cern_meta<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> MetaDir is only available in Apache 1.1
and later.<P>

Specifies the name of the directory in which Apache can find
meta information files.  The directory is usually a 'hidden'
subdirectory of the directory that contains the file being
accessed. Set to "<CODE>.</CODE>" to look in the same directory as the
file.

<H2><A NAME="metasuffix">MetaSuffix</A></H2>
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> MetaSuffix <EM>suffix</EM><BR>
<A
 HREF="directive-dict.html#Default"
 REL="Help"
><STRONG>Default:</STRONG></A> <CODE>MetaSuffix .meta</CODE><BR>
<STRONG>Context: (Apache prior to 1.3)</STRONG> server config<BR>
<STRONG>Context: (Apache 1.3)</STRONG> per-directory 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_cern_meta<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> MetaSuffix is only available in Apache 1.1
and later.<P>

Specifies the file name suffix for the file containing the
meta information. For example, the default values for the two
directives will cause a request to <CODE>
DOCUMENT_ROOT/somedir/index.html</CODE> to look in
<CODE>DOCUMENT_ROOT/somedir/.web/index.html.meta</CODE> and  will use
its contents to generate additional MIME header information.

<P>

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

