Nginx
Nginx 刪除 URL 中的重複參數
我有一個網站的問題會導致煩人的 URL 問題。在頁面上找到的頁碼上,如果您關注它會訪問的頁碼,
?page=2
這很好。如果您隨後點擊任何後續連結,而不是替換
?page=2
,它將附加一個新連結。例如:?page=2&page=3
。由於各種原因,我需?page=3
要這樣做並從一開始就刪除外部參數。遺憾的是,目前無法在程式碼中解決這個問題,我想知道是否有人通過 NGINX 重寫做過類似的事情。
您無法使用 修復此問題,
rewrite
因為它僅對查詢字元串之前的 URI 部分進行操作。查詢字元串包含在
$request_uri
and$args
變數中,可以使用帶有if
和/或map
指令的正則表達式來操作。要處理您的具體案例,您可以使用:
if ($request_uri ~ ^(.*)[?]page=2&page=(.*)$) { return 301 $1?page=$2; }
有關使用的範例
map
,請參閱此答案:Nginx - Redirect based on query string parameters