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

Go FileServer配置异常:首个Handler正常,/d路径无法访问JSON文件

问题原因与解决方案

核心问题

你配置的第二个Handler无法匹配/d/user.json请求,根源在于Go标准库http.Handle的路径匹配规则:

  • 当注册路径为"/d"时,仅会匹配完全等于"/d"的请求,"/d/user.json"这类带后缀的请求会被第一个注册的"/"Handler捕获,自然找不到ui/data/user.json文件。
  • 同时StripPrefix的参数也需要对应调整,否则即使请求匹配成功,路径处理也会出错。

修正后的代码

func main() {
  // 原Handler保持不变,可正常访问/data.json
  http.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir("ui/web"))))

  // 修改注册路径为"/d/",同步调整StripPrefix参数为"/d/"
  http.Handle("/d/", http.StripPrefix("/d/", http.FileServer(http.Dir("ui/data"))))

  log.Fatal(http.ListenAndServe("localhost:8080", nil))
}

原理说明

  1. 注册路径改为"/d/"后,所有以"/d/"开头的请求(比如"/d/user.json")都会被该Handler接管。
  2. StripPrefix("/d/")会移除请求路径中的"/d/"前缀,剩下的"/user.json"会直接映射到ui/data/user.json文件,逻辑和第一个正常工作的Handler完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:25:19