diff options
author | Marek Janda <nyx@nyx.cz> | 2015-11-02 21:28:29 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2016-03-10 11:08:50 +0100 |
commit | 0962470850ed6802b645d5bd6663db60807c8f5b (patch) | |
tree | b5d070c8f29404956e46b00c46440e8a8b0542e6 /helpers | |
parent | 94c3825e5bdda9c57b1e8782caa3c407cfad711e (diff) |
Make absURL properly handle baseURL with path component
Diffstat (limited to 'helpers')
-rw-r--r-- | helpers/url.go | 12 | ||||
-rw-r--r-- | helpers/url_test.go | 2 |
2 files changed, 13 insertions, 1 deletions
diff --git a/helpers/url.go b/helpers/url.go index bebcb8663..749b2eeac 100644 --- a/helpers/url.go +++ b/helpers/url.go @@ -151,7 +151,17 @@ func AbsURL(path string) string { if strings.HasPrefix(path, "http") || strings.HasPrefix(path, "//") { return path } - return MakePermalink(viper.GetString("BaseURL"), path).String() + + baseURL := viper.GetString("BaseURL") + if strings.HasPrefix(path, "/") { + p, err := url.Parse(baseURL) + if err != nil { + panic(err) + } + p.Path = "" + baseURL = p.String() + } + return MakePermalink(baseURL, path).String() } // RelURL creates a URL relative to the BaseURL root. diff --git a/helpers/url_test.go b/helpers/url_test.go index c484a99a6..4774accbb 100644 --- a/helpers/url_test.go +++ b/helpers/url_test.go @@ -53,6 +53,8 @@ func TestAbsURL(t *testing.T) { {"/test/2/foo/", "http://base", "http://base/test/2/foo/"}, {"http://abs", "http://base/", "http://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/"}, } for _, test := range tests { |