Mercurial > hg > nginx-quic
comparison src/http/modules/ngx_http_rewrite_handler.c @ 326:8733703a37f3
nginx-0.0.3-2004-04-26-00:13:21 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 25 Apr 2004 20:13:21 +0000 |
parents | 7c3323909107 |
children | 6f3b20c1ac50 |
comparison
equal
deleted
inserted
replaced
325:7c3323909107 | 326:8733703a37f3 |
---|---|
24 ngx_uint_t size; | 24 ngx_uint_t size; |
25 | 25 |
26 ngx_str_t re_name; | 26 ngx_str_t re_name; |
27 ngx_str_t s_name; | 27 ngx_str_t s_name; |
28 | 28 |
29 ngx_uint_t status; | |
29 unsigned last:1; | 30 unsigned last:1; |
30 } ngx_http_rewrite_rule_t; | 31 } ngx_http_rewrite_rule_t; |
31 | 32 |
32 | 33 |
33 typedef struct { | 34 typedef struct { |
121 rc = ngx_regex_exec(rule[i].regex, &r->uri, matches, rule[i].msize); | 122 rc = ngx_regex_exec(rule[i].regex, &r->uri, matches, rule[i].msize); |
122 | 123 |
123 if (rc == NGX_DECLINED) { | 124 if (rc == NGX_DECLINED) { |
124 if (scf->log) { | 125 if (scf->log) { |
125 ngx_log_error(NGX_LOG_NOTICE, r->connection->log, 0, | 126 ngx_log_error(NGX_LOG_NOTICE, r->connection->log, 0, |
126 "\"%s\" does not match", rule[i].re_name.data); | 127 "\"%s\" does not match \"%s\"", |
128 rule[i].re_name.data, r->uri.data); | |
127 } | 129 } |
128 | 130 |
129 continue; | 131 continue; |
130 } | 132 } |
131 | 133 |
137 return NGX_HTTP_INTERNAL_SERVER_ERROR; | 139 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
138 } | 140 } |
139 | 141 |
140 if (scf->log) { | 142 if (scf->log) { |
141 ngx_log_error(NGX_LOG_NOTICE, r->connection->log, 0, | 143 ngx_log_error(NGX_LOG_NOTICE, r->connection->log, 0, |
142 "\"%s\" matches", rule[i].re_name.data); | 144 "\"%s\" matches \"%s\"", |
145 rule[i].re_name.data, r->uri.data); | |
146 } | |
147 | |
148 if (rule[i].status) { | |
149 return rule[i].status; | |
143 } | 150 } |
144 | 151 |
145 uri.len = rule[i].size; | 152 uri.len = rule[i].size; |
146 | 153 |
147 for (n = 1; n < (ngx_uint_t) rc; n++) { | 154 for (n = 1; n < (ngx_uint_t) rc; n++) { |
245 ngx_init_array(rule->ops, cf->pool, 5, sizeof(ngx_http_rewrite_op_t), | 252 ngx_init_array(rule->ops, cf->pool, 5, sizeof(ngx_http_rewrite_op_t), |
246 NGX_CONF_ERROR); | 253 NGX_CONF_ERROR); |
247 | 254 |
248 rule->msize = 0; | 255 rule->msize = 0; |
249 rule->size = 0; | 256 rule->size = 0; |
257 rule->status = 0; | |
258 rule->last = 0; | |
250 | 259 |
251 value = cf->args->elts; | 260 value = cf->args->elts; |
252 | 261 |
253 /* STUB */ { | 262 /* STUB */ { |
254 err.len = NGX_MAX_CONF_ERRSTR; | 263 err.len = NGX_MAX_CONF_ERRSTR; |
261 return NGX_CONF_ERROR; | 270 return NGX_CONF_ERROR; |
262 } | 271 } |
263 | 272 |
264 rule->re_name = value[1]; | 273 rule->re_name = value[1]; |
265 rule->s_name = value[2]; | 274 rule->s_name = value[2]; |
275 | |
276 if (ngx_strcasecmp(value[2].data, "forbidden:") == 0) { | |
277 | |
278 if (cf->args->nelts == 3) { | |
279 rule->status = NGX_HTTP_FORBIDDEN; | |
280 rule->last = 1; | |
281 return NGX_CONF_OK; | |
282 } | |
283 | |
284 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
285 "invalid parameter \"%s\"", value[3].data); | |
286 return NGX_CONF_ERROR; | |
287 } | |
266 | 288 |
267 for (i = 0; i < value[2].len; /* void */) { | 289 for (i = 0; i < value[2].len; /* void */) { |
268 | 290 |
269 if (!(op = ngx_push_array(&rule->ops))) { | 291 if (!(op = ngx_push_array(&rule->ops))) { |
270 return NGX_CONF_ERROR; | 292 return NGX_CONF_ERROR; |