我似乎无法正确路由。我正在使用 Gorilla Mux 并且我正在尝试从任何 url 提供我的 angular 应用程序,所以基本上是我的 index.html,除了它们以“/foo”开头。
这个有效:
func StaticFileServer(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, config.dir)
}
func main() {
fs := http.Dir(config.dir)
fileHandler := http.FileServer(fs)
router = mux.NewRouter()
router.Handle("/foo/page", PublicHandler(handler(getAll)).Methods("GET")
router.Handle("/foo/page/{id}", PublicHandler(handler(getOne)).Methods("GET")
router.PathPrefix("/{blaah}/{blaah}/").Handler(fileHandler)
router.PathPrefix("/").HandlerFunc(StaticFileServer)
...
}
但是必须有一种更简单的方法,而不是显式声明每条可能的路线,比如这个 PathPrefix("/{blaah}/{blaah}/") thingy... 有了这个,除 /{blaah}/{blaah 之外的任何其他 url }/ 返回未找到的 404 页面,而不是 index.html。
因此,只要可以找到所有内容(静态文件等),我都希望得到服务,但其他所有内容都应返回/public/index.html。