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