diff options
author | Igor Sysoev <igor@sysoev.ru> | 2009-01-21 12:11:22 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2009-01-21 12:11:22 +0000 |
commit | 319dc27e8adf7bcd2ad9cd5705356baf6a09fd60 (patch) | |
tree | a3c16777a366e6ba6cecbe6c0bcf8c3eac836ca7 /src | |
parent | cd55a93cce4204a1b4ea5b16391d5ce8380f5997 (diff) | |
download | nginx-319dc27e8adf7bcd2ad9cd5705356baf6a09fd60.tar.gz nginx-319dc27e8adf7bcd2ad9cd5705356baf6a09fd60.zip |
allow directories in try_files
Diffstat (limited to 'src')
-rw-r--r-- | src/http/ngx_http_core_module.c | 10 | ||||
-rw-r--r-- | src/http/ngx_http_core_module.h | 1 |
2 files changed, 10 insertions, 1 deletions
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; |