diff --git a/src/pkg/net/url/url.go b/src/pkg/net/url/url.go index 95432f4337..597cb51c88 100644 --- a/src/pkg/net/url/url.go +++ b/src/pkg/net/url/url.go @@ -459,7 +459,7 @@ func (u *URL) String() string { buf.WriteString(h) } } - if u.Path != "" && u.Path[0] != '/' { + if u.Path != "" && u.Path[0] != '/' && u.Host != "" { buf.WriteByte('/') } buf.WriteString(escape(u.Path, encodePath)) diff --git a/src/pkg/net/url/url_test.go b/src/pkg/net/url/url_test.go index 24f84e58ff..7578eb15b9 100644 --- a/src/pkg/net/url/url_test.go +++ b/src/pkg/net/url/url_test.go @@ -260,6 +260,14 @@ var urltests = []URLTest{ }, "mailto:webmaster@golang.org", }, + // Relative path + { + "a/b/c", + &URL{ + Path: "a/b/c", + }, + "a/b/c", + }, } // more useful string for debugging than fmt's struct printer