try_files internal redirect stripping QUERY_STRING?

Jeff Waugh jdub at
Fri Nov 13 06:28:48 MSK 2009

Hi all,

Using a fairly bog-standard try_files -> php/fastcgi config here with nginx
0.8.22. Looks very much like this:

  index  index.php;

  location / {
    try_files  $uri $uri/  /index.php;

  location ~ \.php$ {
    include  fastcgi_params;
    fastcgi_pass  fcgi_php; # defined in an upstream
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

With the QUERY_STRING = 'test=test'.

With the QUERY_STRING = '', while the
REQUEST_URI is correct (ie. also contains the query string).

Looking at the debug log, I noticed that at one point, nginx seems to be
doing an internal redirect to "/index.php?" -> if that question mark means
the same thing as it does in a configured rewrite, try_files is stripping
the query string!

I suspect that /?test=test is working because $uri/ is tested with the
index, thus becoming /index.php?test=test.


- Jeff

-- 2010: Wellington, NZ      
   "Do you know what [television news ownership] means to me? It gives me
                the political muscle I need." - Kerry Packer

More information about the nginx mailing list