package main import ( "net/http" "os" ) type fallbackFileSystem struct { http.FileSystem fallback string } func (fs *fallbackFileSystem) Open(name string) (http.File, error) { f, err := fs.FileSystem.Open(name) if os.IsNotExist(err) { return fs.FileSystem.Open(fs.fallback) } return f, err } func assetsHandler() http.Handler { assetsFileSystem := assetsFS() return http.FileServer( &fallbackFileSystem{ FileSystem: http.FS(assetsFileSystem), fallback: "index.html", }) }