我正在使用react router v 2.8.1,我正在尝试为我的SPA设置404页面。我无法让它实际发送回404.我正在尝试这样做,所以谷歌不会为我索引该页面。
到目前为止,我已尝试设置catch all route以获取路由器中的任何未知路由 -
SetTitleMatchMode, 2 ; Makes the #IfWinActive name searching flexible
^d::Send {Home}{ShiftDown}{End}{Right}{ShiftUp}{Del} ; Generic response to ^d.
#IfWinActive, Gmail ; Gmail specific response
^d::Send {Home}{ShiftDown}{End}{Right}{ShiftUp}{Del} ; adapt this line for gmail
#IfWinActive ; End of Gmail's specific response to ^d
#IfWinActive, Excel ; Excel specific response.
^d::Send {Home}{ShiftDown}{End}{Right}{ShiftUp}{Del} ; adapt this line for Excel
#IfWinActive ; End of Excel's specific response to ^d
这适用于显示内容。通过谷歌搜索,我发现有些人使用 <Router>
...
<Route
path='*'
status={404}
getComponent={(location, cb) => {
require.ensure([], require => {
const component = require('./components/404/component.jsx').default;
cb(null, component);
});
}}/>
</Router>
,但我没有看到它为我做任何事情。有没有办法强制从反应路由器(2.8.1)返回404状态?谢谢!
答案 0 :(得分:2)
由于我没有使用服务器渲染/路由,因此无法获得404响应,至少我现在能够找到它。所以我的解决方案是只添加一个noIndex元标记,以防止谷歌索引它可能遇到的任何404页面。我使用Helmet js,所以在我的404组件中我只是这样做:
#import "UIImage+CategoryA.h"
@implementation UIImage (UIImage+CategoryB)
-(void)someMethod {
[self doThis]; // Can I do this?
}
这只是转换为:
<Helmet
title={'Not Found'}
meta={[
{name: 'ROBOTS', content: 'NOINDEX'}
]}
/>
这对我现在有用,我会留在这里,任何人都遇到同样的问题。除非有人解决这个问题,否则请提交答案。