Nginx重写将查询string转换为path

我喜欢这个简单的重写规则:

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

被redirect到:

 /folder/4343/overview/ 

我寻找一些解决scheme,没有一个真正的工作..

我试过了:

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

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

我究竟做错了什么? 我得到404

(更简单的规则工作得很好..)

谢谢

    如果你想redirect

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

    不要忘记configuration/文件夹/ $ 1 /总览位置。

    瓦列里Viktorovsky答案更短,更正确的版本。

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

    或者,嘿,如果你不需要validation这些论据,它甚至可以缩短:

     rewrite ^/somefolder/mypage.aspx /folder/$arg_myid/$arg_tab? permanent;