Nginx

Nginx Rewrite 將查詢字元串轉換為路徑

  • August 20, 2021

我想要這個簡單的重寫規則:

/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;

引用自:https://serverfault.com/questions/488444