diff --git a/router.go b/router.go index 82a57282..87a7d9c9 100644 --- a/router.go +++ b/router.go @@ -394,7 +394,7 @@ func (r *Router) Find(method, path string, ctx *Context) (h HandlerFunc, e *Echo c = cn.findChildWithType(mtype) if c != nil { cn = c - ctx.pvalues[0] = search + ctx.pvalues[len(ctx.pvalues) - 1] = search search = "" // End search continue } diff --git a/router_test.go b/router_test.go index a9a622c8..3e9abebd 100644 --- a/router_test.go +++ b/router_test.go @@ -352,6 +352,23 @@ func TestRouterMicroParam(t *testing.T) { } } +func TestRouterMixParamMatchAny(t *testing.T) { + e := New() + r := e.router + + // Route + r.Add(GET, "/users/:id/*", func(c *Context) error { + return nil + }, e) + c := NewContext(nil, nil, e) + + h, _ := r.Find(GET, "/users/joe/comments", c) + if assert.NotNil(t, h) { + h(c) + assert.Equal(t, "joe", c.P(0)) + } +} + func TestRouterMultiRoute(t *testing.T) { e := New() r := e.router