try_files and GET variables
Igor Sysoev
is at rambler-co.ru
Mon Mar 30 18:17:14 MSD 2009
On Mon, Mar 30, 2009 at 04:47:21PM +0300, Reinis Rozitis wrote:
> Hello,
> tried to replace the webserver config to use try_files instead of rewrites
> (on 0.7.46), it kinda works but I get some garbage in QUERY_STRING on the
> php fastcgi backend - so php doesnt see any GET variable.
>
>
> The config is simple:
>
> location /tmp {
> try_files $uri /index.php;
> }
>
>
> When I open http://myserver/tmp/?var=1 and dump the $_SERVER variables
> 'REQUEST_URI' is correct - '/tmp/?var=1' but QUERY_STRING gets something
> like 'H??H=???' (non-printable chars)
>
>
>
>
> If I change the nginx config to named location everything works as expected
> (all the GET variables are passed and QUERY_STRING is correct):
>
> location /tmp {
> try_files $uri @tmp;
> }
>
> location @tmp{
> fastcgi_pass 127.0.0.1:1026;
> fastcgi_index index.php;
> include fastcgi_params;
> fastcgi_param SCRIPT_FILENAME $document_root/index.php;
> }
>
>
> Where is the catch?
The attached patch fixes the bug.
--
Igor Sysoev
http://sysoev.ru/en/
-------------- next part --------------
Index: src/http/ngx_http_parse.c
===================================================================
--- src/http/ngx_http_parse.c (revision 1944)
+++ src/http/ngx_http_parse.c (revision 1945)
@@ -1534,6 +1534,8 @@
last = p + uri->len;
+ args->len = 0;
+
while (p < last) {
ch = *p++;
More information about the nginx
mailing list