summaryrefslogtreecommitdiff
path: root/docs/manual/mod/mod_speling.xml
blob: e430b400ce8eb1059b9ecd6a91225e0c9ad42327 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_speling.xml.meta">

<name>mod_speling</name>
<description>Attempts to correct mistaken URLs by ignoring
capitalization, or attempting to correct various minor
misspellings.</description>
<status>Extension</status>
<sourcefile>mod_speling.c</sourcefile>
<identifier>speling_module</identifier>



<summary>

    <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. <strong>Erroneous extension</strong> can also be fixed
    by this module.</p>

    <p>If, after scanning the directory,</p>

    <ul>
      <li>no matching document was found, Apache will proceed as
      usual and return an error (<code>404 - document not found</code>).</li>

      <li>only one document is found that "almost" matches the
      request, then it is returned in the form of a redirection
      response (<code>301 - Moved Permanently</code>).</li>

      <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 (<code>300 - Multiple
      Choices</code>).</li>
    </ul>

</summary>


<directivesynopsis>
<name>CheckSpelling</name>
<description>Enables the spelling
module</description>
<syntax>CheckSpelling on|off</syntax>
<default>CheckSpelling Off</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context>
</contextlist>
<override>Options</override>

<usage>
    <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 <code>&lt;Location /status&gt;</code> may
      get incorrectly treated as the negotiated file
      "<code>/stats.html</code>".</li>
    </ul>

    <!-- XXX: is that really true?! -nd -->
    <p><module>mod_speling</module> should not be enabled in <a href="mod_dav.html">DAV</a>
    enabled directories, because it will try to "spell fix" newly created
    resource names against existing filenames, e.g., when trying to upload
    a new document <code>doc43.html</code> it might redirect to an existing
    document <code>doc34.html</code>, which is not what was intended.
    </p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CheckCaseOnly</name>
<description>Limits the action of the speling module to case corrections</description>
<syntax>CheckCaseOnly on|off</syntax>
<default>CheckCaseOnly Off</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context>
</contextlist>
<override>Options</override>

<usage>
    <p>When set, this directive limits the action of the spelling correction
    to lower/upper case changes.  Other potential corrections are not performed,
    except when <directive module="mod_speling">CheckBasenameMatch</directive> is also set.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CheckBasenameMatch</name>
<description>Also match files with differing file name extensions.</description>
<syntax>CheckBasenameMatch on|off</syntax>
<default>CheckBasenameMatch On</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context>
</contextlist>
<override>Options</override>

<usage>
    <p>When set, this directive extends the action of the spelling correction
    to the file name extension. For example a file <code>foo.gif</code> will
    match a request for <code>foo</code> or <code>foo.jpg</code>. This can be
    particularly useful in conjunction with
    <a href="../content-negotiation.html">MultiViews</a>.</p>
</usage>
</directivesynopsis>

</modulesynopsis>