我正在与next.js和Reactjs一起使用一个项目,该项目使用许多不同的语言。因此,我需要更改语言网址。示例:
www.example.com/es/entradas
www.example.com/en/tickets
www.example.com/de/eintrittskarten
创建路线时,我看到有一个模块可以帮助我:下一路线
有很多网址,并且我正在使用CMS,因此我的客户将能够添加更多内容,因此路由不会被编码。我想像这样通过查询传递网址:
const routes = require('next-routes');
module.exports = routes()
.add('index', '/:lang?')
.add('tickets', '/:lang?/:ticket')
.add('hotel', '/:lang?/:hotel');
令我惊讶的是(如您所见),这是行不通的,因为路线没有看到最后两条路线之间的差异。如果我写:
www.example.com/en/tickets
它将正确进入我的页面“门票”,但是如果我写
www.example.com/en/hotel
它将再次转到我的“机票”页面,而不是“酒店”
您知道我该怎么做吗?
在我的项目中,我具有以下与路线相关的文件:
server.js
const next = require('next');
const { createServer } = require('http');
const routes = require('./routes');
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dir: './src/shared', dev });
const handle = routes.getRequestHandler(app);
app.prepare()
.then(() => {
createServer(handle)
.listen(3001, (err) => {
if (err) throw err;
console.log("> Ready on http://localhost:3001");
});
});
routes.js
const routes = require('next-routes');
module.exports = routes()
.add('index', '/:lang?')
.add('tickets', '/:lang?/:ticket')
.add('hotel', '/:lang?/:hotel');
答案 0 :(得分:0)
对2^64 - 2^52
的请求将转到“机票”路线,因为它实际上与之匹配。
这是因为路线中“机票”一词前的/en/hotel
。 :
会将路线的一部分变成具有该名称的参数。
因此,您可能想要的是:
: