args support in static error_page

This commit is contained in:
Igor Sysoev 2008-04-29 10:06:43 +00:00
parent 49db9d4602
commit 615fe7f4be
3 changed files with 19 additions and 3 deletions

View File

@ -3471,6 +3471,7 @@ ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
ngx_http_core_loc_conf_t *lcf = conf;
u_char *args;
ngx_int_t overwrite;
ngx_str_t *value, uri;
ngx_uint_t i, n, nvar;
@ -3539,6 +3540,8 @@ ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
}
}
args = (u_char *) ngx_strchr(uri.data, '?');
for (i = 1; i < cf->args->nelts - n; i++) {
err = ngx_array_push(lcf->error_pages);
if (err == NULL) {
@ -3577,7 +3580,19 @@ ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
}
}
err->uri = uri;
if (args) {
err->uri.len = args - uri.data;
err->uri.data = uri.data;
args++;
err->args.len = (uri.data + uri.len) - args;
err->args.data = args;
} else {
err->uri = uri;
err->args.len = 0;
err->args.data = NULL;
}
err->uri_lengths = uri_lengths;
err->uri_values = uri_values;
}

View File

@ -225,6 +225,7 @@ typedef struct {
ngx_int_t status;
ngx_int_t overwrite;
ngx_str_t uri;
ngx_str_t args;
ngx_array_t *uri_lengths;
ngx_array_t *uri_values;
} ngx_http_err_page_t;

View File

@ -441,8 +441,6 @@ ngx_http_send_error_page(ngx_http_request_t *r, ngx_http_err_page_t *err_page)
r->zero_in_uri = 0;
args = NULL;
if (err_page->uri_lengths) {
if (ngx_http_script_run(r, &u, err_page->uri_lengths->elts, 0,
err_page->uri_values->elts)
@ -453,6 +451,7 @@ ngx_http_send_error_page(ngx_http_request_t *r, ngx_http_err_page_t *err_page)
p = u.data;
uri = &u;
args = NULL;
if (*p == '/') {
@ -488,6 +487,7 @@ ngx_http_send_error_page(ngx_http_request_t *r, ngx_http_err_page_t *err_page)
} else {
uri = &err_page->uri;
args = &err_page->args;
}
if (uri->data[0] == '/') {