diff --git a/modules/caddyhttp/matchers_test.go b/modules/caddyhttp/matchers_test.go index c4c7845b..59b8c767 100644 --- a/modules/caddyhttp/matchers_test.go +++ b/modules/caddyhttp/matchers_test.go @@ -240,10 +240,10 @@ func TestPathREMatcher(t *testing.T) { } for key, expectVal := range tc.expectRepl { - placeholder := fmt.Sprintf("{matchers.path_regexp.%s}", key) + placeholder := fmt.Sprintf("{http.matchers.path_regexp.%s}", key) actualVal := repl.ReplaceAll(placeholder, "") if actualVal != expectVal { - t.Errorf("Test %d [%v]: Expected placeholder {matchers.path_regexp.%s} to be '%s' but got '%s'", + t.Errorf("Test %d [%v]: Expected placeholder {http.matchers.path_regexp.%s} to be '%s' but got '%s'", i, tc.match.Pattern, key, expectVal, actualVal) continue } @@ -358,10 +358,10 @@ func TestHeaderREMatcher(t *testing.T) { } for key, expectVal := range tc.expectRepl { - placeholder := fmt.Sprintf("{matchers.header_regexp.%s}", key) + placeholder := fmt.Sprintf("{http.matchers.header_regexp.%s}", key) actualVal := repl.ReplaceAll(placeholder, "") if actualVal != expectVal { - t.Errorf("Test %d [%v]: Expected placeholder {matchers.header_regexp.%s} to be '%s' but got '%s'", + t.Errorf("Test %d [%v]: Expected placeholder {http.matchers.header_regexp.%s} to be '%s' but got '%s'", i, tc.match, key, expectVal, actualVal) continue } diff --git a/modules/caddyhttp/replacer.go b/modules/caddyhttp/replacer.go index 16cc1fe9..0b0547df 100644 --- a/modules/caddyhttp/replacer.go +++ b/modules/caddyhttp/replacer.go @@ -48,16 +48,17 @@ func addHTTPVarsToReplacer(repl caddy2.Replacer, req *http.Request, w http.Respo dir, _ := path.Split(req.URL.Path) return dir }() + m["http.request.uri.query"] = req.URL.RawQuery + for param, vals := range req.URL.Query() { + m["http.request.uri.query."+param] = strings.Join(vals, ",") + } for field, vals := range req.Header { m["http.request.header."+strings.ToLower(field)] = strings.Join(vals, ",") } for _, cookie := range req.Cookies() { m["http.request.cookie."+cookie.Name] = cookie.Value } - for param, vals := range req.URL.Query() { - m["http.request.uri.query."+param] = strings.Join(vals, ",") - } hostLabels := strings.Split(req.Host, ".") for i, label := range hostLabels { diff --git a/modules/caddyhttp/rewrite/rewrite.go b/modules/caddyhttp/rewrite/rewrite.go index 1afb8a42..9bd01c0b 100644 --- a/modules/caddyhttp/rewrite/rewrite.go +++ b/modules/caddyhttp/rewrite/rewrite.go @@ -36,17 +36,15 @@ func (rewr Rewrite) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddy } if rewr.URI != "" { - // TODO: clean this all up, I don't think it's right - oldURI := r.RequestURI newURI := repl.ReplaceAll(rewr.URI, "") + u, err := url.Parse(newURI) if err != nil { return caddyhttp.Error(http.StatusInternalServerError, err) } r.RequestURI = newURI - r.URL.Path = u.Path if u.RawQuery != "" { r.URL.RawQuery = u.RawQuery