<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<meta content="noindex, nofollow" name="robots" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Overview of new features in Apache 2.0 - Apache HTTP Server</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="./images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/new_features_2_0.html" rel="canonical" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.0</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.0</a></div><div id="page-content"><div class="retired"><h4>Please note</h4>
            <p>This document refers to the <strong>2.0</strong> version of Apache httpd, which <strong>is no longer maintained</strong>. Upgrade, and refer to the current version of httpd instead, documented at:</p>
        <ul><li><a href="http://httpd.apache.org/docs/current/">Current release version of Apache HTTP Server documentation</a></li></ul><p>You may follow <a href="http://httpd.apache.org/docs/current/new_features_2_0.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Overview of new features in Apache 2.0</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="./de/new_features_2_0.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/new_features_2_0.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/new_features_2_0.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./fr/new_features_2_0.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/new_features_2_0.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/new_features_2_0.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./ru/new_features_2_0.html" hreflang="ru" rel="alternate" title="Russian">&nbsp;ru&nbsp;</a> |
<a href="./tr/new_features_2_0.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>

  <p>This document describes some of the major changes between the
     1.3 and 2.0 versions of the Apache HTTP Server.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#core">Core Enhancements</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#module">Module Enhancements</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><a href="upgrading.html">Upgrading to 2.0 from 1.3</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="core" id="core">Core Enhancements</a></h2>
    

    <dl>
      <dt>Unix Threading</dt>

      <dd>On Unix systems with POSIX threads support, Apache can
      now run in a hybrid multiprocess, multithreaded mode. This
      improves scalability for many, but not all configurations.</dd>

      <dt>New Build System</dt>

      <dd>The build system has been rewritten from scratch to be
      based on <code>autoconf</code> and <code>libtool</code>.
      This makes Apache's configuration system more similar to
      that of other packages.</dd>

      <dt>Multiprotocol Support</dt>

      <dd>Apache now has some of the infrastructure in place to
      support serving multiple protocols. <code class="module"><a href="./mod/mod_echo.html">mod_echo</a></code> has
      been written as an example.</dd>

      <dt>Better support for non-Unix
      platforms</dt>

      <dd>Apache 2.0 is faster and more stable on non-Unix
      platforms such as BeOS, OS/2, and Windows. With the
      introduction of platform-specific <a href="mpm.html">multi-processing modules</a> (MPMs) and the
      Apache Portable Runtime (APR), these platforms are now
      implemented in their native API, avoiding the often buggy and
      poorly performing POSIX-emulation layers.</dd>

      <dt>New Apache API</dt>

      <dd>The API for modules has changed significantly for 2.0.
      Many of the module-ordering/-priority problems from 1.3 should
      be gone. 2.0 does much of this automatically, and module ordering
      is now done per-hook to allow more flexibility. Also, new calls
      have been added that provide additional module capabilities
      without patching the core Apache server.</dd>

      <dt>IPv6 Support</dt>

      <dd>On systems where IPv6 is supported by the underlying
      Apache Portable Runtime library, Apache gets IPv6 listening
      sockets by default. Additionally, the <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code>, <code class="directive"><a href="./mod/core.html#namevirtualhost">NameVirtualHost</a></code>, and <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> directives support
      IPv6 numeric address strings (e.g., "<code>Listen
      [2001:db8::1]:8080</code>").</dd>

      <dt>Filtering</dt>

      <dd>Apache modules may now be written as filters which act on
      the stream of content as it is delivered to or from the
      server. This allows, for example, the output of CGI scripts to
      be parsed for Server Side Include directives using the
      <code>INCLUDES</code> filter in <code class="module"><a href="./mod/mod_include.html">mod_include</a></code>. The
      module <code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code> allows external programs to
      act as filters in much the same way that CGI programs can act as
      handlers.</dd>

      <dt>Multilanguage Error Responses</dt>

      <dd>Error response messages to the browser are now provided in
      several languages, using SSI documents. They may be customized
      by the administrator to achieve a consistent look and feel.</dd>

      <dt>Simplified configuration</dt>

      <dd>Many confusing directives have been simplified. The often
      confusing <code>Port</code> and <code>BindAddress</code> directives
      are gone; only the <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code>
      directive is used for IP address binding; the <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code> directive specifies the
      server name and port number only for redirection and vhost
      recognition.</dd>

      <dt>Native Windows NT Unicode Support</dt>

      <dd>Apache 2.0 on Windows NT now uses utf-8 for all filename
      encodings. These directly translate to the underlying Unicode
      file system, providing multilanguage support for all Windows
      NT-based installations, including Windows 2000 and Windows XP.
      <em>This support does not extend to Windows 95, 98 or ME, which
      continue to use the machine's local codepage for filesystem
      access.</em></dd>

      <dt>Regular Expression Library Updated</dt>

      <dd>Apache 2.0 includes the <a href="http://www.pcre.org/">Perl
      Compatible Regular Expression Library</a> (PCRE).  All regular
      expression evaluation now uses the more powerful Perl 5
      syntax.</dd>

    </dl>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="module" id="module">Module Enhancements</a></h2>
    

    <dl>
      <dt><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code></dt>

      <dd>New module in Apache 2.0. This module is an interface
      to the SSL/TLS encryption protocols provided by
      OpenSSL.</dd>

      <dt><code class="module"><a href="./mod/mod_dav.html">mod_dav</a></code></dt>

      <dd>New module in Apache 2.0. This module implements the HTTP
      Distributed Authoring and Versioning (DAV) specification for
      posting and maintaining web content.</dd>

      <dt><code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code></dt>

      <dd>New module in Apache 2.0.  This module allows supporting
      browsers to request that content be compressed before delivery,
      saving network bandwidth.</dd>

      <dt><code class="module"><a href="./mod/mod_auth_ldap.html">mod_auth_ldap</a></code></dt>

      <dd>New module in Apache 2.0.41.  This module allows an LDAP
      database to be used to store credentials for HTTP Basic
      Authentication.  A companion module, <code class="module"><a href="./mod/mod_ldap.html">mod_ldap</a></code>
      provides connection pooling and results caching.</dd>

      <dt><code class="module"><a href="./mod/mod_auth_digest.html">mod_auth_digest</a></code></dt>

      <dd>Includes additional support for session caching across
      processes using shared memory.</dd>

      <dt><code class="module"><a href="./mod/mod_charset_lite.html">mod_charset_lite</a></code></dt>

      <dd>New module in Apache 2.0. This experimental module allows
      for character set translation or recoding.</dd>

      <dt><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></dt>

      <dd>New module in Apache 2.0. This module includes the
      functionality of <code>mod_mmap_static</code> in Apache 1.3,
      plus adds further caching abilities.</dd>

      <dt><code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code></dt>

      <dd>This module is much more flexible in Apache 2.0. It can now
      modify request headers used by <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>, and
      it can conditionally set response headers.</dd>

      <dt><code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></dt>

      <dd>The proxy module has been completely rewritten to take
      advantage of the new filter infrastructure and to implement a
      more reliable, HTTP/1.1 compliant proxy. In addition, new
      <code class="directive"><a href="./mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code>
      configuration sections provide more readable (and internally
      faster) control of proxied sites; overloaded <code>&lt;Directory
      "proxy:..."&gt;</code> configuration are not supported. The module
      is now divided into specific protocol support modules including
      <code>proxy_connect</code>, <code>proxy_ftp</code> and
      <code>proxy_http</code>.</dd>

      <dt><code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code></dt>

      <dd>A new <code class="directive"><a href="./mod/mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority</a></code> directive can be used to assure that
      the client receives a single document in all cases, rather than
      NOT ACCEPTABLE or MULTIPLE CHOICES responses. In addition, the
      negotiation and MultiViews algorithms have been cleaned up to
      provide more consistent results and a new form of type map that
      can include document content is provided.</dd>

      <dt><code class="module"><a href="./mod/mod_autoindex.html">mod_autoindex</a></code></dt>

      <dd>Autoindex'ed directory listings can now be configured to
      use HTML tables for cleaner formatting, and allow finer-grained
      control of sorting, including version-sorting, and wildcard
      filtering of the directory listing.</dd>

      <dt><code class="module"><a href="./mod/mod_include.html">mod_include</a></code></dt>

      <dd>New directives allow the default start and end tags for SSI elements
      to be changed and allow for error and time format configuration
      to take place in the main configuration file rather than in the
      SSI document. Results from regular expression parsing and grouping
      (now based on Perl's regular expression syntax) can be retrieved
      using <code class="module"><a href="./mod/mod_include.html">mod_include</a></code>'s variables <code>$0</code>
      .. <code>$9</code>.</dd>

      <dt><code class="module"><a href="./mod/mod_auth_dbm.html">mod_auth_dbm</a></code></dt>

      <dd>Now supports multiple types of DBM-like databases using the
      <code class="directive"><a href="./mod/mod_auth_dbm.html#authdbmtype">AuthDBMType</a></code>
      directive.</dd>

    </dl>
  </div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="./de/new_features_2_0.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/new_features_2_0.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/new_features_2_0.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./fr/new_features_2_0.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/new_features_2_0.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/new_features_2_0.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./ru/new_features_2_0.html" hreflang="ru" rel="alternate" title="Russian">&nbsp;ru&nbsp;</a> |
<a href="./tr/new_features_2_0.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2013 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div>
</body></html>