Skip to content

Commit 2404c79

Browse files
committed
fix: handle trailing slash
1 parent c21de0e commit 2404c79

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"trailingSlash": true
3+
}

packages/runtime/src/templates/edge-shared/rsc-data.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ interface PrerenderedRoute {
66
dataRoute: string | null
77
}
88

9-
export const getRscDataRouter = (prerenderedRoutes: Record<string, PrerenderedRoute>): EdgeFunction => {
9+
export const getRscDataRouter = (
10+
prerenderedRoutes: Record<string, PrerenderedRoute>,
11+
trailingSlash: boolean,
12+
): EdgeFunction => {
1013
const routeEntries: Array<[string, PrerenderedRoute]> = Object.entries(prerenderedRoutes)
1114
const routes = new Map(routeEntries)
1215

@@ -30,8 +33,8 @@ export const getRscDataRouter = (prerenderedRoutes: Record<string, PrerenderedRo
3033
const route = routes.get(pathname)
3134
if (route?.dataRoute) {
3235
log('Rewriting to data route', route.dataRoute)
33-
// Set the original route, without the trimmed slash
34-
request.headers.set('x-rsc-route', url.pathname)
36+
// We need the correct slash here so we don't get a 308
37+
request.headers.set('x-rsc-route', trailingSlash ? `${pathname}/` : pathname)
3538
return context.rewrite(new URL(route.dataRoute, request.url))
3639
}
3740
} else if (rscDataRoutes.has(pathname)) {
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import prerenderManifest from '../edge-shared/prerender-manifest.json' assert { type: 'json' }
2+
import nextConfig from '../edge-shared/nextConfig.json' assert { type: 'json' }
23
import { getRscDataRouter } from '../edge-shared/rsc-data.ts'
34

4-
const handler = getRscDataRouter(prerenderManifest.routes)
5+
const handler = getRscDataRouter(prerenderManifest.routes, nextConfig.trailingSlash)
56
export default handler

0 commit comments

Comments
 (0)