Nginx
Nginx Rewrite 將查詢字元串轉換為路徑
我想要這個簡單的重寫規則:
/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;