diff options
Diffstat (limited to 'helpers/url.go')
-rw-r--r-- | helpers/url.go | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/helpers/url.go b/helpers/url.go index 1d87cf89f..1bc6042e6 100644 --- a/helpers/url.go +++ b/helpers/url.go @@ -169,8 +169,15 @@ func AbsURL(in string, addLanguage bool) string { if addLanguage { prefix := getLanguagePrefix() + hasPrefix := false + // avoid adding language prefix if already present + if strings.HasPrefix(in, "/") { + hasPrefix = strings.HasPrefix(in[1:], prefix) + } else { + hasPrefix = strings.HasPrefix(in, prefix) + } - if prefix != "" { + if prefix != "" && !hasPrefix { addSlash := in == "" || strings.HasSuffix(in, "/") in = path.Join(prefix, in) @@ -224,7 +231,15 @@ func RelURL(in string, addLanguage bool) string { if addLanguage { prefix := getLanguagePrefix() - if prefix != "" { + hasPrefix := false + // avoid adding language prefix if already present + if strings.HasPrefix(in, "/") { + hasPrefix = strings.HasPrefix(in[1:], prefix) + } else { + hasPrefix = strings.HasPrefix(in, prefix) + } + + if prefix != "" && !hasPrefix { hadSlash := strings.HasSuffix(u, "/") u = path.Join(prefix, u) |