From 1e5ef6b0f4c6c2b962168f92c7c853006d7a2132 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Thu, 26 Mar 2009 15:24:19 +0000 Subject: fix alias with variables, but without captures, the bug had been introduced in r2566 and r2573 --- src/http/ngx_http_core_module.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c index 2e455b1e4..ffdd0b044 100644 --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -1695,7 +1695,15 @@ ngx_http_map_uri_to_path(ngx_http_request_t *r, ngx_str_t *path, last = ngx_copy(path->data, clcf->root.data, clcf->root.len); } else { - reserved += alias ? 1 : r->uri.len + 1; + +#if (NGX_PCRE) + ngx_uint_t captures; + + captures = alias && clcf->captures; + reserved += captures ? 1 : r->uri.len - alias + 1; +#else + reserved += r->uri.len - alias + 1; +#endif if (ngx_http_script_run(r, path, clcf->root_lengths->elts, reserved, clcf->root_values->elts) @@ -1711,10 +1719,12 @@ ngx_http_map_uri_to_path(ngx_http_request_t *r, ngx_str_t *path, *root_length = path->len - reserved; last = path->data + *root_length; - if (alias) { +#if (NGX_PCRE) + if (captures) { *last = '\0'; return last; } +#endif } last = ngx_cpystrn(last, r->uri.data + alias, r->uri.len - alias + 1); -- cgit