fix: page load error
This commit is contained in:
+27
-13
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user