allow directories in try_files

This commit is contained in:
Igor Sysoev 2009-01-21 12:11:22 +00:00
parent cd55a93cce
commit 319dc27e8a
2 changed files with 10 additions and 1 deletions

View File

@ -1038,6 +1038,7 @@ ngx_http_core_try_files_phase(ngx_http_request_t *r,
ssize_t reserve, allocated; ssize_t reserve, allocated;
u_char *p, *name; u_char *p, *name;
ngx_str_t path; ngx_str_t path;
ngx_uint_t test_dir;
ngx_http_try_file_t *tf; ngx_http_try_file_t *tf;
ngx_open_file_info_t of; ngx_open_file_info_t of;
ngx_http_script_code_pt code; 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++; tf++;
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 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; continue;
} }
if (!of.is_file) { if (of.is_dir && !test_dir) {
continue; 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]; 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); n = ngx_http_script_variables_count(&tf[i].name);
if (n) { if (n) {

View File

@ -245,6 +245,7 @@ typedef struct {
ngx_array_t *lengths; ngx_array_t *lengths;
ngx_array_t *values; ngx_array_t *values;
ngx_str_t name; ngx_str_t name;
ngx_uint_t test_dir; /* unsigned test_dir:1; */
} ngx_http_try_file_t; } ngx_http_try_file_t;