tl;dr: I need mypage.com/users/123
to behave like mypage.com/users?user_id=123
I'm using Next.js 10. I'd like to have routes like mypage.com/users/123
and mypage.com/users/445
. All my searches take me to dynamic routing, which suggests using this structure under the pages
folder:
users/
[user_id].js
This doesn't work for my case, because then a new page is generated in the server for every user. I only want one page, statically generated, under users/
, that gets the user_id
as a parameter on the client side.
With query params, this is straightforward. I can use this folder structure
users/
index.js
and then, when someone goes to mypage.com/users?user_id=123
, the same page gets served, and then client side js code can access the user_id
.
Possible solution
My current solution (which I find too intricate, but may help someone) is adding a rewrite
on next.config.js
, like this:
module.exports = {
rewrites() {
return [{ source: '/users/:user_id', destination: '/users?user_id=:user_id' }];
}
}