1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
5 <relativepath href="."/>
7 <title>Upgrading to 2.0 from 1.3</title>
10 <p>In order to assist folks upgrading, we maintain a document
11 describing information critical to existing Apache users. These
12 are intended to be brief notes, and you should be able to find
13 more information in either the <a
14 href="new_features_2_0.html">New Features</a> document, or in
15 the <code>src/CHANGES</code> file.</p>
17 <seealso><a href="new_features_2_0.html">Overview of new features in
18 Apache 2.0</a></seealso>
20 <section id="compile-time">
21 <title>Compile-Time Configuration Changes</title>
24 <li>Apache now uses an <code>autoconf</code> and
25 <code>libtool</code> system for <a
26 href="install.html">configuring the build processes</a>.
27 Using this system is similar to, but not the same as, using
28 the APACI system in Apache 1.3.</li>
30 <li>In addition to the usual selection of modules which you
31 can choose to compile, Apache 2.0 has moved the main part of
32 request processing into <a href="mpm.html">Multi-Processing
33 Modules</a> (MPMs).</li>
37 <section id="run-time">
38 <title>Run-Time Configuration Changes</title>
41 <li>Many directives that were in the core server in Apache
42 1.3 are now in the MPMs. If you wish the behavior of the
43 server to be as similar as possible to the behavior of Apache
44 1.3, you should select the <module>prefork</module> MPM. Other MPMs
45 will have different directives to control process creation and request
48 <li>The <a href="mod/mod_proxy.html">proxy module</a> has been
49 revamped to bring it up to HTTP/1.1. Among the important changes,
50 proxy access control is now placed inside a <directive type="section"
51 module="mod_proxy">Proxy</directive> block rather than a
52 <code><Directory proxy:></code> block.</li>
54 <li>The handling of <code>PATH_INFO</code> (trailing path information
55 after the true filename) has changed for some modules. Modules
56 that were previously implemented as a handler but are now
57 implemented as a filter may no longer accept requests with
58 <code>PATH_INFO</code>. Filters such as <a
59 href="mod/mod_include.html">INCLUDES</a> are implemented on top
60 of the core handler, and therefore reject requests with
61 <code>PATH_INFO</code>. You can use the <directive
62 module="core">AcceptPathInfo</directive> directive to
63 force the core handler to accept requests with <code>PATH_INFO</code>
64 and thereby restore the ability to use <code>PATH_INFO</code> in
65 server-side includes.</li>
68 module="mod_negotiation">CacheNegotiatedDocs</directive>
69 directive now takes the argument <code>on</code> or
70 <code>off</code>. Existing instances of <directive
71 >CacheNegotiatedDocs</directive> should be
72 replaced with <code>CacheNegotiatedDocs on</code>.</li>
75 The <directive module="core">ErrorDocument</directive>
76 directive no longer uses a quote at the beginning of the
77 argument to indicate a text message. Instead, you should
78 enclose the message in double quotes. For example, existing
82 ErrorDocument 403 "Some Message
84 should be replaced with
87 ErrorDocument 403 "Some Message"
90 As long as the second argument is not a valid URL or
91 pathname, it will be treated as a text message.
94 <li>The <code>AccessConfig</code> and
95 <code>ResourceConfig</code> directives no longer exist.
96 Existing instances of these directives can be replaced with
97 the <directive module="core">Include</directive>
98 directive which has equivalent functionality. If you were
99 making use of the default values of these directives without
100 including them in the configuration files, you may need to
101 add <code>Include conf/access.conf</code> and <code>Include
102 conf/srm.conf</code> to your <code>httpd.conf</code>. In order to
103 assure that Apache reads the configuration files in the same order
104 as was implied by the older directives, the <directive
105 module="core">Include</directive> directives should be placed at the end
106 of <code>httpd.conf</code>, with the one for <code>srm.conf</code>
107 preceding the one for <code>access.conf</code>.</li>
109 <li>The <code>BindAddress</code> and <code>Port</code>
110 directives no longer exist. Equivalent functionality is
111 provided with the more flexible
112 <directive module="mpm_common">Listen</directive>
115 <li>Another use of the <code>Port</code>
116 directive in Apache-1.3 was setting the port number to be used
117 in self-referential URL's. The Apache-2.0 equivalent is
118 the new <directive module="core">ServerName</directive>
119 syntax: it has been changed to allow specifying both the
120 hostname <em>and</em> the port number for self-referential URL's
121 in one directive.</li>
123 <li>The <code>ServerType</code> directive no longer exists.
124 The method used to serve requests is now determined by the
125 selection of MPM. There is currently no MPM designed to be
126 launched by inetd.</li>
128 <li>The <code>mod_log_agent</code> and <code>mod_log_referer</code>
129 modules which provided the <code>AgentLog</code>,
130 <code>RefererLog</code> and <code>RefererIgnore</code> directives have
131 been removed. Agent and referer logs are still available using the
132 <directive module="mod_log_config">CustomLog</directive>
133 directive of <module>mod_log_config</module>.</li>
135 <li>The <code>AddModule</code> and
136 <code>ClearModuleList</code> directives no longer exist.
137 These directives were used to ensure that modules could be
138 enabled in the correct order. The new Apache 2.0 API allows
139 modules to explicitly specify their ordering, eliminating the
140 need for these directives.</li>
142 <li>The <code>FancyIndexing</code> directive has been removed.
143 The same functionality is available through the
144 <code>FancyIndexing</code> option to the <directive
145 module="mod_autoindex">IndexOptions</directive>
148 <li>The MultiViews content-negotiation technique provided by
149 <module>mod_negotiation</module> has become more strict in its
150 default file matching. It will select only from <em>negotiable</em>
151 files. The old behavior can be restored using the <directive
152 module="mod_mime">MultiviewsMatch</directive> directive.</li>
158 <title>Misc Changes</title>
161 <li>The <code>httpd</code> command line option
162 <code>-S</code> which was used for printing the virtual host
163 configuration has been replaced by <code>-t -D
164 DUMP_VHOSTS</code>.</li>
166 <li>The module <module>mod_auth_digest</module>, which was
167 experimental in Apache 1.3, is now a standard module.</li>
169 <li>The <code>mod_mmap_static</code> module, which was experimental in
170 Apache 1.3, has been replaced with <module>mod_file_cache</module>.</li>
172 <li>The distribution has been completely reorganized so that
173 it no longer contains an independent <code>src</code>
174 directory. Instead, the sources are logically organized under
175 the main distribution directory, and installations of the
176 compiled server should be directed to a separate
181 <section id="third-party">
182 <title>Third Party Modules</title>
184 <p>Extensive changes were made to the server API in Apache 2.0.
185 Existing modules designed for the Apache 1.3 API will
186 <strong>not</strong> work in Apache 2.0 without modification.
187 Details are provided in the <a href="developer/">developer
188 documentation</a>.</p>