nginx – select性重写一个位置块

假设一个位置块需要处理类似的URL

  • / test_api / group_1 / version(几个URL属于这个组,例如,/ test_api / aaa / version,/ test_api / bbb / version)
  • / test_api / group_2 / revision(其他几个URL属于这个组,例如,/ test_api / yyy / revision,/ test_api / zzz / revision)

如何在将“/ test_api / group_2 / revision”传递给位置块中的默认服务器时select性地重写“/ test_api / group_1 / version”? 如果这是不可能的,还有其他的方法来实现相同的目标。 以下是我目前的不歧视位置块。

location /test_api { types { application/json json; } root /usr/local/www/data; rewrite "/test_api/([^/]+)/version(.*)/?$" /api_response/test_api_$1.json break; } 

当你让两个地点像

 location /test_api/group_1/version { ... } location /test_api { ... } 

最长的一个将永远匹配,所以你的group_2将不符合第一条规则