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 && (
)}
-