Apache HTTP Server Version 2.0
Upgrading to 2.0 from 1.3
In order to assist folks upgrading, we maintain a document
describing information critical to existing Apache users. These
are intended to be brief notes, and you should be able to find
more information in either the New Features document, or in
the src/CHANGES
file.
Compile-Time Configuration Changes
- Apache now uses an
autoconf
andlibtool
system for configuring the build processes. Using this system is similar to, but not the same as, using the APACI system in Apache 1.3. - In addition to the usual selection of modules which you can choose to compile, Apache 2.0 has moved the main part of request processing into Multi-Processing Modules (MPMs).
Run-Time Configuration Changes
- Many directives that were in the core server in Apache
1.3 are now in the MPMs. If you wish the behavior of the
server to be as similar as possible to the behavior of Apache
1.3, you should select the
prefork
MPM. Other MPMs will have different directives to control process creation and request processing. - The proxy module has been
revamped to bring it up to HTTP/1.1. Among the important changes,
proxy access control is now placed inside a
<Proxy>
block rather than a<Directory proxy:>
block. - The handling of
PATH_INFO
(trailing path information after the true filename) has changed for some modules. Modules that were previously implemented as a handler but are now implemented as a filter may no longer accept requests withPATH_INFO
. Filters such as INCLUDES or PHP are implemented on top of the core handler, and therefore reject requests withPATH_INFO
. You can use theAcceptPathInfo
directive to force the core handler to accept requests withPATH_INFO
and thereby restore the ability to usePATH_INFO
in server-side includes. - The
CacheNegotiatedDocs
directive now takes the argumenton
oroff
. Existing instances ofCacheNegotiatedDocs
should be replaced withCacheNegotiatedDocs on
. -
The
ErrorDocument
directive no longer uses a quote at the beginning of the argument to indicate a text message. Instead, you should enclose the message in double quotes. For example, existing instances ofshould be replaced withErrorDocument 403 "Some Message
As long as the second argument is not a valid URL or pathname, it will be treated as a text message.ErrorDocument 403 "Some Message"
- The
AccessConfig
andResourceConfig
directives no longer exist. Existing instances of these directives can be replaced with theInclude
directive which has equivalent functionality. If you were making use of the default values of these directives without including them in the configuration files, you may need to addInclude conf/access.conf
andInclude conf/srm.conf
to yourhttpd.conf
. In order to assure that Apache reads the configuration files in the same order as was implied by the older directives, theInclude
directives should be placed at the end ofhttpd.conf
, with the one forsrm.conf
preceding the one foraccess.conf
. - The
BindAddress
andPort
directives no longer exist. Equivalent functionality is provided with the more flexibleListen
directive. - Another use of the
Port
directive in Apache-1.3 was setting the port number to be used in self-referential URL's. The Apache-2.0 equivalent is the newServerName
syntax: it has been changed to allow specifying both the hostname and the port number for self-referential URL's in one directive. - The
ServerType
directive no longer exists. The method used to serve requests is now determined by the selection of MPM. There is currently no MPM designed to be launched by inetd. - The
mod_log_agent
andmod_log_referer
modules which provided theAgentLog
,RefererLog
andRefererIgnore
directives have been removed. Agent and referer logs are still available using theCustomLog
directive ofmod_log_config
. - The
AddModule
andClearModuleList
directives no longer exist. These directives were used to ensure that modules could be enabled in the correct order. The new Apache 2.0 API allows modules to explicitly specify their ordering, eliminating the need for these directives. - The
FancyIndexing
directive has been removed. The same functionality is available through theFancyIndexing
option to theIndexOptions
directive. - The MultiViews content-negotiation technique provided by
mod_negotiation
has become more strict in its default file matching. It will select only from negotiable files. The old behavior can be restored using theMultiviewsMatch
directive. - (since version 2.0.51)
The functionality of the
ErrorHeader
directive was put together with theHeader
directive, since it was a misnomer. UseHeader always set foo bar
instead to get the desired behaviour.
Misc Changes
- The module
mod_auth_digest
, which was experimental in Apache 1.3, is now a standard module. - The
mod_mmap_static
module, which was experimental in Apache 1.3, has been replaced withmod_file_cache
. - The distribution has been completely reorganized so that
it no longer contains an independent
src
directory. Instead, the sources are logically organized under the main distribution directory, and installations of the compiled server should be directed to a separate directory.
Third Party Modules
Extensive changes were made to the server API in Apache 2.0. Existing modules designed for the Apache 1.3 API will not work in Apache 2.0 without modification. Details are provided in the developer documentation.