Происходит следующее: на клиенте с компонентом Link
вы создаете ссылку на страницу blog.js
, устанавливая в качестве имени пути "/blog"
.
Когда вы переходите непосредственно кURL /blog/test
, Next.js попытается отобразить страницу на сервере и для этого ищет файл /pages/blog/test.js
.Этот файл не существует, и Next.js не знает, что вы хотите загрузить страницу blog.js
и установить query.slug
для второй части URL.
Для этого вамнеобходимо отобразить этот маршрут на сервере, чтобы загрузить нужную страницу, и извлечь нужные параметры из URL.
Документы Next.js описывают это в Поддержка чистых URL на стороне сервера с помощью экспресс-настройки для настройки собственного сервера.
Вы можете просмотреть полный код, чтобы заставить его работать там, но ваш собственный маршрут будет выглядеть примерно так:
server.get('/blog/:slug', (req, res) => {
const actualPage = '/blog'
const queryParams = { slug: req.params.slug }
app.render(req, res, actualPage, queryParams)
})