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


#1

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?

Regards

Ian


#2

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

           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;
}


#3

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

           fastcgi_param SCRIPT_FILENAME /var/www/builder/parser.php;

Is there a better way of adding a constant after a parameter?
I did not read thoughtfully, you may use

  • fastcgi_param QUERY_STRING f=$request_uri/index.htm;
  • fastcgi_param QUERY_STRING f=${request_uri}index.htm;

However, $request_uri is not good choice for this as it may have query
string:

 /dir/?one=1&two2