From 319dc27e8adf7bcd2ad9cd5705356baf6a09fd60 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Wed, 21 Jan 2009 12:11:22 +0000 Subject: [PATCH] allow directories in try_files --- src/http/ngx_http_core_module.c | 10 +++++++++- src/http/ngx_http_core_module.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c index d44933ca3..c22e71776 100644 --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -1038,6 +1038,7 @@ ngx_http_core_try_files_phase(ngx_http_request_t *r, ssize_t reserve, allocated; u_char *p, *name; ngx_str_t path; + ngx_uint_t test_dir; ngx_http_try_file_t *tf; ngx_open_file_info_t of; ngx_http_script_code_pt code; @@ -1133,6 +1134,8 @@ ngx_http_core_try_files_phase(ngx_http_request_t *r, } } + test_dir = tf->test_dir; + tf++; ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, @@ -1172,7 +1175,7 @@ ngx_http_core_try_files_phase(ngx_http_request_t *r, continue; } - if (!of.is_file) { + if (of.is_dir && !test_dir) { continue; } @@ -3853,6 +3856,11 @@ ngx_http_core_try_files(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) tf[i].name = value[i + 1]; + if (tf[i].name.data[tf[i].name.len - 1] == '/') { + tf[i].test_dir = 1; + tf[i].name.len--; + } + n = ngx_http_script_variables_count(&tf[i].name); if (n) { diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h index 5be856123..46acb2b4f 100644 --- a/src/http/ngx_http_core_module.h +++ b/src/http/ngx_http_core_module.h @@ -245,6 +245,7 @@ typedef struct { ngx_array_t *lengths; ngx_array_t *values; ngx_str_t name; + ngx_uint_t test_dir; /* unsigned test_dir:1; */ } ngx_http_try_file_t;