next.js
35583121 - Fix: Middleware does not match when use :path (#72056)

Commit
1 year ago
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
Author
Parents
Loading