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

Golang使用通配符路由发送GET请求时出现404错误排查

问题原因及解决办法

你的问题出在标准库http.ServeMux不支持{$}这种结尾匹配语法,该语法是gorilla/mux这类第三方路由库的特性,和标准库的路由匹配规则不兼容。

标准库ServeMux的核心匹配逻辑:

  • 注册"GET /"时,默认会匹配根路径及所有以/开头的子路径(因为ServeMux会自动忽略路径末尾的斜杠,子路径会继承父路由的处理函数,除非有更精确的路由匹配)。
  • 若要实现严格匹配根路径(仅响应GET /,拒绝GET /xxx这类子路径请求),标准库的正确写法是在处理函数内判断请求路径是否严格等于/,修改后的代码如下:
package main

import ( 
    "log"
    "net/http"
)
func home(w http.ResponseWriter, r *http.Request) {
    // 严格校验请求路径,非根路径直接返回404
    if r.URL.Path != "/" {
        http.NotFound(w, r)
        return
    }
    w.Write([]byte("Hello from Snippetbox"))
}
func main() {
    mux := http.NewServeMux()
    // 移除{$},使用标准库支持的路由格式
    mux.HandleFunc("GET /", home)

    log.Print("starting server on :4000")
    err := http.ListenAndServe(":4000", mux)
    log.Fatal(err) 
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:33:14