diff --git a/packages/gitbook/src/components/SitePage/fetch.ts b/packages/gitbook/src/components/SitePage/fetch.ts index 2b3bf07ad..9d2f43eeb 100644 --- a/packages/gitbook/src/components/SitePage/fetch.ts +++ b/packages/gitbook/src/components/SitePage/fetch.ts @@ -1,4 +1,4 @@ -import { redirect } from 'next/navigation'; +import { permanentRedirect, redirect } from 'next/navigation'; import { SITE_REDIRECT_SOURCE_PATH_MAX_LENGTH, @@ -89,7 +89,21 @@ async function resolvePage(context: GitBookSiteContext, params: PagePathParams | }) )); if (resolvedSiteRedirect) { - return redirect(linker.toLinkForContent(resolvedSiteRedirect.target)); + const destination = linker.toLinkForContent(resolvedSiteRedirect.target); + const isPublicLiveContext = + !shareKey && + !context.changeRequest && + context.revisionId === context.space.revision && + !context.ids.isLoggedInVisitor; + if ( + resolvedSiteRedirect.redirect && + 'permanent' in resolvedSiteRedirect.redirect && + resolvedSiteRedirect.redirect.permanent === true && + isPublicLiveContext + ) { + return permanentRedirect(destination); + } + return redirect(destination); } }