New features with this release, as extensions of the Apache functionality. Because the core code has changed so significantly, there are certain liberties that earlier versions of Apache (and the NCSA daemon) took that recent Apache versions are pickier about - please check the compatibility notes if you have any problems.
If you're upgrading from Apache 1.2, you may wish to read the upgrade notes.
Enhancements: Core | Performance | Configuration | Modules | API | Misc
Configuration have been replaced with
      "AddModule" with a slightly different syntax. For module
      authors there are some changes designed to make it easier for
      users to add their module.ProxyReceiveBufferSize
      directive gives mod_proxy's outgoing connections
      larger network buffers, for increased throughput.writev (where
      available) to issue multiple writes with a single system
      call. They also avoid copying memory into buffers as much as
      possible. The result is less CPU time spent on transferring
      large files.mmap, which
      means bytes are only copied from the disk buffer to the
      network buffer directly by the kernel. The program never
      copies bytes around, which reduces CPU time. (Only where
      available/tested.)mod_log_config can
      be compile-time configured to buffer writes.strncpy() with
      ap_cpystrn(), a routine which doesn't have to
      zero-fill the entire result. This has dramatic effects on
      mod_include speed.See the new performance documentation for more information.
configure script and a corresponding top-level
      Makefile.tmpl file. The goal is to provide a GNU
      Autoconf-style frontend which is capable to both drive the
      old src/Configure stuff in batch and
      additionally installs the package with a GNU-conforming
      directory layout. Any options from the old configuration
      scheme are available plus a lot of new options for flexibly
      customizing Apache.README.configure and INSTALL for
      more information.apxs was created which provides
      off-source building, installing and activating of those
      DSO-based modules. It completely hides the platform-dependent
      DSO-build commands from the user and provides an easy way to
      build modules outside the Apache source tree. To achieve this
      APACI installs the Apache C header files together with the
      apxs tool./usr/local/apache//usr/local/etc/httpd/
      to /usr/local/apache/. This change covers only
      the default setting (and the documentation); it is of course
      possible to override it using the -d
      ServerRoot and -f httpd.conf switches
      when starting apache.NameVirtualHost
      directive is used to list IP address:port pairs on which
      HTTP/1.1-style virtual hosting occurs. This is vhosting based
      on the Host: header from the client. Previously
      this address was implicitly the same as the "main address" of
      the machine, and this caused no end of problems for users,
      and was not powerful enough. Please see the Apache Virtual Host documentation for
      further details on configuration.Include directiveInclude
      directive includes other config files immediately at that
      point in parsing.-S command
      line option it will dump out information regarding how it
      parsed the VirtualHost sections. This is useful
      for folks trying to debug their virtual host
      configuration.SetEnvIf
      and SetEnvIfNoCase.
      These allow you to set environment variables for server and
      CGI use based upon attributes of the request.mod_mime_magic has been added.
      It uses "magic numbers" and other hints from a file's
      contents to figure out what the contents are. It then uses
      this information to set the file's media type, if it cannot
      be determined by the file's extension.UNIQUE_ID.ProxyVia
          directive allows switching "Via:" support off or on, or
          suppressing outgoing "Via:" header lines altogether for
          privacy reasons.NoProxy
          and ProxyDomain
          directives added to proxy, useful for intranets.ProxyPassReverse
          directive. It lets Apache adjust the URL in the
          Location header on HTTP redirect responses.mod_include string
      comparisonsmod_dir
          module has been split in two, with mod_dir handling directory
          index files, and mod_autoindex creating
          directory listings. Thus allowing folks to remove the
          indexing function from critical servers.SuppressColumnSorting IndexOptions
          keyword.SuppressHTMLPreamble
          can be used if your README.html file includes its own
          HTML header.IndexOptions
          directive now allows the use of incremental prefixes (+/-
          to add/remove the respective keyword feature, as was
          already possible for the Options directive) to
          its keyword arguments. Multiple IndexOptions directives
          applying to the same directory will now be merged.IconHeight and 
          IconWidth let you set height
          and width attributes to the <IMG> tag
          in directory listings.NameWidth keyword to the IndexOptions
          directive lets you set the number of columns for "fancy"
          directory listings. If set to an '*' asterisk, the
          name width will be adjusted automatically.Alias and
      RedirectAliasMatch,
      ScriptAliasMatch,
      and RedirectMatch
      directives allow for the use of regular expression matching.
      Additionally, new <DirectoryMatch>,
      <LocationMatch>,
      and <FilesMatch>
      sections provide a new syntax for regular expression
      sectioning.AddModuleInfo
      directive added to mod_infoTransferLog disables
      loggingTransferLog
      directive is given then no log is written. This supports
      co-existence with other logging modules.LogFormat
      directive has been enhanced to allow you to give nicknames to
      specific logging formats. You can then use these nicknames in
      other LogFormat and CustomLog
      directives, rather than having to spell out the complete log
      format string each time.RewriteMap
      directiveRewriteMap directive
      of mod_rewrite. They provide two new features: First, you now
      can randomly choose a sub-value from a value which was
      looked-up in a rewriting map (which is useful when choosing
      between backend servers in a Reverse Proxy situation).
      Second, you now can translate URL parts to fixed (upper or
      lower) case (which is useful when doing mass virtual hosting
      by the help of mod_rewrite).For all those module writers and code hackers:
child_initchild_exitchild_init and child_exit functions
      are passed a pool whose lifetime is the same as the lifetime
      of the child (modulo completely fatal events in which Apache
      has no hope of recovering). In contrast, the module
      init function is passed a pool whose lifetime
      ends when the parent exits or restarts.child_terminateregister_other_childhttp_main.h. This is used in the parent
      to register a child for monitoring. The parent will report
      status to a supplied callback function. This allows modules
      to create their own children which are monitored along with
      the httpd children.piped_loghttp_log.h. This API provides the common
      code for implementing piped logs. In particular it implements
      a reliable piped log on architectures supporting it
      (i.e., Unix at the moment).set_last_modified split into
      threeset_last_modified performed
      multiple jobs including the setting of the
      Last-Modified header, the ETag
      header, and processing conditional requests (such as IMS).
      These functions have been split into three functions:
      set_last_modified, set_etag, and
      meets_conditions. The field mtime
      has been added to request_rec to facilitate
      meets_conditions.ap_log_errorap_log_error. This is still a work in
      progress.set_file_slot for config
      parsingset_file_slot routine provides a
      standard routine that prepends ServerRoot to non-absolute
      paths.post_read_request module
      APIpsocket, and
      popendirpsocket and pclosesocket
      functions allow for race-condition free socket creation with
      resource tracking. Similarly popendir and
      pclosedir protect directory reading.is_initial_reqkill_only_onceap_spawn_child functions which
      prevents Apache from aggressively trying to kill off the
      child.alloc debugging codeALLOC_DEBUG provides a rudimentary
      memory debugger which can be used on live servers with low
      impact -- it sets all allocated and freed memory bytes to
      0xa5. Defining ALLOC_USE_MALLOC will cause the
      alloc code to use malloc() and
      free() for each object. This is far more
      expensive and should only be used for testing with tools such
      as Electric Fence and Purify. See main/alloc.c
      for more details.ap_cpystrnstrncpy "lookalike", with slightly
      different semantics is much faster than strncpy
      because it doesn't have to zero-fill the entire buffer.table_addn, table_setn,
      table_mergenpstrdup on their arguments. This provides for
      big speedups. There is also some debugging support to ensure
      code uses them properly. See src/CHANGES for
      more information.construct_urlserver_rec * to taking a request_rec
      *.get_server_name,
      get_server_portap_bspawn_child and
      ap_call_execchild_info * to spawn
      function (as passed to ap_bspawn_child) and to
      ap_call_exec to allow children to work correctly
      on Win32. We also cleaned up the nomenclature a bit,
      replacing spawn_child_err with simply
      ap_spawn_child and
      spawn_child_err_buff with simply
      ap_bspawn_child.ap_add_version_component()Server: header line. Previous 1.3beta versions
      had used a SERVER_SUBVERSION compile-time
      #define to perform this function. Whether the
      tokens are actually displayed is controlled by the new
      ServerTokens directive.AccessFileName
      EnhancementAccessFileName directive can now take
      more than one filename. This lets sites serving pages from
      network file systems and more than one Apache web server,
      configure access based on the server through which shared
      pages are being served.HostnameLookups now defaults to
      "Off"HostnameLookups
      directive now defaults to "Off". This means that, unless
      explicitly turned on, the server will not resolve IP
      addresses into names. This was done to spare the Internet
      from unnecessary DNS traffic.HostnameLookups
      directive now supports double-reverse DNS. (Known as
      PARANOID in the terminology of tcp_wrappers.) An IP
      address passes a double-reverse DNS test if the forward map
      of the reverse map includes the original IP. Regardless of
      the HostnameLookups setting, mod_access access lists using
      DNS names require all names to pass a
      double-reverse DNS test. (Prior versions of Apache required a
      compile-time switch to enable double-reverse DNS.)timefmt string used by mod_include has
      been modified to display the year using four digits rather
      than the two-digit format used previously. The mod_autoindex
      module has also been modified to display years using four
      digits in FancyIndexed directory listings.htdigest), and these other
      applications would fail to build because the routines were
      built only into the server. These routines are now being
      migrated to a separate subdirectory and library so they can
      be used by other applications than just the server. See the
      src/ap/ subdirectory.ServerSignature
      directiveUseCanonicalName
      directiveUseCanonicalName
      off Apache will use the hostname and port supplied by
      the client, if available.SERVER_VERSION definition
      abstracted, and server build date added#defined value
      for SERVER_VERSION. In order to keep this value
      consistent when modules and the core server are compiled at
      different times, this information is now available through
      the core API routine ap_get_server_version().
      The use of the SERVER_VERSION symbol is
      deprecated. Also, ap_get_server_built() returns
      a string representing the time the core server was
      linked.ServerTokens, allows the
      Webmaster to change the value of the Server
      response header field which is sent back to clients. The
      ServerTokens directive controls whether the
      server will include a non-specific note in the server
      identity about the type of operating system on which the
      server is running as well as included module information. As
      of Apache 1.3, this additional information is included by
      default.{SHA1} are taken as Base64 encoded SHA1
      passwords. More information and some utilities to convert
      Netscape ldap/ldif entries can be found in support/SHA1.