matched case-independently. If the *match* stanza as a whole
matches and contains no *restpat* line (as described below),
the rest string of the request is replaced by the remainder of
- the rest string after the portion that was matched by 'REGEX'.
+ the rest string after the portion that was matched by
+ 'REGEX'. See also URL UNQUOTING, below.
*url* 'REGEX' 'FLAGS'::
'REGEX' must be an extended regular expression. The rule is
considered to match if 'REGEX' matches the raw URL of the
request. If 'FLAGS' contain the character `i`, 'REGEX' is
- matched case-independently.
+ matched case-independently. See also URL UNQUOTING, below.
*method* 'REGEX' 'FLAGS'::
'HEADER', the rule never matches. If 'FLAGS' contain the
character `i`, 'REGEX' is matched case-independently.
+*all*::
+
+ The rule always matches.
+
*default*::
- Matches if and only if no *match* stanza without a *default*
- rule has matched.
+ Convenient shorthand for an *all* line followed by *priority
+ -10* (see below).
In addition to the rules, a *match* stanza must contain exactly one
-follow-up line specifying the action to take if it matches. Currently,
-only the *handler* action is recognized:
+follow-up line specifying the action to take if it matches. The
+following actions are supported:
*handler* 'HANDLER'::
'HANDLER' must be a named handler as declared by a *child* or
*fchild* stanza, to which the request is passed.
+*reparse*::
+
+ Apply any side-effects as required by the match stanza (such
+ as rest-string or header modifications), and then retry the
+ matching of the request. During the rematching, the stanza
+ containing the *reparse* action will be disabled. Multiple
+ *reparse* stanzas may be used recursively.
+
Additionally, a *match* stanza may contain any of the following,
optional lines:
+*priority* 'INTEGER'::
+
+ Specifies the priority for the match stanza. In case more than
+ one stanza match a request, the one with the highest priority
+ is used. In case more than one stanza with the same highest
+ priority match a request, it is unspecified which will be
+ used. Match stanzas without a priority specification will
+ default to priority 0. Either positive or negative priorities
+ may be specified.
+
+*order* 'INTEGER'::
+
+ A synonym for *priority*. Use whichever you like the best.
+
*set* 'HEADER' 'VALUE'::
If the *match* stanza as a whole matches, the named HTTP
If no *match* stanza matches, a 404 response is returned to the
client.
+URL UNQUOTING
+-------------
+
+If the 'FLAGS' of a *point* or *url* rule contain the character `q`,
+then the rule's pattern will be matched against a copy of the input
+string where URL percent-escapes have been decoded so that, for
+example, the regular expression `^~` will match an input string that
+begins with either `~`, `%7E` or `%7e`.
+
+Even if such percent-escapes were decoded, however, the original
+version of the string will be used for any *restpat* expansion,
+regardlessly of whether the escapes were unquoted inside or outside
+the matched part of the string.
+
SIGNALS
-------