You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何有效更新APISIX路由规则?修改URI后404问题排查

问题原因分析
  • 旧URI返回{"error_msg":"404 Route Not Found"}:你的PATCH请求已经成功修改了路由ID为1的uri字段,原有的旧URI对应的路由规则已不存在,APISIX找不到匹配的路由,因此返回自身的JSON格式404错误。
  • 新URI返回HTML格式404:APISIX已经匹配到修改后的/anythingg/*路由,但该路由指向的上游服务(比如教程中的httpbin)不存在/anythingg/*这个路径,所以是上游服务返回了HTML格式的404页面,而非APISIX本身的错误。
正确更新路由的解决方法
  1. 验证路由修改是否生效
    先执行查询命令确认路由配置:
curl "http://127.0.0.1:9080/apisix/admin/routes/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1"

返回结果中如果uri字段确实是/anythingg/*,说明修改成功。

  1. 让新URI正常工作的两种方案
  • 方案一:修正URI为上游服务支持的路径
    如果是误多打了一个g,直接改回原正确URI即可:
curl "http://127.0.0.1:9080/apisix/admin/routes/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PATCH -d '
{
  "uri": "/anything/*"
}'
  • 方案二:配置路径重写适配上游
    如果确实需要使用/anythingg/*作为访问路径,可通过APISIX的proxy-rewrite插件将请求路径重写到上游支持的/anything/*:
curl "http://127.0.0.1:9080/apisix/admin/routes/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PATCH -d '
{
  "uri": "/anythingg/*",
  "plugins": {
    "proxy-rewrite": {
      "regex_uri": ["^/anythingg/(.*)", "/anything/$1"]
    }
  }
}'
  1. 确认路由上游配置完整性
    检查路由的upstream配置是否存在且正确,PATCH操作只会修改指定字段,若之前的上游配置未丢失,只需处理路径匹配问题即可。

内容的提问来源于stack exchange,提问作者Charalamm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:05:25