2017-09-26 7 views
0

私はreact router v 2.8.1を使用しています。自分のSPA用に私の404ページを設定しようとしています。私は404を実際に送り返すのが難しいです。私はこれをやろうとしているので、Googleはそのページのインデックスを作成しません。react router 2、return 404 status

はこれまでのところ、私はキャッチを設定し、私のルータ内部の任意の未知のルートを取得するには、すべてのルートを試してみました -

<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}を使っている人がいくつか見つかりましたが、私には何もしていません。反応ルータ(2.8.1)から404ステータスを強制的に戻す方法はありますか?ありがとう!

+0

v4にアップグレードし、クライアントとサーバーの両方のルータを設定する必要があります。https://reacttraining.com/react-router/web/guides/server-rendering/404-401-or-any-other-status –

+0

@ AdamAzadサーバーのレンダリングがないので、私はかなり制限されています。私はこのバージョンに固執しています。 – ajmajmajma

+0

クライアント側から404をトリガーすることはできません - サーバーから来る必要があります –

答えて

2

私はサーバレンダリング/ルーティングを使用していないので、私が今すぐ見つけられるものから少なくとも404応答を得ることは本当に可能ではありません。だから、私の解決策は、noogleインデックスを追加するだけです。これにより、googleが404ページのインデックスを作成するのを防ぐことができます。私はヘルメットJSを使用するので、私の404のコンポーネントには、私はちょうど行いますちょうどに変換

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

:誰もが横切る包み

<meta name="ROBOTS" content="NOINDEX"> 
これが今の私の作品

、私はここにそれを残します同じ問題。誰かがこれを解決しない限り、答えを提出してください。

+0

静的リソースパスに注意してください。ブラウザは依然として 'text/css'' javascript/application'として応答を解析しますが、コンテンツはHTMLであり、これはコンソールでエラーを引き起こします。ハッピーコーディング –