Received: by taz.hyperreal.com (8.6.12/8.6.5) id LAA02937;
Sat, 20 Jul 1996 11:27:12 -0700
Received: from en.muc.de by taz.hyperreal.com (8.6.12/8.6.5) with SMTP id
LAA02923; Sat, 20 Jul 1996 11:27:07 -0700
Received: by en.muc.de (Sendmail5.67a8/IDA-1.5)
id AA29427; Sat, 20 Jul 1996 20:27:04 +0200
Message-Id: <199607201827.AA29427@en.muc.de>
Subject: ANNOUNCE: mod_rewrite v2.0
To: new-httpd@hyperreal.com (Apache Developer ML)
Date: Sat, 20 Jul 1996 20:27:03 +0200 (MET DST)
From: rse@engelschall.com (Ralf S. Engelschall)
Organization: Engelschall Private, Dachau/Munich, Germany
X-W3-Page: http://www.engelschall.com/~rse
X-Mailer: ELM [version 2.4 PL22]
Content-Type: text
Content-Length: 4353
Sender: owner-new-httpd@apache.org
Precedence: bulk
Reply-To: new-httpd@hyperreal.com
ANNOUNCING
Ralf S. Engelschall's
Apache Server Module ``mod_rewrite''
Version 2.0 (20-07-1996)
Summary:
This is an Apache Server module which uses a regular-expression
parser to re-write requested URLs on the fly. It can use
external databases (either plain text, or DBM) to provide a
mapping-function or generate real URIs (including QUERY_INFO
parts) for internal subprocessing or external request redirection.
New To Version 2.0:
[due to the amount of changes, the version number jumped from
1.7 (the last official release) directly to 2.0]
o ** now mod_rewrite contains per-directory configuration (.htaccess)
file support, i.e. all RewriteXXX directives now work also in per-dir
configs. The only difference: In per-dir context the URL to the local
directory gets automatically stripped before the rules get applied
and automatically added back after the substitution part was used.
o ** now mod_rewrite contains proxy support: A new flag proxy|P was
added to allow you to force a substitution part of a RewriteRule to
be internally thrown through the proxy module. This like a enhanced
ProxyRemote directive where "enhanced" means: 1. It also can occur in
per-dir context, 2. it is a real RewriteRule and so it uses the
regexp/subsitution power! This enables you e.g. to proxy only some
files in a directory, etc.
o changed syntax of RewriteRule directive:
now the config line is parsed by ourself and
the flags part "[...]" now is the optional third field
o added a new flag: "type|T=" to be able to force
a MIME type (this is needed to simulate a ScriptAlias directive!)
o added a new flag: "nosubreq|NS" which, when set, causes
the RewriteRule to be ignored on subrequests (this is needed to
prevent some rules from happen when a subrequest is started e.g. by
mod_include to test the various index.* files)
o added a new flag: "chain|C" to chain rules,
i.e. if a rule contains a "chain" flag it gets chained with following
rule and if it doesn't apply, this next rule is skipped! This was
introduced to be able to apply rule(s) only if the previous one(s)
was/were successful.
o now you can use a RewriteRule substitution part (the output) named
"-" which means: NO substitution. Sounds silly? Think about it twice
with the chain flag in mind! This provides the ability to do
preceding MATCHING-ONLY rules for real ones, i.e. you can use more
than one regexp to match a URL before the subsitution part (of the
last rule) gets applied!
o created mod_rewrite_compat.c, a module which makes
the transition from mod_alias and mod_userdir to mod_rewrite. This
module contains stub-codes which implement backward-compatibility
for these replaced modules!
o written a mod_rewrite_info.c which displays
information about internal mod_rewrite structures This approach is
similar to mod_status and mod_info
o now mod_rewrite use a real API version identifier
instead of STANDARD_MODULE_STUFF to make sure that no one will use
mod_rewrite with older versions of the API.
o added more rewrite.log outputs to see more about
the processing inside mod_rewrite.
o fixed a serious bug with the RewriteEngine command: it
was not overtaken in merge_server_config(), so it was sometimes seen
as not set. This should fix the problem with VirtualHost
directives!!
o changed all functions and data structures to static type to
prevent mod_rewrite conflicting with the other Apache code
o a lot of function name changes, some code position changes
o greatly enhanced the documentation
o tested with the official Apache release 1.1.1: works fine.
Ralf S. Engelschall
rse@engelschall.com
http://www.engelschall.com/~rse