diff --git a/core/router/api_builder.go b/core/router/api_builder.go index b789bb3b2..d9c244e2f 100644 --- a/core/router/api_builder.go +++ b/core/router/api_builder.go @@ -488,7 +488,11 @@ func (api *APIBuilder) HandleDir(requestPath, directory string, opts ...DirOptio continue } - requestPath := s.RequestPath[strings.Index(s.RequestPath, api.relativePath)+len(api.relativePath):] + slashIdx := strings.IndexByte(s.RequestPath, '/') + if slashIdx == -1 { + slashIdx = 0 + } + requestPath = s.RequestPath[slashIdx:] routes = append(routes, api.createRoutes([]string{http.MethodGet}, requestPath, h)...) getRoute.StaticSites = append(getRoute.StaticSites, s) } diff --git a/core/router/path.go b/core/router/path.go index 61d7e0650..6d9b687a8 100644 --- a/core/router/path.go +++ b/core/router/path.go @@ -233,7 +233,7 @@ func splitSubdomainAndPath(fullUnparsedPath string) (subdomain string, path stri splitPath := strings.Split(s, ".") if len(splitPath) == 2 && splitPath[1] == "" { - return splitPath[0], "/" + return splitPath[0] + ".", "/" } slashIdx := strings.IndexByte(s, '/') diff --git a/core/router/path_test.go b/core/router/path_test.go index d9b36ff6e..5e5c6abc7 100644 --- a/core/router/path_test.go +++ b/core/router/path_test.go @@ -116,8 +116,8 @@ func TestSplitSubdomainAndPath(t *testing.T) { path string }{ {"admin./users/42", "admin.", "/users/42"}, - {"admin.", "admin", "/"}, - {"admin./" + WildcardFileParam(), "admin.", "/" + WildcardFileParam()}, + {"static.", "static.", "/"}, + {"static./" + WildcardFileParam(), "static.", "/" + WildcardFileParam()}, {"//api/users\\42", "", "/api/users/42"}, {"admin./users//42", "admin.", "/users/42"}, {"*./users/42/", "*.", "/users/42"},