From c3127cfada39101fb11f5c13df7559a456d28fc7 Mon Sep 17 00:00:00 2001 From: Jan Kott <51777660+boostvolt@users.noreply.github.com> Date: Tue, 13 Jan 2026 19:57:07 +0100 Subject: [PATCH] fix(handler): prevent double slash in URLs for root path prefix --- handler.go | 10 +++++----- internal/riveruicmd/riveruicmd.go | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/handler.go b/handler.go index 12bf994..835a38f 100644 --- a/handler.go +++ b/handler.go @@ -145,12 +145,12 @@ func (opts *HandlerOpts) validate() error { } func NormalizePathPrefix(prefix string) string { - if prefix == "" { - return "/" + if prefix == "" || prefix == "/" { + return "" } prefix = strings.TrimSuffix(prefix, "/") if !strings.HasPrefix(prefix, "/") { - return "/" + prefix + prefix = "/" + prefix } return prefix } @@ -189,7 +189,7 @@ func NewHandler(opts *HandlerOpts) (*Handler, error) { JobListHideArgsByDefault: opts.JobListHideArgsByDefault, }) - prefix := cmp.Or(strings.TrimSuffix(opts.Prefix, "/"), "") + prefix := opts.Prefix frontendIndex, err := fs.Sub(FrontendIndex, "dist") if err != nil { @@ -266,7 +266,7 @@ func NewHandler(opts *HandlerOpts) (*Handler, error) { middlewareStack := apimiddleware.NewMiddlewareStack() - if prefix != "/" { + if prefix != "" { middlewareStack.Use(&stripPrefixMiddleware{prefix}) } diff --git a/internal/riveruicmd/riveruicmd.go b/internal/riveruicmd/riveruicmd.go index 6be5bc5..1f4da79 100644 --- a/internal/riveruicmd/riveruicmd.go +++ b/internal/riveruicmd/riveruicmd.go @@ -202,7 +202,7 @@ func initServer[TClient any](ctx context.Context, opts *initServerOpts, createCl }) filters := []sloghttp.Filter{} if opts.silentHealthChecks { - apiHealthPrefix := strings.TrimSuffix(opts.pathPrefix, "/") + "/api/health-checks" + apiHealthPrefix := opts.pathPrefix + "/api/health-checks" filters = append(filters, sloghttp.IgnorePathPrefix(apiHealthPrefix)) } logHandler := sloghttp.NewWithConfig(opts.logger, sloghttp.Config{