The two slashes issue - or how to append a constant to a parameter.

Igor Sysoev is at rambler-co.ru
Fri Feb 6 15:22:44 MSK 2009


On Fri, Feb 06, 2009 at 11:42:13AM +0000, Ian Hobson wrote:

> Hi
> 
> I have a situation that I have had to fix using set...
> 
>        # handle directory names by adding /index.htm
>        location ~ ^(.*)/$ {
>                # matches directories
>                set $path index.htm;
>                fastcgi_param QUERY_STRING f=$request_uri$path;
>                fastcgi_param DOCUMENT_ROOT $document_root;
>                fastcgi_param SCRIPT_FILENAME /var/www/builder/parser.php;
>                fastcgi_pass 127.0.0.1:9000;
>        }
> 
> The issue was that with 
> 
> fastcgi_param QUERY_STRING f=$request_uri/index.htm;
> 
> I was getting two slashes - one added by nginx and one on the line 
> above, even if the entered URI contained none.

> Is there a better way of adding a constant after a parameter?

Yes:

        location ~ ^(.*)/$ {
                # matches directories
-               set $path index.htm;
+               fastcgi_index index.htm;
-               fastcgi_param QUERY_STRING f=$request_uri$path;
+               fastcgi_param QUERY_STRING f=$fastcgi_script_name$is_args$args;
                fastcgi_param DOCUMENT_ROOT $document_root;
                fastcgi_param SCRIPT_FILENAME /var/www/builder/parser.php;
                fastcgi_pass 127.0.0.1:9000;
        }


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list