]> git.kaiwu.me - nginx.git/commitdiff
fix alias with variables, but without captures,
authorIgor Sysoev <igor@sysoev.ru>
Thu, 26 Mar 2009 15:24:19 +0000 (15:24 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Thu, 26 Mar 2009 15:24:19 +0000 (15:24 +0000)
the bug had been introduced in r2566 and r2573

src/http/ngx_http_core_module.c

index 2e455b1e4b9fb09c23b0d15fad8928bea4ce7e64..ffdd0b044cd4f5be83c75f48692f13571824cf91 100644 (file)
@@ -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);