Nginx

Nginx 刪除 URL 中的重複參數

  • August 28, 2019

我有一個網站的問題會導致煩人的 URL 問題。在頁面上找到的頁碼上,如果您關注它會訪問的頁碼,?page=2這很好。

如果您隨後點擊任何後續連結,而不是替換?page=2,它將附加一個新連結。例如:?page=2&page=3。由於各種原因,我需?page=3要這樣做並從一開始就刪除外部參數。

遺憾的是,目前無法在程式碼中解決這個問題,我想知道是否有人通過 NGINX 重寫做過類似的事情。

您無法使用 修復此問題,rewrite因為它僅對查詢字元串之前的 URI 部分進行操作。

查詢字元串包含在$request_uriand$args變數中,可以使用帶有if和/或map指令的正則表達式來操作。

要處理您的具體案例,您可以使用:

if ($request_uri ~ ^(.*)[?]page=2&page=(.*)$) { return 301 $1?page=$2; }

有關使用的範例map,請參閱此答案:Nginx - Redirect based on query string parameters

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