如何解决具有自定义快递服务器的nextjs不会在生产中重定向url
我在Vercel上托管了一个NextJS项目 我已添加server.js文件以使用自定义快递服务器,该服务器将301重定向一些网址 当我在本地运行重定向时,可以正常工作,但是当我在Vercel上将代码推送到生产环境时,重定向不起作用
这是server.js文件:
const express = require('express')
const next = require('next')
const bodyParser = require('body-parser')
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
app.prepare().then(() => {
const server = express()
server.use(bodyParser.json())
//Redirect to main page
server.get(
[
'/product-tag/885-m2/?orderby=menu_order','/product-tag/885-m2/?orderby=price','/cutter/mwhzt-zvvit/mwhzt-zvvit-2.html?___store=default&___from_store=english','/sales/guest/form/'
],(req,res) => {
res.redirect(301,'/')
})
server.get('*',res) => {
return handle(req,res)
})
server.listen(3000,(err) => {
if (err) throw err
console.log('> Read on http://localhost:3000')
})
})
这是我的package.json脚本部分:
"scripts": {
"dev": "node --inspect server.js","build": "next build","start": "NODE_ENV=production node server.js",},
解决方法
网址通常不包含查询参数,即“?”之后的部分在请求中。试试这个吧。
server.get('*',(req,res) => {
const redirectUrls = [
'/product-tag/885-m2/?orderby=menu_order','/product-tag/885-m2/?orderby=price','/cutter/mwhzt-zvvit/mwhzt-zvvit-2.html?___store=default&___from_store=english','/sales/guest/form/'
];
if (redirectUrls.includes(req.url)) {
res.redirect(301,'/');
}
next();
})
还请确保您在上面写下
server.get('*',res) => {
return handle(req,res)
})
否则,代码将永远无法运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。