gpt4 book ai didi

next.js - 如何处理 next.js 路由中的尾部斜杠?

转载 作者:行者123 更新时间:2023-12-03 18:29:31 26 4
gpt4 key购买 nike

我正在尝试设置 next.js 应用程序,但在处理带有斜杠的路由时遇到问题。因此,例如,如果我有这样的页面结构:

pages
- index.js
- blog
- index.js
- [slug].js

然后去 / 给我基本的 index.js ,去 /blog 给我 blog/index.js ,去 /blog/my-post 给我 blog/[slug].js - 到目前为止一切顺利。

但是转到 /blog/ 会给我一个 404 错误,如果不完全替换 next.js 路由器,似乎根本无法处理这个问题——我什至无法将 /blog/ 重定向到 /blog 。有什么办法可以解决这个问题,还是我需要一个自定义路由器?有没有办法以一种让我处理这些的方式扩展 next.js 路由器,而不用完全替换它?

最佳答案

更新:如果您使用的是 next export,那么您可以通过将 exportTrailingSlash 添加到您的 next.config.js 来解决问题

在撰写本文时,如果不定义自己的自定义服务器,似乎没有办法解决此问题。

上一个答案:

您必须创建一个新文件 blog.js 如下所示:

enter image description here

使用以下 server.js

const express = require('express')
const next = require('next')

const PORT = process.env.PORT || 3000;

const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()

app
.prepare()
.then(() => {
const server = express()

server.get('/blog', (req, res) => {
const actualPage = '/blog'
// const queryParams = { title: req.params.id }
app.render(req, res, '/blog', {})
})
server.get('/blog/:id', (req, res) => {
const actualPage = '/blog/[id]'
const queryParams = { title: req.params.id }
app.render(req, res, actualPage, queryParams)
})

server.get('*', (req, res) => {
return handle(req, res)
})

server.listen(PORT, err => {
if (err) throw err
console.log(`> Ready on http://localhost:${PORT}`)
})
})
.catch(ex => {
console.error(ex.stack)
process.exit(1)
})

node server.js 应该启动您的服务器,您将拥有所需的映射。

请注意,本示例中未使用 blog/index.js

关于next.js - 如何处理 next.js 路由中的尾部斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com