diff --git a/modules/util/url.go b/modules/util/url.go
index 1acd713766..e01d63bc26 100644
--- a/modules/util/url.go
+++ b/modules/util/url.go
@@ -28,6 +28,10 @@ func URLJoin(base string, elems ...string) string {
 	// We do need to escape special chars here or else they can be silently discarded
 	// in the ResolveReference call below
 	base = PathEscapeSegments(base)
+	for k, v := range elems {
+		elems[k] = PathEscapeSegments(v)
+	}
+
 	if !strings.HasSuffix(base, "/") {
 		base += "/"
 	}