Rewriting a url with a ? in it not working

Hi All,

I’ve just recently moved over to nginx, so please excuse my stupidity if
this is a really easy one to solve.

I have the following URL:

www.domain.net/content.php?/section/content_title/1

which I am trying to rewrite to:

www.domain.net/content/section/content_title/1

I’m using the following in my nginx config:

rewrite ^/content.php?/(\w*)/(\w*)/(\w*)$ /content/$1/$2/$3 last;

however when I visit the URL to be rewritten the vars $1 $2 $3 are not
being passed to the content script. Interestingly though, if I visit:

www.domain.net/content.php/section/content_title/1 (notice the lack of
?)

It works fine.

Any assistance much appreciated.

Posted at Nginx Forum:

quick regexp attempt -

try escaping the ? - try ?

On Sun, Dec 20, 2009 at 2:41 AM, jimxms [email protected] wrote:

  • rewrite ^/content.php?/(\w*)/(\w*)/(\w*)$ /content/$1/$2/$3 last;
  • rewrite ^/content.php?/(\w*)/(\w*)/(\w*)$ /content/$1/$2/$3 last;

Sorry, I should have said that I tried that already :frowning:

mike Wrote:

/content/$1/$2/$3 last;


nginx mailing list
[email protected]
nginx Info Page

Posted at Nginx Forum:

Hello!

On Sun, Dec 20, 2009 at 05:41:50AM -0500, jimxms wrote:

www.domain.net/content/section/content_title/1

I’m using the following in my nginx config:

rewrite ^/content.php?/(\w*)/(\w*)/(\w*)$ /content/$1/$2/$3 last;

rewrite doesn’t act on query string (aka args), only on path. To
match args you have to use if().

Try something like this:

location = /content.php {
    if ($args ~ "^/(\w*/\w*/\w*)$") {
        set $x $1;
        rewrite ^ /content/$x? last;
    }
    rewrite ^ /content/? last;
}

however when I visit the URL to be rewritten the vars $1 $2 $3 are not being passed to the content script. Interestingly though, if I visit:

www.domain.net/content.php/section/content_title/1 (notice the lack of ?)

It works fine.

This is what you wrote in your regexp, so no surprise here.

Maxim D.

On Sun, Dec 20, 2009 at 5:41 PM, jimxms [email protected] wrote:

www.domain.net/content/section/content_title/1

Any assistance much appreciated.

Posted at Nginx Forum: rewriting a url with a ? in it not working

I believe the arguments are not included in rewrite base string.


O< ascii ribbon campaign - stop html mail - www.asciiribbon.org