Files
Jude GaoandGitHub 35583121b6 Fix: Middleware does not match when use :path (#72056)
For a given path expression, we want it to optionally match a `.json`
suffix. However, the original implementation was flawed:

The path `/:id` was altered to `/:id(.json)?`, which then converted to
the Regex pattern `^(?:\/(.json))?[\/#\?]?$`. This Regex incorrectly
matched only `/` or `/_json` — clearly not the intended result.

The fix involved adjusting the way we append the `.json` suffix. Instead
of `/:id(.json)?`, we now use `/:id{(\\.json)}?`, which converts to the
Regex `^(?:\/([^\/#\?]+?))(\.json)?[\/#\?]?$`. This pattern correctly
matches both cases, with or without the `.json` suffix.

-----

Fixes https://github.com/vercel/next.js/issues/53840
Fixes https://github.com/vercel/next.js/issues/55558
Closes DX-2088
2024-10-30 12:37:13 -04:00

12 lines
236 B
JavaScript

import { NextResponse } from 'next/server'
export default function middleware(req, res) {
const url = req.nextUrl.clone()
url.pathname = '/'
return NextResponse.rewrite(url)
}
export const config = {
matcher: ['/chat/:id'],
}