【问题标题】:React Router - Returning 404 Conditionally In ComponentsReact Router - 在组件中有条件地返回 404
【发布时间】:2019-03-22 17:57:28
【问题描述】:

这是路线设置:

<Route path="/" component={App}>
  <IndexRoute component={Home}/>
  <Route path="/:subject" component={SubjectPage}/>
  <Route path="*" component={NotFound} />
</Route>

因此,每个主题参数都将转到 SubjectPage 组件,在该组件中,我检查预定义的“有效”主题数组,以决定是否应呈现页面。如果主题不在数组中,那么我将重定向到错误页面。

但这里的问题是 Web 服务器无论如何都会返回成功代码 200。这对 SEO 不利。这里应该怎么做才能让服务器返回无效主题的成功码404?

【问题讨论】:

  • 你是如何重定向的?您可以在服务器上提供与通配符分开的错误页面并返回 404
  • 只是通过使用 browserHistory... 我想我的意思是转发。从用户的角度来看,他们不会知道,但状态是 202
  • 那么不要使用浏览器历史记录.. 使用window.location = '/not_found 或任何你想发回 404 的东西

标签: reactjs react-redux react-router react-router-v4 react-router-dom


【解决方案1】:

无法在您的客户端更新标头(例如从 200 到 404 的状态代码)。您必须在后端执行此操作。这意味着您需要服务器端渲染 (SSR)

请参阅this tutorial 以设置服务器端渲染并了解如何使用 404 状态服务 NotFound

【讨论】:

  • 你不需要完整的 SSR。只需加载一个 404 页面就足够了
猜你喜欢
  • 2021-08-21
  • 2020-02-15
  • 1970-01-01
  • 2016-09-10
  • 2021-05-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 2022-01-12
相关资源
最近更新 更多