当路由不匹配时,有没有办法在角度 5 中设置 404 http 标头?

Posted

技术标签:

【中文标题】当路由不匹配时,有没有办法在角度 5 中设置 404 http 标头?【英文标题】:Is there a way to set 404 http header in angular 5 when route not matched? 【发布时间】:2018-07-03 02:32:16 【问题描述】:

当没有路由匹配我的数组时,我想在当前页面上设置一个标题 404。

否则,我认为这将是 SEO 中的一个问题,并且未知页面也会被添加到搜索引擎中。

【问题讨论】:

您的应用使用什么服务器? IIS? 不,它的 apache。 【参考方案1】:

Angular 有一个路由路径 - **,如果没有匹配的路由,它将被访问。您可以使用此路径显示404 error page 组件。

 path: '**', component: Error404Component 

【讨论】:

这仍然在 http 标头中返回 200(所以它只是一个“软 404”) 这会返回 200,因为找到了 Error404Component。您无法收到错误 404,因为 javascript 适用于路由,而不适用于服务器 完全有可能让 404 页面返回 http 404。这需要从后端向 js 注入信息。示例:blog.thecodecampus.de/…、github.com/angular/universal/issues/667 -1 因为该问题询问的是 http headers 并且被明确标记为“http-status-code-404”。你的回答没有解决这个问题。正如提问者所说,您确实需要为 404 页面返回 404,否则爬虫/扫描仪会被您的网站混淆。 第一次出现的问题是另一个问题。第二个答案也表明了这一点。已编辑某些内容,但未保存历史记录。比较问题的答案,它们不再匹配了【参考方案2】:

您可以这样做,在您的 rout.ts 文件中添加以下内容并创建 notfoundComponent

 path: '404', component: NotFoundComponent,
 path: '**', redirectTo: '/404'

or you can do directly 

 path: '**', component: NotFoundComponent

【讨论】:

以上是关于当路由不匹配时,有没有办法在角度 5 中设置 404 http 标头?的主要内容,如果未能解决你的问题,请参考以下文章

Windows系统中设置默认路由的作用是啥?

如何在jdbc中设置锁定超时

有没有办法在 useEffect 的反应组件中设置 xstate 机器的状态?

如何在 Nuxt 配置中设置 .env 文件路径?

有没有办法在 .then() 块中设置数组的状态?

如何在 MVC 中设置默认路由(到某个区域)