cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 00/02/20 23:35:36 Modified:htdocs/manual/mod mod_rewrite.html Log: Documentation fixes do not harm anyone, so I feel free to commit this English cleanup to the mod_rewrite documentation although we're in code freeze state. But we should now really kick out the 1.3.12 baby. We're already behind the proposed dates... Submitted by: G.W. Haywood [EMAIL PROTECTED] Reviewed by: Ralf S. Engelschall Revision ChangesPath 1.49 +132 -133 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- mod_rewrite.html 2000/02/05 11:44:06 1.48 +++ mod_rewrite.html 2000/02/21 07:35:35 1.49 @@ -81,13 +81,13 @@ P This module operates on the full URLs (including the path-info part) both in per-server context (CODEhttpd.conf/CODE) and per-directory context -(CODE.htaccess/CODE) and even can generate query-string parts on result. +(CODE.htaccess/CODE) and can even generate query-string parts on result. The rewritten result can lead to internal sub-processing, external request redirection or even to an internal proxy throughput. P But all this functionality and flexibility has its drawback: complexity. So -don't expect to understand this module in its whole in just one day. +don't expect to understand this entire module in just one day. P This module was invented and originally written in April 1996BR @@ -152,46 +152,46 @@ First you have to understand that when Apache processes a HTTP request it does this in phases. A hook for each of these phases is provided by the Apache API. Mod_rewrite uses two of these hooks: the URL-to-filename translation hook -which is used after the HTTP request was read and before any authorization +which is used after the HTTP request has been read but before any authorization starts and the Fixup hook which is triggered after the authorization phases -and after the per-directory config files (CODE.htaccess/CODE) where read, -but before the content handler is activated. +and after the per-directory config files (CODE.htaccess/CODE) have been +read, but before the content handler is activated. P So, after a request comes in and Apache has determined the corresponding -server (or virtual server) the rewriting engine start processing of all +server (or virtual server) the rewriting engine starts processing of all mod_rewrite directives from the per-server configuration in the URL-to-filename phase. A few steps later when the final data directories are found, the per-directory configuration directives of mod_rewrite are triggered -in the Fixup phase. In both situations mod_rewrite either rewrites URLs to new +in the Fixup phase. In both situations mod_rewrite rewrites URLs either to new URLs or to filenames, although there is no obvious distinction between them. -This is a usage of the API which was not intended this way when the API +This is a usage of the API which was not intended to be this way when the API was designed, but as of Apache 1.x this is the only way mod_rewrite can operate. To make this point more clear remember the following two points: OL -LIThe API currently provides only a URL-to-filename hook. Although -mod_rewrite rewrites URLs to URLs, URLs to filenames and even -filenames to filenames. In Apache 2.0 the two missing hooks -will be added to make the processing more clear. But this -point has no drawbacks for the user, it is just a fact which -should be remembered: Apache does more in the URL-to-filename hook -then the API intends for it. +LIAlthough mod_rewrite rewrites URLs to URLs, URLs to filenames and +even filenames to filenames, the API currently provides only a +URL-to-filename hook. In Apache 2.0 the two missing hooks will be +added to make the processing more clear. But this point has no +drawbacks for the user, it is just a fact which should be +remembered: Apache does more in the URL-to-filename hook than the +API intends for it. P LIUnbelievably mod_rewrite provides URL manipulations in per-directory -context, EMi.e./EM, within CODE.htaccess/CODE files, although -these are -reached a very long time after the URLs were translated to filenames (this -has to be this way, because CODE.htaccess/CODE files stay in the -filesystem, so processing has already been reached this stage of -processing). In other words: According to the API phases at this time it -is too late for any URL manipulations. To overcome this chicken and egg -problem mod_rewrite uses a trick: When you manipulate a URL/filename in -per-directory
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 00/02/05 03:44:07 Modified:htdocs/manual/mod mod_rewrite.html Log: Fix description of regex quantifiers. Submitted by: Carl van Tast [EMAIL PROTECTED] Reviewed by: Ralf S. Engelschall PR: 5614 Revision ChangesPath 1.48 +1 -1 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- mod_rewrite.html 2000/01/08 14:50:12 1.47 +++ mod_rewrite.html 2000/02/05 11:44:06 1.48 @@ -1364,7 +1364,7 @@ STRONGQuantifiers:/STRONG STRONGCODE?/CODE/STRONG 0 or 1 of the preceding text - STRONGCODE*/CODE/STRONG 0 or N of the preceding text (N gt; 1) + STRONGCODE*/CODE/STRONG 0 or N of the preceding text (N gt; 0) STRONGCODE+/CODE/STRONG 1 or N of the preceding text (N gt; 1) STRONGGrouping:/STRONG
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 99/10/27 02:14:33 Modified:htdocs/manual/mod mod_rewrite.html Log: Ops, I forgot to include this file in previous commit Revision ChangesPath 1.45 +4 -5 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- mod_rewrite.html 1999/06/29 10:22:55 1.44 +++ mod_rewrite.html 1999/10/27 09:14:32 1.45 @@ -1010,10 +1010,9 @@ CODE$N/CODE /STRONG/BLOCKQUOTE -(1 lt;= N lt;= 9) which provide access to the grouped parts (parenthesis!) -of the -pattern from the corresponding CODERewriteRule/CODE directive (the one -following the current bunch of CODERewriteCond/CODE directives). +(0 lt;= N lt;= 9) which provide access to the grouped parts (parenthesis!) +of the pattern from the corresponding CODERewriteRule/CODE directive (the +one following the current bunch of CODERewriteCond/CODE directives). P LISTRONGRewriteCond backreferences/STRONG: These are backreferences of @@ -1431,7 +1430,7 @@ LIA HREF=#mapfuncmapping-function/A calls (CODE${mapname:key|default}/CODE) /OL -Back-references are CODE$/CODESTRONGN/STRONG (STRONGN/STRONG=1..9) identifiers which +Back-references are CODE$/CODESTRONGN/STRONG (STRONGN/STRONG=0..9) identifiers which will be replaced by the contents of the STRONGN/STRONGth group of the matched EMPattern/EM. The server-variables are the same as for the EMTestString/EM of a CODERewriteCond/CODE directive. The
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 99/01/01 11:50:24 Modified:src CHANGES src/modules/standard mod_rewrite.c mod_rewrite.h htdocs/manual/mod mod_rewrite.html Log: Two minor enhancements to mod_rewrite: First RewriteRule now also supports the ``nocase|NC'' flag (as RewriteCond already does for ages) to match case insensitive (this especially avoids nasty patterns like `[tT][eE][sS][tT]'). Second two additional internal map functions `escape' and `unescape' were added which can be used to escape/unescape to/from hex-encodings in URLs parts (this is especially useful in combination with map lookups). Submitted by: Magnus Bodin, Ian Kallen Integrated and fixed by: Ralf S. Engelschall Revision ChangesPath 1.1187+9 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1186 retrieving revision 1.1187 diff -u -r1.1186 -r1.1187 --- CHANGES 1999/01/01 17:17:54 1.1186 +++ CHANGES 1999/01/01 19:50:20 1.1187 @@ -1,5 +1,14 @@ Changes with Apache 1.3.4 + *) Two minor enhancements to mod_rewrite: First RewriteRule now also + supports the ``nocase|NC'' flag (as RewriteCond already does for ages) to + match case insensitive (this especially avoids nasty patterns like + `[tT][eE][sS][tT]'). Second two additional internal map functions + `escape' and `unescape' were added which can be used to escape/unescape + to/from hex-encodings in URLs parts (this is especially useful in + combination with map lookups). + [Magnus Bodin, Ian Kallen, Ralf S. Engelschall] + *) Renamed the macro escape_uri() to ap_escape_uri() which was forgotten (because it was a macro) in the symbol renaming process. [Ralf S. Engelschall] 1.135 +46 -14apache-1.3/src/modules/standard/mod_rewrite.c Index: mod_rewrite.c === RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v retrieving revision 1.134 retrieving revision 1.135 diff -u -r1.134 -r1.135 --- mod_rewrite.c 1999/01/01 19:05:12 1.134 +++ mod_rewrite.c 1999/01/01 19:50:22 1.135 @@ -501,6 +501,12 @@ else if (strcmp(a2+4, toupper) == 0) { new-func = rewrite_mapfunc_toupper; } +else if (strcmp(a2+4, escape) == 0) { +new-func = rewrite_mapfunc_escape; +} +else if (strcmp(a2+4, unescape) == 0) { +new-func = rewrite_mapfunc_unescape; +} else if (sconf-state == ENGINE_ENABLED) { return ap_pstrcat(cmd-pool, RewriteMap: internal map not found:, a2+4, NULL); @@ -708,6 +714,7 @@ char *a3; char *cp; const char *err; +int mode; sconf = (rewrite_server_conf *) ap_get_module_config(cmd-server-module_config, rewrite_module); @@ -726,16 +733,32 @@ '\n, NULL); } +/* arg3: optional flags field */ +new-forced_mimetype = NULL; +new-forced_responsecode = HTTP_MOVED_TEMPORARILY; +new-flags = RULEFLAG_NONE; +new-env[0] = NULL; +new-skip = 0; +if (a3 != NULL) { +if ((err = cmd_rewriterule_parseflagfield(cmd-pool, new, + a3)) != NULL) { +return err; +} +} + /* arg1: the pattern * try to compile the regexp to test if is ok */ -new-flags = RULEFLAG_NONE; cp = a1; if (cp[0] == '!') { new-flags |= RULEFLAG_NOTMATCH; cp++; } -if ((regexp = ap_pregcomp(cmd-pool, cp, REG_EXTENDED)) == NULL) { +mode = REG_EXTENDED; +if (new-flags RULEFLAG_NOCASE) { +mode |= REG_ICASE; +} +if ((regexp = ap_pregcomp(cmd-pool, cp, mode)) == NULL) { return ap_pstrcat(cmd-pool, RewriteRule: cannot compile regular expression ', a1, '\n, NULL); @@ -749,18 +772,6 @@ */ new-output = ap_pstrdup(cmd-pool, a2); -/* arg3: optional flags field */ -new-forced_mimetype = NULL; -new-forced_responsecode = HTTP_MOVED_TEMPORARILY; -new-env[0] = NULL; -new-skip = 0; -if (a3 != NULL) { -if ((err = cmd_rewriterule_parseflagfield(cmd-pool, new, - a3)) != NULL) { -return err; -} -} - /* now, if the server or per-dir config holds an * array of RewriteCond entries, we take it for us * and clear the array @@ -917,6 +928,10 @@ || strcasecmp(key, QSA) == 0 ) { cfg-flags |=
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 98/10/22 05:02:29 Modified:htdocs/manual/mod mod_rewrite.html Log: Fix a few bugs in the mod_rewrite documentation by the help of some hints from Adam M Donahue [EMAIL PROTECTED]. Revision ChangesPath 1.39 +8 -8 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- mod_rewrite.html 1998/09/17 14:14:57 1.38 +++ mod_rewrite.html 1998/10/22 12:02:27 1.39 @@ -248,21 +248,21 @@ continues with the next rule. If the EMPattern/EM matched, mod_rewrite looks for corresponding rule conditions. If none are present, it just substitutes the URL with a new value which is constructed from the string -EMSubstitution/EM and goes on with its rule-looping. But if conditions But +EMSubstitution/EM and goes on with its rule-looping. But if conditions exists, it starts an inner loop for processing them in order they are listed. For conditions the logic is different: We don't match a pattern against the current URL. Instead we first create a string -EMTestString/EM by expanding variables, back-references, map lookups, EMetc./EM -and then we try to match EMTestPattern/EM against it. If the pattern -doesn't match, the complete set of conditions and the corresponding rule fails. -If the pattern matches, then the next condition is processed until no more -condition is available. If all conditions matched processing is continued with -the substitution of the URL with EMSubstitution/EM. +EMTestString/EM by expanding variables, back-references, map lookups, +EMetc./EM and then we try to match EMCondPattern/EM against it. If the +pattern doesn't match, the complete set of conditions and the corresponding +rule fails. If the pattern matches, then the next condition is processed +until no more condition is available. If all conditions matched processing is +continued with the substitution of the URL with EMSubstitution/EM. H2A NAME=InternalBackRefsRegex Back-Reference Availability/A/H2 One important thing here has to be remembered: Whenever you -use parenthesis in EMPattern/EM or in one of the EMTestPattern/EM +use parenthesis in EMPattern/EM or in one of the EMCondPattern/EM back-reference are internally created which can be used with the strings CODE$N/CODE and CODE%N/CODE (see below). And these are available for creating the strings EMSubstitution/EM and
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 98/08/24 11:39:30 Modified:src CHANGES htdocs/manual/mod mod_rewrite.html Log: Remove bad reference to non-existing SERVER_VERSION in mod_rewrite.html Submitted by: Youichirou Koga [EMAIL PROTECTED] Reviewed by: Ralf S. Engelschall PR: 2895 Revision ChangesPath 1.1032+3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1031 retrieving revision 1.1032 diff -u -r1.1031 -r1.1032 --- CHANGES 1998/08/22 06:57:15 1.1031 +++ CHANGES 1998/08/24 18:39:21 1.1032 @@ -1,5 +1,8 @@ Changes with Apache 1.3.2 + *) Remove bad reference to non-existing SERVER_VERSION in mod_rewrite.html + [Youichirou Koga [EMAIL PROTECTED]] PR#2895 + *) Dynamically size the filename column of mod_autoindex output. [Dean Gaudet] 1.35 +0 -1 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- mod_rewrite.html 1998/08/02 11:18:26 1.34 +++ mod_rewrite.html 1998/08/24 18:39:27 1.35 @@ -1051,7 +1051,6 @@ SERVER_PORTBR SERVER_PROTOCOLBR SERVER_SOFTWAREBR -SERVER_VERSIONBR /FONT /TD
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 98/08/02 04:18:26 Modified:src CHANGES htdocs/manual/mod mod_rewrite.html Log: Fixed examples in mod_rewrite.html document. PR: 2756 Revision ChangesPath 1.994 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.993 retrieving revision 1.994 diff -u -r1.993 -r1.994 --- CHANGES 1998/08/02 04:43:15 1.993 +++ CHANGES 1998/08/02 11:18:24 1.994 @@ -1,5 +1,8 @@ Changes with Apache 1.3.2 + *) Fixed examples in mod_rewrite.html document. + [Youichirou Koga [EMAIL PROTECTED], Ralf S. Engelschall] PR#2756 + *) Allow ap_read_request errors to propagate through the normal request handling loop so that the connection can be properly closed with lingering_close, thus avoiding a potential TCP reset that would 1.34 +4 -4 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- mod_rewrite.html 1998/07/25 12:16:37 1.33 +++ mod_rewrite.html 1998/08/02 11:18:26 1.34 @@ -660,7 +660,7 @@ P TABLE BORDER=0 CELLSPACING=1 CELLPADDING=5 BGCOLOR=#F0F0F0 TRTDPRE -RewriteMap real-to-host txt:/path/to/file/map.txt +RewriteMap real-to-user txt:/path/to/file/map.txt /PRE/TD/TR /TABLE @@ -1764,13 +1764,13 @@ /BLOCKQUOTE P We take the rewrite mapfile from above and save it under -CODE/anywhere/map.real-to-user/CODE. Then we only have to add the +CODE/path/to/file/map.txt/CODE. Then we only have to add the following lines to the Apache server configuration file: BLOCKQUOTE PRE -RewriteLog /anywhere/rewrite.log -RewriteMap real-to-user txt:/anywhere/map.real-to-host +RewriteLog /path/to/file/rewrite.log +RewriteMap real-to-user txt:/path/to/file/map.txt RewriteRule ^/([^/]+)/~([^/]+)/(.*)$ /u/${real-to-user:$2|nobody}/$3.$1 /PRE /BLOCKQUOTE
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 98/07/25 05:16:38 Modified:src CHANGES htdocs/manual/mod mod_rewrite.html Log: Update the mod_rewrite.html document to correctly reflect the situation of the `proxy' (`[P]') feature. PR: 2679 Revision ChangesPath 1.986 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.985 retrieving revision 1.986 diff -u -r1.985 -r1.986 --- CHANGES 1998/07/25 11:56:28 1.985 +++ CHANGES 1998/07/25 12:16:35 1.986 @@ -1,4 +1,7 @@ Changes with Apache 1.3.2 + + *) Update the mod_rewrite.html document to correctly reflect the situation + of the `proxy' (`[P]') feature. [Ralf S. Engelschall] PR#2679 *) Fix `install-includes' sub-target of `install' target in top-level Makefile.tmpl: The umask+cp approach didn't work as expected (especially 1.33 +13 -11apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- mod_rewrite.html 1998/06/22 09:48:38 1.32 +++ mod_rewrite.html 1998/07/25 12:16:37 1.33 @@ -1493,18 +1493,20 @@ LI'STRONGCODEproxy|P/CODE/STRONG' (force STRONGp/STRONGroxy)BR This flag forces the substitution part to be internally forced as a proxy request and immediately (i.e. rewriting rule processing stops here) put -through the proxy module. You have to make sure that the substitution -string is a valid URI (e.g. typically CODEhttp:///CODE) which can -be handled by the Apache proxy module. If not you get an error from -the proxy module. Use this flag to achieve a more powerful implementation -of the CODEmod_proxy/CODE directive CODEProxyPass/CODE, to map -some remote stuff into the namespace of the local server. +through the A HREF=mod_proxy.htmlproxy module/A. You have to make +sure that the substitution string is a valid URI (e.g. typically starting +with CODEhttp:///CODEEMhostname/EM) which can be handled by the +Apache proxy module. If not you get an error from the proxy module. Use +this flag to achieve a more powerful implementation of the A +HREF=mod_proxy.html#proxypassProxyPass/A directive, to map some +remote stuff into the namespace of the local server. P -Notice: STRONGYou really have to put CODEProxyRequests On/CODE into your -server configuration to prevent proxy requests from leading to core-dumps -inside the Apache kernel. If you have not compiled in the proxy module, -then there is no core-dump problem, because mod_rewrite checks for -existence of the proxy module and if lost forbids proxy URLs. /STRONG +Notice: To use this functionality make sure you have the proxy module +compiled into your Apache server program. If you don't know please check +whether CODEmod_proxy.c/CODE is part of the ``CODEhttpd -l/CODE'' +output. If yes, this functionality is available to mod_rewrite. If not, +then you first have to rebuild the ``CODEhttpd/CODE'' program with +mod_proxy enabled. P LI'STRONGCODElast|L/CODE/STRONG' (STRONGl/STRONGast rule)BR Stop the rewriting process here and
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 98/06/22 02:48:39 Modified:htdocs/manual/mod mod_rewrite.html Log: I couldn't resist to add this cookie. Its just too funny and descriptive at the same time ;-) Revision ChangesPath 1.32 +15 -0 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- mod_rewrite.html 1998/05/20 14:12:59 1.31 +++ mod_rewrite.html 1998/06/22 09:48:38 1.32 @@ -51,6 +51,21 @@ /BLOCKQUOTE /BLOCKQUOTE +BLOCKQUOTE +BLOCKQUOTE +BLOCKQUOTE +EM`` +Despite the tons of examples and docs, mod_rewrite +is voodoo. Damned cool voodoo, but still voodoo. +''/EM +DIV ALIGN=RIGHT +-- Brian MooreBR [EMAIL PROTECTED] +/DIV +/BLOCKQUOTE +/BLOCKQUOTE +/BLOCKQUOTE + Welcome to mod_rewrite, the Swiss Army Knife of URL manipulation! P
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 98/05/15 02:29:16 Modified:htdocs/manual/mod mod_rewrite.html Log: fix typos. Revision ChangesPath 1.30 +5 -5 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- mod_rewrite.html 1998/03/25 08:03:48 1.29 +++ mod_rewrite.html 1998/05/15 09:29:15 1.30 @@ -59,7 +59,7 @@ of rules and an unlimited number of attached rule conditions for each rule to provide a really flexible and powerful URL manipulation mechanism. The URL manipulations can depend on various tests, for instance server variables, -environment variables, HTTP headers, timestamps and even external database +environment variables, HTTP headers, time stamps and even external database lookups in various formats can be used to achieve a really granular URL matching. @@ -129,7 +129,7 @@ P The internal processing of this module is very complex but needs to be explained once even to the average user to avoid common mistakes and to let -you exploit its full funtionality. +you exploit its full functionality. H2A NAME=InternalAPIAPI Phases/A/H2 @@ -182,7 +182,7 @@ manipulations in per-server context are really fast and efficient, per-directory rewrites are slow and inefficient due to this chicken and egg problem. But on the other hand this is the only way mod_rewrite can -provide (locally restricted) URL manipulatiuons to the avarage user. +provide (locally restricted) URL manipulations to the average user. /OL P @@ -245,7 +245,7 @@ H2A NAME=InternalBackRefsRegex Back-Reference Availability/A/H2 -One important thing here has to be rememberd: Whenever you +One important thing here has to be remembered: Whenever you use parenthesis in EMPattern/EM or in one of the EMTestPattern/EM back-reference are internally created which can be used with the strings CODE$N/CODE and CODE%N/CODE (see below). And these @@ -657,7 +657,7 @@ post-processing feature: After looking up a value it is parsed according to contained ``CODE|/CODE'' characters which have the meaning of ``or''. Or in other words: they indicate a set of alternatives from which the actual -returned value is choosen randomly. Although this sounds crazy and useless, it +returned value is chosen randomly. Although this sounds crazy and useless, it was actually designed for load balancing in a reverse proxy situation where the looked up values are server names. Example:
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 98/03/25 00:03:49 Modified:htdocs/manual/mod mod_rewrite.html Log: - more RegEx hints, especially to the Friedl-book - update of the directive blocks to be directive-dict.html compliant Revision ChangesPath 1.29 +202 -33 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- mod_rewrite.html 1998/03/20 11:11:03 1.28 +++ mod_rewrite.html 1998/03/25 08:03:48 1.29 @@ -297,9 +297,25 @@ A HREF=directive-dict.html#Context REL=Help -STRONGContext:/STRONG/A server config, virtual host, per-directory configBR -P +STRONGContext:/STRONG/A server config, virtual host, directory, .htaccessBR +A + HREF=directive-dict.html#Override + REL=Help +STRONGOverride:/STRONG/A FileInfoBR +A + HREF=directive-dict.html#Status + REL=Help +STRONGStatus:/STRONG/A ExtensionBR +A + HREF=directive-dict.html#Module + REL=Help +STRONGModule:/STRONG/A mod_rewrite.cBR +A + HREF=directive-dict.html#Compatibility + REL=Help +STRONGCompatibility:/STRONG/A Apache 1.2BR +P The CODERewriteEngine/CODE directive enables or disables the runtime rewriting engine. If it is set to CODEoff/CODE this module does no runtime processing at all. It does not even update the CODESCRIPT_URx/CODE @@ -322,17 +338,33 @@ A HREF=directive-dict.html#Syntax REL=Help -STRONGSyntax:/STRONG/A CODERewriteOptions/CODE EMOption/EM ...BR +STRONGSyntax:/STRONG/A CODERewriteOptions/CODE EMOption/EMBR A HREF=directive-dict.html#Default REL=Help -STRONGDefault:/STRONG/A -EMNone/EM-BR +STRONGDefault:/STRONG/A EMNone/EMBR A HREF=directive-dict.html#Context REL=Help -STRONGContext:/STRONG/A server config, virtual host, per-directory configBR -P +STRONGContext:/STRONG/A server config, virtual host, directory, .htaccessBR +A + HREF=directive-dict.html#Override + REL=Help +STRONGOverride:/STRONG/A FileInfoBR +A + HREF=directive-dict.html#Status + REL=Help +STRONGStatus:/STRONG/A ExtensionBR +A + HREF=directive-dict.html#Module + REL=Help +STRONGModule:/STRONG/A mod_rewrite.cBR +A + HREF=directive-dict.html#Compatibility + REL=Help +STRONGCompatibility:/STRONG/A Apache 1.2BR +P The CODERewriteOptions/CODE directive sets some special options for the current per-server or per-directory configuration. The EMOption/EM strings can be one of the following: @@ -358,13 +390,29 @@ A HREF=directive-dict.html#Default REL=Help -STRONGDefault:/STRONG/A -EMNone/EM-BR +STRONGDefault:/STRONG/A EMNone/EMBR A HREF=directive-dict.html#Context REL=Help STRONGContext:/STRONG/A server config, virtual hostBR -P +A + HREF=directive-dict.html#Override + REL=Help +STRONGOverride:/STRONG/A EMNot applicable/EMBR +A + HREF=directive-dict.html#Status + REL=Help +STRONGStatus:/STRONG/A ExtensionBR +A + HREF=directive-dict.html#Module + REL=Help +STRONGModule:/STRONG/A mod_rewrite.cBR +A + HREF=directive-dict.html#Compatibility + REL=Help +STRONGCompatibility:/STRONG/A Apache 1.2BR +P The CODERewriteLog/CODE directive sets the name of the file to which the server logs any rewriting actions it performs. If the name does not begin with a slash ('CODE//CODE') then it is assumed to be relative to the @@ -421,6 +469,22 @@ HREF=directive-dict.html#Context REL=Help STRONGContext:/STRONG/A server config, virtual hostBR +A + HREF=directive-dict.html#Override + REL=Help +STRONGOverride:/STRONG/A EMNot applicable/EMBR +A + HREF=directive-dict.html#Status + REL=Help +STRONGStatus:/STRONG/A ExtensionBR +A + HREF=directive-dict.html#Module + REL=Help +STRONGModule:/STRONG/A mod_rewrite.cBR +A + HREF=directive-dict.html#Compatibility + REL=Help +STRONGCompatibility:/STRONG/A Apache 1.2BR P The CODERewriteLogLevel/CODE directive set the verbosity level of the rewriting @@ -461,11 +525,27 @@ A HREF=directive-dict.html#Default REL=Help -STRONGDefault:/STRONG/A -EMNone/EM-BR +STRONGDefault:/STRONG/A EMNone/EMBR A HREF=directive-dict.html#Context REL=Help STRONGContext:/STRONG/A server config, virtual hostBR +A + HREF=directive-dict.html#Override + REL=Help +STRONGOverride:/STRONG/A EMNot applicable/EMBR +A + HREF=directive-dict.html#Status + REL=Help +STRONGStatus:/STRONG/A ExtensionBR +A + HREF=directive-dict.html#Module + REL=Help +STRONGModule:/STRONG/A mod_rewrite.cBR +A + HREF=directive-dict.html#Compatibility + REL=Help +STRONGCompatibility:/STRONG/A Apache 1.3BR P This directive sets the filename for a synchronization lockfile which @@ -491,6 +571,22 @@
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html mod_proxy.html
martin 98/03/20 03:11:05 Modified:htdocs/manual/mod mod_rewrite.html mod_proxy.html Log: Typo Revision ChangesPath 1.28 +3 -3 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.27 retrieving revision 1.28 diff -u -u -r1.27 -r1.28 --- mod_rewrite.html 1998/03/10 13:37:27 1.27 +++ mod_rewrite.html 1998/03/20 11:11:03 1.28 @@ -1017,12 +1017,12 @@ LI'STRONGlt;CondPattern/STRONG' (is lexicographically lower)BR Treats the EMCondPattern/EM as a plain string and compares it lexicographically to EMTestString/EM and results in a true expression if -EMTestString/EM is lexicographically lower then EMCondPattern/EM. +EMTestString/EM is lexicographically lower than EMCondPattern/EM. P LI'STRONGgt;CondPattern/STRONG' (is lexicographically greater)BR Treats the EMCondPattern/EM as a plain string and compares it lexicographically to EMTestString/EM and results in a true expression if -EMTestString/EM is lexicographically greater then EMCondPattern/EM. +EMTestString/EM is lexicographically greater than EMCondPattern/EM. P LI'STRONG=CondPattern/STRONG' (is lexicographically equal)BR Treats the EMCondPattern/EM as a plain string and compares it @@ -1042,7 +1042,7 @@ P LI'STRONG-s/STRONG' (is regular file with STRONGs/STRONGize)BR Treats the EMTestString/EM as a pathname and -tests if it exists and is a regular file with size greater then zero. +tests if it exists and is a regular file with size greater than zero. P LI'STRONG-l/STRONG' (is symbolic STRONGl/STRONGink)BR Treats the EMTestString/EM as a pathname and 1.38 +1 -1 apache-1.3/htdocs/manual/mod/mod_proxy.html Index: mod_proxy.html === RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/mod_proxy.html,v retrieving revision 1.37 retrieving revision 1.38 diff -u -u -r1.37 -r1.38 --- mod_proxy.html1998/03/20 07:56:49 1.37 +++ mod_proxy.html1998/03/20 11:11:04 1.38 @@ -355,7 +355,7 @@ The ProxyReceiveBufferSize directive specifies an explicit network buffer size for outgoing HTTP and FTP connections, for increased throughput. It has to be -greater then 512 or set to 0 to indicate that the systems default buffer size +greater than 512 or set to 0 to indicate that the system's default buffer size should be used. P
cvs commit: apache-1.3/htdocs/manual/mod mod_rewrite.html
rse 98/02/25 07:42:59 Modified:htdocs/manual/mod mod_rewrite.html Log: Ops, we have totally mis-documented the %{LA-U:xxx} and %{LA-F:xxx} constructs, thus no one noticed that it can be used to lookup the REMOTE_USER variable (one of the mod_rewrite FAQs) even in per-server context. One just has to use %{LA-U:REMOTE_USER} instead of %{REMOTE_USER} there. Notice that %{REMOTE_USER} is also useful, but only for per-dir context. Revision ChangesPath 1.25 +16 -6 apache-1.3/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- mod_rewrite.html 1998/02/24 13:39:08 1.24 +++ mod_rewrite.html 1998/02/25 15:42:58 1.25 @@ -774,14 +774,24 @@ is the value of the HTTP header ``TTProxy-Connection:/TT''. P -LIThere is the special format: TT%{LA-U:url}/TT -for look-aheads like TT-U/TT. This performs a internal sub-request to -look-ahead for the final value of EMurl/EM. +LIThere is the special format TT%{LA-U:variable}/TT for look-aheads +which perform an internal (URL-based) sub-request to determine the final value +of EMvariable/EM. Use this when you want to use a variable for rewriting +which actually is set later in an API phase and thus is not available at the +current stage. For instance when you want to rewrite according to the +TTREMOTE_USER/TT variable from within the per-server context +(TThttpd.conf/TT file) you have to use TT%{LA-U:REMOTE_USER}/TT +because this variable is set by the authorization phases which come +EMafter/EM the URL translation phase where mod_rewrite operates. On the +other hand, because mod_rewrite implements its per-directory context +(TT.htaccess/TT file) via the Fixup phase of the API and because the +authorization phases come EMbefore/EM this phase, you just can use +TT%{REMOTE_USER}/TT there. P -LIThere is the special format: TT%{LA-F:file}/TT -for look-aheads like TT-F/TT. This performs a internal sub-request to -look-ahead for the final value of EMfile/EM. +LIThere is the special format: TT%{LA-F:variable}/TT which perform an +internal (filename-based) sub-request to determine the final value of +EMvariable/EM. This is the most of the time the same as LA-U above. /OL P