diff --git a/integrations/links_test.go b/integrations/links_test.go
index 7eaf1c51ef..e1213a2edc 100644
--- a/integrations/links_test.go
+++ b/integrations/links_test.go
@@ -7,8 +7,10 @@ package integrations
 import (
 	"fmt"
 	"net/http"
+	"path"
 	"testing"
 
+	"code.gitea.io/gitea/modules/setting"
 	api "code.gitea.io/sdk/gitea"
 
 	"github.com/stretchr/testify/assert"
@@ -50,7 +52,7 @@ func TestRedirectsNoLogin(t *testing.T) {
 	for link, redirectLink := range redirects {
 		req := NewRequest(t, "GET", link)
 		resp := MakeRequest(t, req, http.StatusFound)
-		assert.EqualValues(t, redirectLink, RedirectURL(t, resp))
+		assert.EqualValues(t, path.Join(setting.AppSubURL, redirectLink), RedirectURL(t, resp))
 	}
 }
 
diff --git a/modules/context/repo.go b/modules/context/repo.go
index b2b58c4f26..8e0c584c82 100644
--- a/modules/context/repo.go
+++ b/modules/context/repo.go
@@ -521,16 +521,6 @@ func getRefName(ctx *Context, pathType RepoRefType) string {
 	return ""
 }
 
-// URL to redirect to for deprecated URL scheme
-func repoRefRedirect(ctx *Context) string {
-	urlPath := ctx.Req.URL.String()
-	idx := strings.LastIndex(urlPath, ctx.Params("*"))
-	if idx < 0 {
-		idx = len(urlPath)
-	}
-	return path.Join(urlPath[:idx], ctx.Repo.BranchNameSubURL())
-}
-
 // RepoRefByType handles repository reference name for a specific type
 // of repository reference
 func RepoRefByType(refType RepoRefType) macaron.Handler {
@@ -617,7 +607,7 @@ func RepoRefByType(refType RepoRefType) macaron.Handler {
 
 			if refType == RepoRefLegacy {
 				// redirect from old URL scheme to new URL scheme
-				ctx.Redirect(repoRefRedirect(ctx))
+				ctx.Redirect(path.Join(setting.AppSubURL, strings.TrimSuffix(ctx.Req.URL.String(), ctx.Params("*")), ctx.Repo.BranchNameSubURL()))
 				return
 			}
 		}