我在Google App Engine上使用了第三方路由器(httprouter),并且希望从根目录提供静态文件。
由于使用了App Engine,我需要将第三方路由器附加到DefaultServeMuxon /:
DefaultServeMux
/
router := httprouter.New() // Doesn't work, duplicated "/". http.Handle("/", http.FileServer(http.Dir("public"))) // Needed because of App Engine. http.Handle("/", router)
问题是,这会重复/模式和出现“ /多个注册 ”的紧急情况
如何提供文件( 尤其是index.html从根目录访问文件)并使用第三方路由器?
index.html
如果您在提供静态文件,/则无法按照https://github.com/julienschmidt/httprouter/issues/7#issuecomment-45725482提供其他路径
您不能在用于服务文件的根目录中注册“全部捕获”,而还要在子路径中注册其他处理程序。另请参见https://github.com/julienschmidt/httprouter#named- parameters中的注释
您应该使用Go在应用程序根目录下提供模板,并在子路径下提供静态文件(CSS,JS等):
router := httprouter.New() router.GET("/", IndexHandler) // Ripped straight from the httprouter docs router.ServeFiles("/static/*filepath", http.Dir("/srv/www/public/")) http.Handle("/", router)