2 回答
TA贡献1862条经验 获得超6个赞
我有点晚了,但其他人可能会发现我的回答很有用。
基本上 Gorilla Mux 在这里完成你所有的路由。我假设您希望 AngularJS 为任何不以“/foo”开头的 URL 进行路由。
您可以使用正则表达式将任何不以“/foo”开头的请求发送到您的 index.html 使用:
router.PathPrefix("/{_:.*}").HandlerFunc(StaticFileServer)
TA贡献1934条经验 获得超2个赞
我似乎无法让我的路由正确。我正在使用 Gorilla Mux 并且我正在尝试为我的 angular 应用程序提供服务,所以基本上是我的 index.html,来自任何 url,除了它们以“/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}/") 东西......有了这个,任何其他 url 比 /{blaah}/{blaah }/ 返回未找到的 404 页面,而不是 index.html。
所以我想得到所有的东西(静态文件等),只要它们能被找到,但其他的一切都应该返回/public/index.html。
- 2 回答
- 0 关注
- 196 浏览
添加回答
举报