mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-23 18:41:19 +00:00
Fix RelURL and AbsURL when path starts with language
This commit is contained in:
parent
907d9e9268
commit
aebfe156fb
2 changed files with 43 additions and 4 deletions
|
@ -181,10 +181,14 @@ func (p *PathSpec) AbsURL(in string, addLanguage bool) string {
|
|||
if prefix != "" {
|
||||
hasPrefix := false
|
||||
// avoid adding language prefix if already present
|
||||
in2 := in
|
||||
if strings.HasPrefix(in, "/") {
|
||||
hasPrefix = strings.HasPrefix(in[1:], prefix)
|
||||
in2 = in[1:]
|
||||
}
|
||||
if in2 == prefix {
|
||||
hasPrefix = true
|
||||
} else {
|
||||
hasPrefix = strings.HasPrefix(in, prefix)
|
||||
hasPrefix = strings.HasPrefix(in2, prefix+"/")
|
||||
}
|
||||
|
||||
if !hasPrefix {
|
||||
|
@ -230,10 +234,14 @@ func (p *PathSpec) RelURL(in string, addLanguage bool) string {
|
|||
if prefix != "" {
|
||||
hasPrefix := false
|
||||
// avoid adding language prefix if already present
|
||||
in2 := in
|
||||
if strings.HasPrefix(in, "/") {
|
||||
hasPrefix = strings.HasPrefix(in[1:], prefix)
|
||||
in2 = in[1:]
|
||||
}
|
||||
if in2 == prefix {
|
||||
hasPrefix = true
|
||||
} else {
|
||||
hasPrefix = strings.HasPrefix(in, prefix)
|
||||
hasPrefix = strings.HasPrefix(in2, prefix+"/")
|
||||
}
|
||||
|
||||
if !hasPrefix {
|
||||
|
|
|
@ -84,6 +84,21 @@ func doTestAbsURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool,
|
|||
{"http//foo", "http://base/path", "http://base/path/MULTIhttp/foo"},
|
||||
}
|
||||
|
||||
if multilingual && addLanguage && defaultInSubDir {
|
||||
newTests := []struct {
|
||||
input string
|
||||
baseURL string
|
||||
expected string
|
||||
}{
|
||||
{lang + "test", "http://base/", "http://base/" + lang + "/" + lang + "test"},
|
||||
{"/" + lang + "test", "http://base/", "http://base/" + lang + "/" + lang + "test"},
|
||||
}
|
||||
|
||||
for _, test := range newTests {
|
||||
tests = append(tests, test)
|
||||
}
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
v.Set("baseURL", test.baseURL)
|
||||
v.Set("contentDir", "content")
|
||||
|
@ -164,6 +179,22 @@ func doTestRelURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool,
|
|||
{"//schemaless", "http://base/", false, "//schemaless"},
|
||||
}
|
||||
|
||||
if multilingual && addLanguage && defaultInSubDir {
|
||||
newTests := []struct {
|
||||
input string
|
||||
baseURL string
|
||||
canonify bool
|
||||
expected string
|
||||
}{
|
||||
{lang + "test", "http://base/", false, "/" + lang + "/" + lang + "test"},
|
||||
{"/" + lang + "test", "http://base/", false, "/" + lang + "/" + lang + "test"},
|
||||
}
|
||||
|
||||
for _, test := range newTests {
|
||||
tests = append(tests, test)
|
||||
}
|
||||
}
|
||||
|
||||
for i, test := range tests {
|
||||
v.Set("baseURL", test.baseURL)
|
||||
v.Set("canonifyURLs", test.canonify)
|
||||
|
|
Loading…
Reference in a new issue