From f720fe56db9e064d10b86d98e7bbd40fb1c8489f Mon Sep 17 00:00:00 2001 From: Helder Pereira Date: Sun, 14 Jun 2020 22:33:00 +0100 Subject: [PATCH] Fix aliases with uglyURLs --- hugolib/alias_test.go | 19 +++++++++++-------- hugolib/site_render.go | 13 ++++++------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/hugolib/alias_test.go b/hugolib/alias_test.go index 17c663496..a1736e7e8 100644 --- a/hugolib/alias_test.go +++ b/hugolib/alias_test.go @@ -46,12 +46,15 @@ func TestAlias(t *testing.T) { c := qt.New(t) tests := []struct { - urlPrefix string - settings map[string]interface{} + fileSuffix string + urlPrefix string + urlSuffix string + settings map[string]interface{} }{ - {"http://example.com", map[string]interface{}{"baseURL": "http://example.com"}}, - {"http://example.com", map[string]interface{}{"baseURL": "http://example.com", "canonifyURLs": true}}, - {"../..", map[string]interface{}{"relativeURLs": true}}, + {"/index.html", "http://example.com", "/", map[string]interface{}{"baseURL": "http://example.com"}}, + {"/index.html", "http://example.com", "/", map[string]interface{}{"baseURL": "http://example.com", "canonifyURLs": true}}, + {"/index.html", "../..", "/", map[string]interface{}{"relativeURLs": true}}, + {".html", "", ".html", map[string]interface{}{"uglyURLs": true}}, } for _, test := range tests { @@ -63,10 +66,10 @@ func TestAlias(t *testing.T) { c.Assert(len(b.H.Sites[0].RegularPages()), qt.Equals, 1) // the real page - b.AssertFileContent("public/blog/page/index.html", "For some moments the old man") + b.AssertFileContent("public/blog/page"+test.fileSuffix, "For some moments the old man") // the alias redirectors - b.AssertFileContent("public/foo/bar/index.html", "") - b.AssertFileContent("public/blog/rel/index.html", "") + b.AssertFileContent("public/foo/bar"+test.fileSuffix, "") + b.AssertFileContent("public/blog/rel"+test.fileSuffix, "") } } diff --git a/hugolib/site_render.go b/hugolib/site_render.go index 5377babef..1d397dafa 100644 --- a/hugolib/site_render.go +++ b/hugolib/site_render.go @@ -338,19 +338,18 @@ func (s *Site) renderAliases() error { if isRelative { // Make alias relative, where "." will be on the // same directory level as the current page. - // TODO(bep) ugly URLs doesn't seem to be supported in - // aliases, I'm not sure why not. - basePath := of.RelPermalink() - if strings.HasSuffix(basePath, "/") { - basePath = path.Join(basePath, "..") - } + basePath := path.Join(of.RelPermalink(), "..") a = path.Join(basePath, a) - } else if f.Path != "" { + } else { // Make sure AMP and similar doesn't clash with regular aliases. a = path.Join(f.Path, a) } + if s.UglyURLs && !strings.HasSuffix(a, ".html") { + a += ".html" + } + lang := p.Language().Lang if s.h.multihost && !strings.HasPrefix(a, "/"+lang) {