Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React路由器-在组件中有条件地返回404_Reactjs_React Redux_React Router_React Router V4_React Router Dom - Fatal编程技术网

Reactjs React路由器-在组件中有条件地返回404

Reactjs React路由器-在组件中有条件地返回404,reactjs,react-redux,react-router,react-router-v4,react-router-dom,Reactjs,React Redux,React Router,React Router V4,React Router Dom,以下是路由设置: <Route path="/" component={App}> <IndexRoute component={Home}/> <Route path="/:subject" component={SubjectPage}/> <Route path="*" component={NotFound} /> </Route> 因此,每个subject参数都将转到SubjectPage组件,在该组件中,我

以下是路由设置:

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

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


但这里的问题是,不管怎样,web服务器都会返回成功代码200。这对搜索引擎优化不好。我在这里应该怎么做才能使服务器返回无效主题的成功代码404?

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


请参阅设置服务器端渲染并了解如何使用404状态为NotFound提供服务

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