Fix aliases with uglyURLs

This commit is contained in:
Helder Pereira 2020-06-14 22:33:00 +01:00 committed by Bjørn Erik Pedersen
parent d6ed17c60f
commit f720fe56db
2 changed files with 17 additions and 15 deletions

View file

@ -46,12 +46,15 @@ func TestAlias(t *testing.T) {
c := qt.New(t) c := qt.New(t)
tests := []struct { tests := []struct {
urlPrefix string fileSuffix string
settings map[string]interface{} urlPrefix string
urlSuffix string
settings map[string]interface{}
}{ }{
{"http://example.com", map[string]interface{}{"baseURL": "http://example.com"}}, {"/index.html", "http://example.com", "/", map[string]interface{}{"baseURL": "http://example.com"}},
{"http://example.com", map[string]interface{}{"baseURL": "http://example.com", "canonifyURLs": true}}, {"/index.html", "http://example.com", "/", map[string]interface{}{"baseURL": "http://example.com", "canonifyURLs": true}},
{"../..", map[string]interface{}{"relativeURLs": true}}, {"/index.html", "../..", "/", map[string]interface{}{"relativeURLs": true}},
{".html", "", ".html", map[string]interface{}{"uglyURLs": true}},
} }
for _, test := range tests { for _, test := range tests {
@ -63,10 +66,10 @@ func TestAlias(t *testing.T) {
c.Assert(len(b.H.Sites[0].RegularPages()), qt.Equals, 1) c.Assert(len(b.H.Sites[0].RegularPages()), qt.Equals, 1)
// the real page // 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 // the alias redirectors
b.AssertFileContent("public/foo/bar/index.html", "<meta http-equiv=\"refresh\" content=\"0; url="+test.urlPrefix+"/blog/page/\" />") b.AssertFileContent("public/foo/bar"+test.fileSuffix, "<meta http-equiv=\"refresh\" content=\"0; url="+test.urlPrefix+"/blog/page"+test.urlSuffix+"\" />")
b.AssertFileContent("public/blog/rel/index.html", "<meta http-equiv=\"refresh\" content=\"0; url="+test.urlPrefix+"/blog/page/\" />") b.AssertFileContent("public/blog/rel"+test.fileSuffix, "<meta http-equiv=\"refresh\" content=\"0; url="+test.urlPrefix+"/blog/page"+test.urlSuffix+"\" />")
} }
} }

View file

@ -338,19 +338,18 @@ func (s *Site) renderAliases() error {
if isRelative { if isRelative {
// Make alias relative, where "." will be on the // Make alias relative, where "." will be on the
// same directory level as the current page. // same directory level as the current page.
// TODO(bep) ugly URLs doesn't seem to be supported in basePath := path.Join(of.RelPermalink(), "..")
// aliases, I'm not sure why not.
basePath := of.RelPermalink()
if strings.HasSuffix(basePath, "/") {
basePath = path.Join(basePath, "..")
}
a = path.Join(basePath, a) a = path.Join(basePath, a)
} else if f.Path != "" { } else {
// Make sure AMP and similar doesn't clash with regular aliases. // Make sure AMP and similar doesn't clash with regular aliases.
a = path.Join(f.Path, a) a = path.Join(f.Path, a)
} }
if s.UglyURLs && !strings.HasSuffix(a, ".html") {
a += ".html"
}
lang := p.Language().Lang lang := p.Language().Lang
if s.h.multihost && !strings.HasPrefix(a, "/"+lang) { if s.h.multihost && !strings.HasPrefix(a, "/"+lang) {