blob: 3be9f8000b17b6b56c59a3b5c66bdb4bcbc13793 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Apache module mod_speling</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_speling</H1>
<P>
This module is contained in the <CODE>mod_speling.c</CODE> file,
and is <STRONG>not</STRONG> compiled in by default.
It attempts to correct misspellings of
URLs that users might have entered, by ignoring capitalization
and by allowing up to one misspelling.<BR>
This catches the majority of misspelled requests. An automatic
"spelling corrected" redirection is returned if only one matching
document was found, and a list of matches is returned if more than
one document with a sufficiently similar name is found.
</P>
<H2>Summary</H2>
<P>
Requests to documents sometimes cannot be served by the core apache
server because the request was misspelled or miscapitalized. This
module addresses this problem by trying to find a matching document,
even after all other modules gave up. It does its work by comparing
each document name in the requested directory against the requested
document name <STRONG>without regard to case</STRONG>, and allowing
<STRONG>up to one misspelling</STRONG> (character insertion / omission
/ transposition or wrong character). A list is built with all document
names which were matched using this strategy.
</P>
<P>
If, after scanning the directory,
<UL>
<LI>no matching document was found, Apache will proceed as usual
and return a "document not found" error.
<LI>only one document is found that "almost" matches the request,
then it is returned in the form of a redirection response.
<LI>more than one document with a close match was found, then
the list of the matches is returned to the client, and the client
can select the correct candidate.
</UL>
</P>
<H2>Directives</H2>
<MENU>
<LI><A HREF="#checkspelling">CheckSpelling</A>
</MENU>
<HR> <!-- the HR is part of the directive description -->
<H2><A NAME="checkspelling">CheckSpelling</A></H2>
<!--%plaintext &lt;?INDEX {\tt CheckSpelling} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
REL="Help"
><STRONG>Syntax:</STRONG></A> CheckSpelling <EM>on/off</EM><BR>
<A
HREF="directive-dict.html#Default"
REL="Help"
><STRONG>Default:</STRONG></A> <CODE>CheckSpelling Off</CODE><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> Options
<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_speling<BR>
<A
HREF="directive-dict.html#Compatibility"
REL="Help"
><STRONG>Compatibility:</STRONG></A> CheckSpelling was available as a
separately
available module for Apache 1.1, but was limited to miscapitalizations.
As of Apache 1.3, it is part of the Apache distribution. Prior to
Apache 1.3.2, the <SAMP>CheckSpelling</SAMP> directive was only available
in the "server" and "virtual host" contexts.
<P>
This directive enables or disables the spelling module. When enabled,
keep in mind that
</P>
<UL>
<LI>the directory scan which is necessary for the spelling
correction will have an impact on the server's performance
when many spelling corrections have to be performed at the same time.
</LI>
<LI>the document trees should not contain sensitive files which could
be matched inadvertently by a spelling "correction".
</LI>
<LI>the module is unable to correct misspelled user names
(as in <CODE>http://my.host/~apahce/</CODE>), just file names or
directory names.
</LI>
<LI>spelling corrections apply strictly to existing files, so a request for
the <SAMP>&lt;Location /status&gt;</SAMP> may get incorrectly treated
as the negotiated file "<SAMP>/stats.html</SAMP>".
</LI>
</UL>
<!--#include virtual="footer.html" -->
</BODY>
</HTML>