diff options
author | Cameron Moore <[email protected]> | 2016-04-27 09:54:44 -0500 |
---|---|---|
committer | Cameron Moore <[email protected]> | 2016-04-27 10:29:46 -0500 |
commit | e4ee1b89ad21f46dab96c9099f554bef4602650b (patch) | |
tree | bc951980cba5d2738f2ea0e050d750186d3ebcda /helpers | |
parent | 16b71bbbb4c283f29e6e757dbf1fc304703704a9 (diff) | |
download | hugo-e4ee1b89ad21f46dab96c9099f554bef4602650b.tar.gz hugo-e4ee1b89ad21f46dab96c9099f554bef4602650b.zip |
helpers: Use net/url for URL parsing in AbsURL
Fixes #2112
Diffstat (limited to 'helpers')
-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 { |