react-router 如何使用 redirectLocation 或 301 或 302 状态
Posted
技术标签:
【中文标题】react-router 如何使用 redirectLocation 或 301 或 302 状态【英文标题】:react-router how do I use redirectLocation or the 301 or 302 status 【发布时间】:2016-09-20 04:17:19 【问题描述】:我们即将在 reactjs 中部署我们的网站,我们已经(重新)移动了一个 url,但将它合并到了我们的主页中,因此我们从 /[product]/menu
将其合并到 /[product]
。现在他们说我应该用 301 回复 /[product]/menu
并将其重定向到 /[product]
,我该如何完成这个以及其他一些页面?
如何使用 react-router 设置 301 重定向?我在哪里设置哪些页面需要重定向到其他页面?我现在有这样的设置:
app.get('*', (req, res) =>
// routes is our object of React routes defined above
match( routes, location: req.url , (err, redirectLocation, props) =>
console.log(redirectLocation);
if (err) // something went badly wrong, so 500 with a message
res.status(500).send(err.message);
// HERE: HOW DO I USE THIS?
else if (redirectLocation) // we matched a ReactRouter redirect, so redirect from the server
console.log('301/302 yeah!');
res.redirect(301, redirectLocation.pathname + redirectLocation.search);
...
我也用 reactjs 和 express。
编辑添加路由配置。
const routes =
path: '',
component: AppComponent,
childRoutes: [
path: '/products',
component: ProductsComponent,
name: 'products'
,
path: '/:slug',
component: ProductComponent,
name: 'product'
]
以防万一。在此处添加答案:
const routes =
path: '',
component: AppComponent,
childRoutes: [
path: '/products',
component: ProductsComponent,
name: 'products'
,
path: '/:slug',
component: ProductComponent,
name: 'product'
,
path: '/:product/menu', onEnter(nextState, replace) replace(`/$nextState.params.product`)
,
path: '/oldlink/:testId', onEnter(nextState, replace) replace(pathname: `http://newsite.com/oldlink/some/$nextState.params.testId`)
]
【问题讨论】:
【参考方案1】:在路由声明中,使用<Redirect>
。 Example Here
【讨论】:
谢谢!如果我有这个设置,我该如何将它翻译成你给出的那个例子?更新了我的问题以反映我的路线配置。 我可以看到您发布解决方案。干得好! 谢谢!再次快速提问。我如何做一个绝对路径?当我在替换上写绝对路径时,它说Warning: A path must be pathname + search + hash only, not a fully qualified URL like
。
抱歉已经问了。哈哈!找到了解决方案。更新问题以防万一有人碰到这个问题。
@index 请务必在重定向标记中包含 301 状态。默认为 302。例如 以上是关于react-router 如何使用 redirectLocation 或 301 或 302 状态的主要内容,如果未能解决你的问题,请参考以下文章
如何将 this.state 转移到 react-routes?