fix: page load error

This commit is contained in:
engigu
2026-03-04 23:37:03 +08:00
parent e47eb5c662
commit 6a15ab290c
+27 -13
View File
@@ -14,18 +14,18 @@ import (
) )
type Controllers struct { type Controllers struct {
Task *controllers.TaskController Task *controllers.TaskController
Auth *controllers.AuthController Auth *controllers.AuthController
Env *controllers.EnvController Env *controllers.EnvController
Script *controllers.ScriptController Script *controllers.ScriptController
Executor *controllers.ExecutorController Executor *controllers.ExecutorController
File *controllers.FileController File *controllers.FileController
Dashboard *controllers.DashboardController Dashboard *controllers.DashboardController
Log *controllers.LogController Log *controllers.LogController
LogWS *controllers.LogWSController LogWS *controllers.LogWSController
Terminal *controllers.TerminalController Terminal *controllers.TerminalController
Settings *controllers.SettingsController Settings *controllers.SettingsController
Dependency *controllers.DependencyController Dependency *controllers.DependencyController
Agent *controllers.AgentController Agent *controllers.AgentController
Mise *controllers.MiseController Mise *controllers.MiseController
Notification *controllers.NotificationController Notification *controllers.NotificationController
@@ -286,12 +286,26 @@ func Setup(c *Controllers) *gin.Engine {
// SPA 兜底路由 - 返回 index.html(HTML禁用缓存以保证实时同步) // SPA 兜底路由 - 返回 index.html(HTML禁用缓存以保证实时同步)
// 必须在最后注册,作为兜底路由 // 必须在最后注册,作为兜底路由
router.NoRoute(func(ctx *gin.Context) { router.NoRoute(func(ctx *gin.Context) {
path := ctx.Request.URL.Path
// 如果配置了前缀,只处理带前缀的路径 // 如果配置了前缀,只处理带前缀的路径
if urlPrefix != "" && !strings.HasPrefix(ctx.Request.URL.Path, urlPrefix) { if urlPrefix != "" && !strings.HasPrefix(path, urlPrefix) {
ctx.Status(404) ctx.Status(404)
return return
} }
// 解析实际的相对路径
relPath := strings.TrimPrefix(path, urlPrefix)
if !strings.HasPrefix(relPath, "/") {
relPath = "/" + relPath
}
// 拦截属于 API 或静态资源目录下不存在的请求,绝不能返回 index.html 造成前端 MIME 错误
if strings.HasPrefix(relPath, "/api/") || strings.HasPrefix(relPath, "/assets/") {
ctx.String(404, "Not Found")
return
}
data, err := static.ReadFile("index.html") data, err := static.ReadFile("index.html")
if err != nil { if err != nil {
ctx.Status(404) ctx.Status(404)