当前位置: 首页 > 知识库问答 >
问题:

发送404状态并重定向到react路由器中的404组件

蒙胤
2023-03-14

我有一个反应路由器3.0。0安装程序,其中包含我显示为后备的NotFound组件:

<Route component={NotFound} path="*"/>

然而,这会返回一个重定向,谷歌爬虫正在抱怨软404。我是否可以重定向到我的NotFound组件并发送404,例如与Github类似?我在这里尝试了以下建议:如何让react路由器响应404状态码?

<Route component={NotFound} path="*" status={404}/>

但这只是给了我一个404,没有显示组件。

如何做到以上几点?

共有1个答案

孔和风
2023-03-14

为了结束这个循环,我不想走服务器端渲染路线,所以我在全局错误处理程序中间件中实现了以下内容:

     if (err.name === 'UnauthorizedError') {
        res.status(401).send(prepareErrorResponse(isXhr, 'Acess Denied'));
      } else if (err.status === 404) {
       res.status(404).send(prepareErrorResponse(isXhr, 'Not Found'));
       if (req.accepts('html')) {
         // Respond with html page.
         fs.readFile(__dirname + '/../404.html'), 'utf-8', function(err, page) {
           res.writeHead(404, {'Content-Type': 'text/html'});
           res.write(page);
           res.end();
         });
       } else {
         if (req.accepts('json')) {
           // Respond with json.
           res.status(404).send({ error: 'Not found' });
         } else {
           // Default to plain-text. send()
           res.status(404).type('txt').send('Not found');
         }
       }
     }

基本上,我不是在客户机上显示NotFound组件(使用软404),而是直接从服务器提供NotFound页面(使用404状态)。

 类似资料:
  • 我使用反应路由器作为根和"/"下的所有请求都指向反应路由器。并且当响应路由器发现url与任何定义的组件不匹配时,它将呈现NoMatch组件。问题来了,NoMatch被渲染了,这就是我想要的,但是状态代码仍然是200而不是404。当我的css或js文件被放置在一个错误的url反应路由器做同样的事情,它的反应200!然后页面告诉我,我的资源内容类型有一些问题! 那么,我如何使用react router

  • 我一直试图做一个简单的重定向到按钮点击的另一个组件,但由于某种原因,它不起作用。我想重定向到/dashboard并从登录显示AdminServices,如下所示: //索引。js //应用程序。js //登录。js //管理服务。js

  • 我在TYPO3 v10中为我的robots.txt使用静态文本路由(默认为. htaccess文件)。文本按预期传递,但标头中的StatusCode为404。我不知道如何解决这个问题,因为静态文本路由中没有设置状态代码的选项。 这是我的路线代码(如文档中所述:https://docs.typo3.org/m/typo3/reference-coreapi/10.4/en-us/ApiOvervie

  • 我遇到了以下情况: 我有一个反应路由器包装反应组件呈现3路由: 如果路由匹配/about,则将用户重定向到/about-new。 如果匹配路由,则显示关联组件。 如果请求的路由不存在,重定向用户到/404。 见现场示例。 我发现,当我点击链接导航到“关于”页面时,路线会变成 /404而不是“/关于新”,当我点击指向不存在路线的链接时,它会尝试导航到该路线而不是“/404”。 React路由器的预期

  • 所以我面临的问题是,当我点击Hover Books组件中的链接进入一个新页面时,我可以在其中呈现图书状态,但当我按下它时,什么也没有发生。我知道错误可能在哪里(路由)。如果你能帮我修好它,我将不胜感激。谢谢

  • 我意识到以前有人问过我这个问题,请容忍我,因为我还在学习这个问题。我想我已经尝试了所有的解决方案,但是没有运气。 问题是:当重定向到时,它没有呈现预期的组件() 我已经实现了一个,如下所示; privaterout.js 这就是我使用它的地方; index.js 在这个问题中要补充几点: 我确认重定向确实发生在(我通过将