HTML页面无法加载同根目录静态资源返回404错误求助
问题解决方法
你遇到的静态资源404、style.css内容为空的问题,核心原因不是HTML路径写法错误,而是Go服务端没有配置静态资源路由,所有css、图片等静态文件的请求都被默认页面路由拦截,没有返回正确的文件内容。
解决步骤
1. 调整server.go代码,添加静态资源处理逻辑
在你的服务端代码中新增http.FileServer相关配置,托管项目根目录下的静态文件,参考代码如下:
package main import ( "net/http" ) func main() { // 托管静态资源:匹配style.css、images目录下的所有文件、result.txt的请求 fileServer := http.FileServer(http.Dir(".")) http.Handle("/style.css", fileServer) http.Handle("/images/", fileServer) http.Handle("/result.txt", fileServer) // 保留你原有处理首页渲染的逻辑 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // 过滤非根路径请求,避免误拦截静态资源 if r.URL.Path != "/" { http.NotFound(w, r) return } // 此处替换为你原来渲染form.html的业务逻辑 http.ServeFile(w, r, "form.html") }) // 启动服务,端口可自行调整 _ = http.ListenAndServe(":8080", nil) }
2. 确认路径配置无异常
你当前HTML中的路径写法完全符合你的目录结构,不需要修改:
- css引用
href="style.css"匹配根目录下的style.css文件 - 图片引用
src="images/download-button.jpg"匹配images目录下的对应图片
3. 其他排查点
- 启动服务时,确认终端的工作目录为项目的
folder根目录,不要在上级目录启动服务 - 确认静态文件、images文件夹的读取权限正常,Go进程有权限访问这些资源
- 重启服务后清除浏览器缓存再测试,避免之前的404缓存干扰结果
内容的提问来源于stack exchange,提问作者Hanno Remmelg
相关产品推荐
相关产品推荐

