diff --git a/routers/user/auth.go b/routers/user/auth.go
index 40687fca6f..031ac026bd 100644
--- a/routers/user/auth.go
+++ b/routers/user/auth.go
@@ -76,8 +76,15 @@ func SignIn(ctx *context.Context) {
 		return
 	}
 
+	redirectTo := ctx.Query("redirect_to")
+	if len(redirectTo) > 0 {
+		ctx.SetCookie("redirect_to", redirectTo, 0, setting.AppSubUrl)
+	} else {
+		redirectTo, _ = url.QueryUnescape(ctx.GetCookie("redirect_to"))
+	}
+
 	if isSucceed {
-		if redirectTo, _ := url.QueryUnescape(ctx.GetCookie("redirect_to")); len(redirectTo) > 0 {
+		if len(redirectTo) > 0 {
 			ctx.SetCookie("redirect_to", "", -1, setting.AppSubUrl)
 			ctx.Redirect(redirectTo)
 		} else {