javascript - react 路由器2,返回404状态

标签 javascript reactjs react-router

我正在使用 React router v 2.8.1,并尝试为我的 SPA 设置 404 页面。我无法让它实际发回 404。我正在尝试执行此操作,以便 google 不会为我索引该页面。

到目前为止,我已尝试设置捕获所有路由以获取路由器内的任何未知路由 -

 <Router>
    ...

    <Route
        path='*'
        status={404}
        getComponent={(location, cb) => {
          require.ensure([], require => {
            const component = require('./components/404/component.jsx').default;

            cb(null, component);
          });
        }}/>
   </Router>

这对于显示内容来说效果很好。通过谷歌搜索,我发现有些人使用 status={404},但我没有看到它为我做任何事情。有没有办法强制从 react 路由器(2.8.1)返回 404 状态?谢谢!

最佳答案

由于我没有使用服务器渲染/路由,因此实际上不可能获得 404 响应,至少从我现在可以找到的情况来看是这样。所以我的解决方案是添加一个 noIndex 元标记,以防止谷歌索引它可能遇到的任何 404 页面。我使用 Helmet js,所以在我的 404 组件中我只是这样做:

<Helmet
    title={'Not Found'}
    meta={[
      {name: 'ROBOTS', content: 'NOINDEX'}
    ]}
  />

这只是翻译为:

<meta name="ROBOTS" content="NOINDEX">

这目前对我有用,我将把它留在这里,以防有人遇到同样的问题。除非有人解决这个问题,在这种情况下请提交答案。

关于javascript - react 路由器2,返回404状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46434106/

相关文章:

javascript - 将 Protractor 与 PhantomJS 一起使用

javascript - 表单提交仅在第二次点击时提交,需要在 ES6 中回调

javascript - react 类没有被导出,我不明白为什么?

reactjs - 使用 react 路由器重定向后重新渲染组件

javascript - 从 Vuex Store 中的 action 中推送路由

javascript - d3 DOM 中心点平移/缩放已关闭

reactjs - 详尽的 deps 规则无法将自定义钩子(Hook)的结果识别为 React 引用

javascript - 为什么 this.props.children.map 不起作用?

reactjs - React.Children.only 预计在 React Router v4 中接收单个 React 元素子元素

javascript - 通过更新 $scope 模型更正条目后清除 Angular 形式验证