我喜欢这个简单的重写规则:
/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;