From ce256f23cd555c05670a78b0b1c6bdb25a27d6f5 Mon Sep 17 00:00:00 2001 From: TkDodo Date: Fri, 31 Jan 2025 11:12:53 +0100 Subject: [PATCH 1/2] fix: don't do permanent redirects in dev mode `yarn dev:developer-docs` starts a nextJs devServer on localhost:3000/, which immediately yields a 301 - Permanent Redirect to localhost:3000/getting-started/ since Permanent Redirects get cached by the browser, all other projects that start a devserver on localhost:3000 will then redirect to /getting-started/, which likely doesn't exist. Since port 3000 is a popular port to be used in development, this permanent redirect can interfere with other projects, which is not a great DX. This fix changes redirects to HTTP Status Code 302 in development mode, which is a temporary redirect that doesn't get cached by browsers; in production, it's still fine to issue 301, as caching by the browser will make the redirect faster --- src/middleware.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/middleware.ts b/src/middleware.ts index 85c7644c2385ef..5b729357a07185 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -22,12 +22,15 @@ export function middleware(request: NextRequest) { return handleRedirects(request); } +// don't send Permanent Redirects (301) in dev mode - it gets cached for "localhost" by the browser +const redirectStatusCode = process.env.NODE_ENV === 'development' ? 302 : 301 + const handleRedirects = (request: NextRequest) => { const urlPath = request.nextUrl.pathname; const redirectTo = redirectMap.get(urlPath); if (redirectTo) { - return NextResponse.redirect(new URL(redirectTo, request.url), {status: 301}); + return NextResponse.redirect(new URL(redirectTo, request.url), {status: redirectStatusCode}); } // If we don't find an exact match, we try to look for a :guide placeholder @@ -50,7 +53,7 @@ const handleRedirects = (request: NextRequest) => { ); return NextResponse.redirect(new URL(finalRedirectToPath, request.url), { - status: 301, + status: redirectStatusCode, }); } From 2c921777fff99bf551e9c7c2ae46a5ad0babf14c Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 10:15:21 +0000 Subject: [PATCH 2/2] [getsentry/action-github-commit] Auto commit --- src/middleware.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/middleware.ts b/src/middleware.ts index 5b729357a07185..82be3ee7faccbc 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -23,14 +23,16 @@ export function middleware(request: NextRequest) { } // don't send Permanent Redirects (301) in dev mode - it gets cached for "localhost" by the browser -const redirectStatusCode = process.env.NODE_ENV === 'development' ? 302 : 301 +const redirectStatusCode = process.env.NODE_ENV === 'development' ? 302 : 301; const handleRedirects = (request: NextRequest) => { const urlPath = request.nextUrl.pathname; const redirectTo = redirectMap.get(urlPath); if (redirectTo) { - return NextResponse.redirect(new URL(redirectTo, request.url), {status: redirectStatusCode}); + return NextResponse.redirect(new URL(redirectTo, request.url), { + status: redirectStatusCode, + }); } // If we don't find an exact match, we try to look for a :guide placeholder