diff --git a/packages/libs/core/src/handle/redirect.ts b/packages/libs/core/src/handle/redirect.ts index 1202ae001d..0a8f1aae63 100644 --- a/packages/libs/core/src/handle/redirect.ts +++ b/packages/libs/core/src/handle/redirect.ts @@ -7,3 +7,21 @@ export const redirect = (event: Event, route: RedirectRoute) => { event.res.statusMessage = route.statusDescription; event.res.end(); }; + +export const redirectByPageProps = (event: Event, route: RedirectRoute) => { + event.res.setHeader( + "cache-control", + route.headers?.cacheControl?.join(":") ?? "" + ); + event.res.statusCode = 200; + + const body = { + pageProps: { + __N_REDIRECT: route.headers?.location[0].value ?? "", + __N_REDIRECT_STATUS: route.status + }, + __N_SSG: true + }; + event.res.write(JSON.stringify(body)); + event.res.end(); +}; diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index efa17493e8..4af8b03ee0 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -51,7 +51,7 @@ import { s3BucketNameFromEventRequest } from "./s3/s3BucketNameFromEventRequest" import { triggerStaticRegeneration } from "./lib/triggerStaticRegeneration"; import { s3StorePage } from "./s3/s3StorePage"; import { createRedirectResponse } from "@sls-next/core/dist/module/route/redirect"; -import { redirect } from "@sls-next/core/dist/module/handle/redirect"; +import { redirectByPageProps } from "@sls-next/core/dist/module/handle/redirect"; import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"; import getStream from "get-stream"; @@ -492,7 +492,7 @@ const handleOriginResponse = async ({ statusCode ); - redirect({ req, res, responsePromise }, redirectResponse); + redirectByPageProps({ req, res, responsePromise }, redirectResponse); return await responsePromise; }