не срабатывает if в SSI
Igor Sysoev
is at rambler-co.ru
Sun Oct 30 13:34:02 MSK 2005
On Sun, 30 Oct 2005, Vladimir Tananko wrote:
> При обработке следующей конструкции nginx 0.3.5 (FreeBSD i386 5.4)
>
> --- cut here ---
> <html><body>
> <!--#if expr="\"$QUERY_STRING\"=\"\"" -->
> <!--#include virtual="file1.inc"-->
> <!--#else -->
> <!--#include virtual="file2.inc"-->
> <!--#endif -->
> </body></html>
> --- cut here ---
>
> на выходе получаем
>
> --- cut here ---
> [an error occurred while processing the directive]
> FILE1
> --- cut here ---
>
> file1.inc содержит строку "FILE1"
>
> В апаче данное условие обрабатывается нормально.
Патч.
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
--- src/http/modules/ngx_http_ssi_filter_module.c Sat Oct 22 20:39:31 2005
+++ src/http/modules/ngx_http_ssi_filter_module.c Sun Oct 30 14:31:48 2005
@@ -1200,10 +1202,12 @@
}
if (ch == '"' && state == ssi_double_quoted_value_state) {
+ ctx->param->value.data[ctx->param->value.len - 1] = ch;
break;
}
if (ch == '\'' && state == ssi_quoted_value_state) {
+ ctx->param->value.data[ctx->param->value.len - 1] = ch;
break;
}
@@ -1817,7 +1821,8 @@
if ((*p >= 'a' && *p <= 'z')
|| (*p >= '0' && *p <= '9')
- || *p == '$' || *p == '{' || *p == '}' || *p == '_')
+ || *p == '$' || *p == '{' || *p == '}' || *p == '_'
+ || *p == '"' || *p == '\'')
{
continue;
}
More information about the nginx-ru
mailing list