diff --git a/packages/stack-server/src/lib/route-handlers.tsx b/packages/stack-server/src/lib/route-handlers.tsx index 4e784c6af..4dd51ea10 100644 --- a/packages/stack-server/src/lib/route-handlers.tsx +++ b/packages/stack-server/src/lib/route-handlers.tsx @@ -342,7 +342,12 @@ export function redirectHandler(redirectPath: string, statusCode: 301 | 302 | 30 body: yup.string().required(), }), async handler(req) { - const newUrl = new URL(redirectPath, req.url + "/"); + const urlWithTrailingSlash = new URL(req.url); + if (!urlWithTrailingSlash.pathname.endsWith("/")) { + urlWithTrailingSlash.pathname += "/"; + } + const newUrl = new URL(redirectPath, urlWithTrailingSlash); + console.log({ req, newUrl }); return { statusCode, headers: { diff --git a/packages/stack/src/components/redirect-message-card.tsx b/packages/stack/src/components/redirect-message-card.tsx index 008365ee4..803506b67 100644 --- a/packages/stack/src/components/redirect-message-card.tsx +++ b/packages/stack/src/components/redirect-message-card.tsx @@ -4,6 +4,7 @@ import { useRouter } from "next/navigation"; import { useStackApp } from ".."; import MessageCard from "./message-card"; import { Text, Button } from "../components-core"; +import { neverResolve } from "@stackframe/stack-shared/dist/utils/promises"; export default function RedirectMessageCard({ type, @@ -67,13 +68,19 @@ export default function RedirectMessageCard({ {secondaryButton && ( )} -