对于旧版本:< 9.x
您可以使用next/link
的as
功能:
<Link prefetch as={`/product/${slug}`} href={`/product?slug=${slug}`}>
浏览器上的链接将显示为/product/slug
内部映射到/product?slug=slug
您需要有一个用于服务器端映射的自定义服务器:
server.get("/product/:slug", (req, res) => {
return app.render(req, res, "/product", { slug: req.params.slug })
})
对于 9.x 及更高版本
Next 9.x 支持基于文件系统的动态路由。您不再需要自定义服务器。
Next.js 支持使用基本命名参数创建路由,这是一种由path-to-regexp
(支持Express的库)推广的模式。
/product/:slug
现在可以通过在 pages 目录中创建一个名为的文件来创建与路由匹配的页面:pages/product/[slug].js
.
还支持多个动态 URL 段!
./pages/blog/[blogId]/comments/[commentId].js
./pages/posts/[pid]/index.js