diff options
-rw-r--r-- | helpers/url.go | 7 | ||||
-rw-r--r-- | helpers/url_test.go | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/helpers/url.go b/helpers/url.go index 9d3db8004..00bcd67c9 100644 --- a/helpers/url.go +++ b/helpers/url.go @@ -148,7 +148,12 @@ func MakePermalink(host, plink string) *url.URL { // AbsURL creates a absolute URL from the relative path given and the BaseURL set in config. func AbsURL(path string) string { - if strings.HasPrefix(path, "http") || strings.HasPrefix(path, "//") { + url, err := url.Parse(path) + if err != nil { + return path + } + + if url.IsAbs() || strings.HasPrefix(path, "//") { return path } diff --git a/helpers/url_test.go b/helpers/url_test.go index 4774accbb..fd8cd5137 100644 --- a/helpers/url_test.go +++ b/helpers/url_test.go @@ -52,9 +52,11 @@ func TestAbsURL(t *testing.T) { {"", "http://base/ace/", "http://base/ace/"}, {"/test/2/foo/", "http://base", "http://base/test/2/foo/"}, {"http://abs", "http://base/", "http://abs"}, + {"schema://abs", "http://base/", "schema://abs"}, {"//schemaless", "http://base/", "//schemaless"}, {"test/2/foo/", "http://base/path", "http://base/path/test/2/foo/"}, {"/test/2/foo/", "http://base/path", "http://base/test/2/foo/"}, + {"http//foo", "http://base/path", "http://base/path/http/foo"}, } for _, test := range tests { |