私はこの簡単な書き換えルールを望んでいます:
/somefolder/mypage.aspx?myid=4343&tab=overview
リダイレクトされる:
/folder/4343/overview/
私はいくつかの解決策を探しましたが、実際にはうまくいきませんでした。
私は試した:
rewrite ^/somefolder/mypage.aspx?myid=(.*)&tab=overview$ /folder/$1/overview permanent;
そして
rewrite ^/somefolder/mypage\.aspx\?myid=(.*)&tab=overview$ /folder/$1/overview permanent;
何が悪いのですか? 404になりました
(単純なルールはうまく機能します。)
ありがとう
リダイレクトしたい場合
location ~ /somefolder/mypage.aspx {
if ($args ~* "^myid=(\d+)&tab=overview") {
set $mid $1;
set $args '';
rewrite ^.*$ /folder/$mid/overview permanent;
}
}
/ folder/$ 1/overviewの場所を設定することを忘れないでください。
Valery Viktorovskyの回答のより短くより正確なバージョン。
location = /somefolder/mypage.aspx {
if ($arg_tab != overview) { return 404; }
if ($arg_myid !~ "^\d+$") { return 404; }
rewrite ^ /folder/$arg_myid/overview? permanent;
}
または、引数を検証する必要がない場合は、さらに短くすることもできます。
rewrite ^/somefolder/mypage.aspx /folder/$arg_myid/$arg_tab? permanent;