我以 root 身份使用 react router,“/”下的所有请求都指向 react router。当 react router 发现 url 与任何定义的组件都不匹配时,它会使用 NoMatch 组件进行渲染。问题来了,NoMatch 被渲染,这就是我想要的,但状态代码仍然是 200 而不是 404。当我的 css 或 js 文件被放置在错误的 url 响应路由器做同样的事情时,它响应 200 !然后页面告诉我我的资源内容类型有问题!
那么,我如何使用 react router 来处理“/”中的所有内容并仍然正确处理 404 错误(以 404 状态代码响应)?
react-router中的代码
render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<IndexRoute component={Index}/>
<Route path="archived" component={App}>
<IndexRoute component={ArchivedPage}/>
<Route path="project/:projectId" component={ArchivedDetailPage}/>
</Route>
<Route path="*" component={NoMatch}/>
</Route>
</Router>
), document.getElementById('app'));
服务器端
router.use('/', function(req, res, next) {
res.render('index-react', {
title: 'some title'
});
});