mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-01 00:23:48 +03:00
Merge pull request #885 from pedronasser/master
Fix rewrite bug with URL query + test case (#884)
This commit is contained in:
commit
6fe5c1a69f
2 changed files with 11 additions and 3 deletions
|
@ -18,8 +18,15 @@ func To(fs http.FileSystem, r *http.Request, to string, replacer httpserver.Repl
|
|||
|
||||
// try each rewrite paths
|
||||
t := ""
|
||||
query := ""
|
||||
for _, v := range tos {
|
||||
t = path.Clean(replacer.Replace(v))
|
||||
t = replacer.Replace(v)
|
||||
tparts := strings.SplitN(t, "?", 2)
|
||||
t = path.Clean(tparts[0])
|
||||
|
||||
if len(tparts) > 1 {
|
||||
query = tparts[1]
|
||||
}
|
||||
|
||||
// add trailing slash for directories, if present
|
||||
if strings.HasSuffix(v, "/") && !strings.HasSuffix(t, "/") {
|
||||
|
@ -47,9 +54,9 @@ func To(fs http.FileSystem, r *http.Request, to string, replacer httpserver.Repl
|
|||
|
||||
// perform rewrite
|
||||
r.URL.Path = u.Path
|
||||
if u.RawQuery != "" {
|
||||
if query != "" {
|
||||
// overwrite query string if present
|
||||
r.URL.RawQuery = u.RawQuery
|
||||
r.URL.RawQuery = query
|
||||
}
|
||||
if u.Fragment != "" {
|
||||
// overwrite fragment if present
|
||||
|
|
|
@ -22,6 +22,7 @@ func TestTo(t *testing.T) {
|
|||
{"/?a=b", "/testfile /index.php?{query}", "/testfile?a=b"},
|
||||
{"/?a=b", "/testdir /index.php?{query}", "/index.php?a=b"},
|
||||
{"/?a=b", "/testdir/ /index.php?{query}", "/testdir/?a=b"},
|
||||
{"/test?url=http://caddyserver.com", " /p/{path}?{query}", "/p/test?url=http://caddyserver.com"},
|
||||
}
|
||||
|
||||
uri := func(r *url.URL) string {
|
||||
|
|
Loading…
Reference in a new issue