13

I whould like this simple rewrite rule:

/somefolder/mypage.aspx?myid=4343&tab=overview

to be redirected to:

/folder/4343/overview/

I looked for some solutions and none actually worked..

I tried:

rewrite ^/somefolder/mypage.aspx?myid=(.*)&tab=overview$  /folder/$1/overview  permanent;

and

rewrite ^/somefolder/mypage\.aspx\?myid=(.*)&tab=overview$  /folder/$1/overview  permanent;

What am I doing wrong? I'm getting 404

(simpler rules works just fine..)

Thanks

lulalala
  • 1,567
  • 2
  • 12
  • 12
YardenST
  • 255
  • 2
  • 3
  • 7

2 Answers2

36

A shorter and more correct version of Valery Viktorovsky answer.

location = /somefolder/mypage.aspx {
    if ($arg_tab != overview) { return 404; }
    if ($arg_myid !~ "^\d+$") { return 404; }
    rewrite ^ /folder/$arg_myid/overview? permanent;
}

Or, hey, it can even be shorter, if you don't need to be verifying the arguments:

rewrite ^/somefolder/mypage.aspx /folder/$arg_myid/$arg_tab? permanent;
cnst
  • 12,948
  • 7
  • 51
  • 75
  • 1
    wish you had posted it earlier :) it would've save me some time – YardenST Mar 16 '13 at 19:15
  • lol. did you have a lot of rules like that? well, better late than never! also, can i get an accept, then? :) – cnst Mar 16 '13 at 19:30
  • Valery solution works bottom line :) and there could be only one answer :) – YardenST Mar 16 '13 at 19:34
  • 9
    http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work « *Make sure that besides working for you, the answer is really good practice. Sometimes after the answer gets accepted, another comes in, uncovering the fact that previous one was in fact a bad hack.* » Seriously, there are not just one, but a several different problems with Valery's answer! Every line is essentially wrong, other than the curly braces! – cnst Mar 16 '13 at 20:51
12

If you want redirect

location ~ /somefolder/mypage.aspx {
    if ($args ~* "^myid=(\d+)&tab=overview") {
        set $mid $1;
        set $args '';
        rewrite ^.*$ /folder/$mid/overview permanent;
    }
}

Don't forget to configure /folder/$1/overview location.