小编Ale*_*ard的帖子

我需要使用 arg 键重写 nginx 匹配位置

我将一个 URL 用于不同的目的:

  1. /path/items :返回项目列表
  2. /path/items?id=XXX :重定向到 URL /path/items/item?id=XXX

编辑:添加了基于 Tero 输入的解决方案

我在我的 nginx conf 文件中尝试过该规则:

location ~ / {
    rewrite '^/path/items\?id=([0-9]*)$' /items/item?id=$1? break;
}
Run Code Online (Sandbox Code Playgroud)

当我访问页面 /path/items?id=XXX 时,我得到以下日志:

2016/08/25 14:08:53 [通知] 22903#0: 1 "^/path/items\?id=([0-9] )$" 与 "/path/items" 不匹配,客户端:XXX ,服务器:local.xxx.ins,请求:“GET /path/items?id=32442305 HTTP/1.1”,主机:“local.xxx.ins”

我从该日志中了解到 nginx 在进行匹配之前删除了 args。但我不知道如何获得包括 args 在内的匹配项。

我想出了一个非常接近 Tero 的解决方案。

location ~ /(path1|path2|path3) {
    if ($arg_id) {
        rewrite ^ $uri/item break;
     }
     proxy_pass http://local.xxx.ins:8080;
}
Run Code Online (Sandbox Code Playgroud)

nginx

0
推荐指数
1
解决办法
5501
查看次数

标签 统计

nginx ×1