重定向在 Nginx 中刪除 3 個 URL 段後的後綴

重定向在 Nginx 中刪除 3 個 URL 段後的後綴

這是我需要刪除最後一段的 URL(?order=asc)

https://www.example.com/segment_1/segment_2/page/the_number_goes_here/?order?asc

這是我正在嘗試的程式碼:

location ~ ^/([^/]+)/([^/]+)/page/(\d+)/ {
    try_files $uri $uri/ /index.php?$args;
    # Capture the 2 segments and page number
    set $segment_1 $1;
    set $segment_2 $2;
    set $page_number $4;
    # Redirect without the sufix
    rewrite ^ /$segment_1/$segment_2/page/$page_number/ permanent;
}

答案1

locationrewrite處理規範化的URI其中不包括查詢字串(您稱之為“最後一段”)。

查詢字串在變數中可用$args

rewrite指示?可以選擇將 a 附加到替換值的末尾來刪除原始查詢字串。

例如:

rewrite ^ /$segment_1/$segment_2/page/$page_number/? permanent;

另外,在您的範例程式碼中:

  • 頁碼被捕捉$3而不是$4
  • try_files語句可能是多餘的,因為 Nginx 總是先評估setrewrite指示。

首先被評估

相關內容