|
|
|
@ -259,6 +259,7 @@ static handler_t process_rewrite_rules(server *srv, connection *con, plugin_data
|
|
|
|
|
hctx = con->plugin_ctx[p->id]; |
|
|
|
|
} |
|
|
|
|
if (ctx.m < repeat_idx) hctx->state = REWRITE_STATE_FINISHED; |
|
|
|
|
buffer_reset(con->physical.path); |
|
|
|
|
rc = HANDLER_COMEBACK; |
|
|
|
|
} |
|
|
|
|
else if (HANDLER_ERROR == rc) { |
|
|
|
@ -271,15 +272,13 @@ static handler_t process_rewrite_rules(server *srv, connection *con, plugin_data
|
|
|
|
|
|
|
|
|
|
URIHANDLER_FUNC(mod_rewrite_physical) { |
|
|
|
|
plugin_data *p = p_d; |
|
|
|
|
handler_t r; |
|
|
|
|
stat_cache_entry *sce; |
|
|
|
|
|
|
|
|
|
if (con->mode != DIRECT) return HANDLER_GO_ON; |
|
|
|
|
|
|
|
|
|
mod_rewrite_patch_connection(srv, con, p); |
|
|
|
|
p->conf.context = p->conf.context_NF; |
|
|
|
|
|
|
|
|
|
if (!p->conf.rewrite_NF) return HANDLER_GO_ON; |
|
|
|
|
if (!p->conf.rewrite_NF->used) return HANDLER_GO_ON; |
|
|
|
|
|
|
|
|
|
/* skip if physical.path is a regular file */ |
|
|
|
|
sce = NULL; |
|
|
|
@ -287,23 +286,14 @@ URIHANDLER_FUNC(mod_rewrite_physical) {
|
|
|
|
|
if (S_ISREG(sce->st.st_mode)) return HANDLER_GO_ON; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
switch(r = process_rewrite_rules(srv, con, p, p->conf.rewrite_NF, p->conf.rewrite_NF_repeat_idx)) { |
|
|
|
|
case HANDLER_COMEBACK: |
|
|
|
|
buffer_reset(con->physical.path); |
|
|
|
|
/* fall through */ |
|
|
|
|
default: |
|
|
|
|
return r; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return HANDLER_GO_ON; |
|
|
|
|
return process_rewrite_rules(srv, con, p, p->conf.rewrite_NF, p->conf.rewrite_NF_repeat_idx); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
URIHANDLER_FUNC(mod_rewrite_uri_handler) { |
|
|
|
|
plugin_data *p = p_d; |
|
|
|
|
|
|
|
|
|
mod_rewrite_patch_connection(srv, con, p); |
|
|
|
|
|
|
|
|
|
if (!p->conf.rewrite) return HANDLER_GO_ON; |
|
|
|
|
if (!p->conf.rewrite->used) return HANDLER_GO_ON; |
|
|
|
|
|
|
|
|
|
return process_rewrite_rules(srv, con, p, p->conf.rewrite, p->conf.rewrite_repeat_idx); |
|
|
|
|
} |
|
|
|
|