因此,我尝试使CSS
在我的Go
服务器上工作,但是css文件未正确加载,我得到了404 file not found
。当我直接从浏览器运行Index.html
时,效果很好。
我的目录结构,其中#
代表一个文件夹,-
一个文件:
- Main.go
# static
- index.html
# css
- Styles.css
Index.html
包含:
<link rel="stylesheet" type="text/css" href="css/Styles.css"/>
这些是我所有的处理程序:
muxRouter := mux.NewRouter()
muxRouter.HandleFunc("/", basicHandler)
muxRouter.HandleFunc("/ws", wsHandler)
muxRouter.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("static/css"))))
basicHandler包含:
toSend := template.HTMLEscapeString(outputMessage)
toSend = strings.Replace(toSend, "\n", "<br>", -1)
templateError := allTemplates.ExecuteTemplate(responseWriter, "index.html", template.HTML(toSend))
if templateError != nil {
log.Fatal("Template error: ", templateError)
}
wsHandler 处理我的程序使用的websocket。
答案 0 :(得分:1)
我建议像这样移动文件(请注意,我将index.html
重命名为小写-因此在访问文档根URL时默认会加载它):
Main.go
static/
static/index.html
static/css/Styles.css
修改index.html
以引用更恰当命名的css
目录:
<link rel="stylesheet" type="text/css" href="css/Styles.css"/>
编辑:更新以适应大猩猩/多路复用器。
对此answer的H / T。
package main
import (
"github.com/gorilla/mux"
"log"
"net/http"
)
func main() {
r := mux.NewRouter()
r.PathPrefix("/css/").Handler(
http.StripPrefix("/css/", http.FileServer(http.Dir("static/css/"))),
)
err := http.ListenAndServe(":8080", r)
if err != nil {
log.Fatal(err)
}
// curl 'localhost:8080/css/Styles.css'
// <style> ... </style>
}