Nginx

停止 Nginx 重寫破壞位置塊之後的所有頁面

  • March 30, 2022

我不得不重寫 nginx.conf 中包含特定查詢參數的 URL;

舉個例子:-

location /brands/exampleA {

   if ($arg_cat = "9") {
       return 301 /page/brand-filter;
   }

   if ($arg_cat = "38") {
       return 301 /page/category/brand-filter;
   }

}

然後,這些 URL 重寫將重寫example.com/brands/exampleA/?cat=9example.com/page/brand-filter和。example.com/brands/exampleA/?cat=38``example.com/page/category/brand-filter

這些工作完美,但問題是它們破壞了位置塊的所有其他子頁面,例如,以下頁面都不會載入 Nginx 錯誤:-

example.com/brands/exampleA/range1
example.com/brands/exampleA/range2
example.com/brands/exampleA/range3
example.com/brands/exampleA/range4

那麼有什麼我可以添加到 location 語句中以停止任何應用於之後的任何內容exampleA- 這些重寫應該只匹配 ?cat= 查詢參數。

您的配置目前使用前綴位置,這意味著當請求的 URI值開頭時會考慮它/brands/exampleA

要將匹配限制為僅一個 URI,請使用完全匹配語法:

location = /brands/exampleA/ { ... }

有關詳細資訊,請參閱此文件

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