summaryrefslogtreecommitdiff
path: root/src/mod_rewrite.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_rewrite.c')
-rw-r--r--src/mod_rewrite.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/mod_rewrite.c b/src/mod_rewrite.c
index 345f6f6c..8674c59a 100644
--- a/src/mod_rewrite.c
+++ b/src/mod_rewrite.c
@@ -31,6 +31,7 @@ typedef struct {
typedef struct {
rewrite_rule_buffer *rewrite;
+ data_config *context; /* to which apply me */
} plugin_config;
typedef struct {
@@ -377,7 +378,7 @@ URIHANDLER_FUNC(mod_rewrite_uri_handler) {
start = 0; end = pattern_len;
for (k = 0; k < pattern_len; k++) {
- if (pattern[k] == '$' &&
+ if ((pattern[k] == '$' || pattern[k] == '%') &&
isdigit((unsigned char)pattern[k + 1])) {
/* got one */
@@ -387,9 +388,13 @@ URIHANDLER_FUNC(mod_rewrite_uri_handler) {
buffer_append_string_len(con->request.uri, pattern + start, end - start);
- /* n is always larger than 0 */
- if (num < (size_t)n) {
- buffer_append_string(con->request.uri, list[num]);
+ if (pattern[k] == '$') {
+ /* n is always > 0 */
+ if (num < (size_t)n) {
+ buffer_append_string(con->request.uri, list[num]);
+ }
+ } else {
+ config_append_cond_match_buffer(con, p->conf.context, con->request.uri, num);
}
k++;