diff options
author | Maxim Dounin <mdounin@mdounin.ru> | 2019-07-12 15:39:28 +0300 |
---|---|---|
committer | Maxim Dounin <mdounin@mdounin.ru> | 2019-07-12 15:39:28 +0300 |
commit | 29fea7d9ec7b18d9f3c2e77bddd873dafbd10842 (patch) | |
tree | 2277f936a0e649e02be28e5a0be8fcba7aeadd17 | |
parent | 8df08b02b89c151e4bf04bc3c7c9a37e9ebcba9d (diff) | |
download | nginx-29fea7d9ec7b18d9f3c2e77bddd873dafbd10842.tar.gz nginx-29fea7d9ec7b18d9f3c2e77bddd873dafbd10842.zip |
Perl: named locations in $r->internal_redirect().
-rw-r--r-- | src/http/modules/perl/ngx_http_perl_module.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/http/modules/perl/ngx_http_perl_module.c b/src/http/modules/perl/ngx_http_perl_module.c index a123e3875..f3fc62947 100644 --- a/src/http/modules/perl/ngx_http_perl_module.c +++ b/src/http/modules/perl/ngx_http_perl_module.c @@ -257,15 +257,21 @@ ngx_http_perl_handle_request(ngx_http_request_t *r) } if (uri.len) { - ngx_str_null(&args); - flags = NGX_HTTP_LOG_UNSAFE; + if (uri.data[0] == '@') { + ngx_http_named_location(r, &uri); - if (ngx_http_parse_unsafe_uri(r, &uri, &args, &flags) != NGX_OK) { - ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); - return; + } else { + ngx_str_null(&args); + flags = NGX_HTTP_LOG_UNSAFE; + + if (ngx_http_parse_unsafe_uri(r, &uri, &args, &flags) != NGX_OK) { + ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); + return; + } + + ngx_http_internal_redirect(r, &uri, &args); } - ngx_http_internal_redirect(r, &uri, &args); ngx_http_finalize_request(r, NGX_DONE); return; } |