Skip to content
/ hugo Public
forked from gohugoio/hugo

Commit

Permalink
helpers: Improve schema detection when creating relative URLs
Browse files Browse the repository at this point in the history
  • Loading branch information
jmooring committed Jun 10, 2023
1 parent 7377970 commit 8fdbfc5
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
8 changes: 7 additions & 1 deletion helpers/url.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,13 @@ func (p *PathSpec) getBaseURLRoot(path string) string {
func (p *PathSpec) RelURL(in string, addLanguage bool) string {
baseURL := p.getBaseURLRoot(in)
canonifyURLs := p.Cfg.CanonifyURLs()
if (!strings.HasPrefix(in, baseURL) && strings.HasPrefix(in, "http")) || strings.HasPrefix(in, "//") {

url, err := url.Parse(in)
if err != nil {
return in
}

if (!strings.HasPrefix(in, baseURL) && url.IsAbs()) || strings.HasPrefix(in, "//") {
return in
}

Expand Down
4 changes: 4 additions & 0 deletions helpers/url_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,10 @@ func doTestRelURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool,
{"/foo/bar", "https://example.org/foo/", false, "MULTI/foo/bar"},
{"foo/bar", "https://example.org/foo/", false, "/fooMULTI/foo/bar"},

// Issue 11080
{"mailto:a@b.com", "http://base/", false, "mailto:a@b.com"},
{"ftp://b.com/a.txt", "http://base/", false, "ftp://b.com/a.txt"},

{"/test/foo", "http://base/", false, "MULTI/test/foo"},
{"/" + lang + "/test/foo", "http://base/", false, "/" + lang + "/test/foo"},
{lang + "/test/foo", "http://base/", false, "/" + lang + "/test/foo"},
Expand Down

0 comments on commit 8fdbfc5

Please sign in to comment.