我在很多SO帖子中发现,为了在Express 4中重写URL,我会做类似以下的事情:
router.use('/one/:someId', (req, res, next) => {
req.url = `/two/${req.params.someId}`;
next();
});
router.get('/one/:someId', (req, res) => {
res.send("reached /one/:someId");
});
router.get('/two/:someId', (req, res) => {
res.send("reached /two/:someId");
});
但是当我尝试这个时,不仅URL不会改变为我预期的“/ two / 某个整数”而且仍然是“/ one / 某个整数 “但它会进入我在我的应用文件中设置的404 - Not Found页面。
此路由位于路由器文件中,我也尝试将URL设置为:
req.url = `/routerPath/two/${req.params.someId}`;
但结果完全一样。
那么我还能错过什么?
谢谢。
答案 0 :(得分:0)
您必须区分两种重定向:
只需致电res.redirect
,确保对特殊字符进行编码:
router.get('/one/:someId', (req, res) => {
res.redirect(`/two/${encodeURIComponent(req.params.someId)}`);
});
router.get('/two/:someId', (req, res) => {
res.render("reached /two/:someId");
});