diff --git a/server/upstream/redirects.go b/server/upstream/redirects.go
index 295212f..f53917a 100644
--- a/server/upstream/redirects.go
+++ b/server/upstream/redirects.go
@@ -58,12 +58,12 @@ func (o *Options) getRedirects(giteaClient *gitea.Client, redirectsCache cache.S
 				})
 			}
 		}
-		_ = redirectsCache.Set(o.TargetOwner+"/"+o.TargetRepo+"/"+o.TargetBranch, redirects, redirectsCacheTimeout)
+		_ = redirectsCache.Set(cacheKey, redirects, redirectsCacheTimeout)
 	}
 	return redirects
 }
 
-func (o *Options) matchRedirects(ctx *context.Context, giteaClient *gitea.Client, redirects []Redirect, redirectsCache cache.SetGetKey) {
+func (o *Options) matchRedirects(ctx *context.Context, giteaClient *gitea.Client, redirects []Redirect, redirectsCache cache.SetGetKey) (final bool) {
 	if len(redirects) > 0 {
 		for _, redirect := range redirects {
 			reqUrl := ctx.Req.RequestURI
@@ -74,10 +74,10 @@ func (o *Options) matchRedirects(ctx *context.Context, giteaClient *gitea.Client
 				if redirect.StatusCode == 200 {
 					o.TargetPath = redirect.To
 					o.Upstream(ctx, giteaClient, redirectsCache)
-					return
+					return true
 				} else {
 					ctx.Redirect(redirect.To, redirect.StatusCode)
-					return
+					return true
 				}
 			}
 
@@ -90,23 +90,25 @@ func (o *Options) matchRedirects(ctx *context.Context, giteaClient *gitea.Client
 					if redirect.StatusCode == 200 {
 						o.TargetPath = splatUrl
 						o.Upstream(ctx, giteaClient, redirectsCache)
-						return
+						return true
 					} else {
 						ctx.Redirect(splatUrl, redirect.StatusCode)
-						return
+						return true
 					}
 				} else {
 					// do rewrite if status code is 200
 					if redirect.StatusCode == 200 {
 						o.TargetPath = redirect.To
 						o.Upstream(ctx, giteaClient, redirectsCache)
-						return
+						return true
 					} else {
 						ctx.Redirect(redirect.To, redirect.StatusCode)
-						return
+						return true
 					}
 				}
 			}
 		}
 	}
+	
+	return false
 }
\ No newline at end of file
diff --git a/server/upstream/upstream.go b/server/upstream/upstream.go
index 137781d..afba8d4 100644
--- a/server/upstream/upstream.go
+++ b/server/upstream/upstream.go
@@ -140,9 +140,7 @@ func (o *Options) Upstream(ctx *context.Context, giteaClient *gitea.Client, redi
 
 		// Get and match redirects
 		redirects := o.getRedirects(giteaClient, redirectsCache)
-		o.matchRedirects(ctx, giteaClient, redirects, redirectsCache)
-
-		return false
+		return o.matchRedirects(ctx, giteaClient, redirects, redirectsCache)
 	}
 
 	// handle unexpected client errors