一尘不染

如何从SPA返回HTTP 404状态代码?

angularjs

我看到了一些类似的问题(像这样),但是没有一个问题专门解决这个问题。

因此,Google 现在支持SPA,并且大多数网络浏览器都支持HTML5
pushState

我的AngularJS(但可能是任何JS东西)网站都使用URL来确定API路由。然后执行API调用,然后相应地呈现内容。

但是,由于 每个URL都 返回HTTP 200状态代码(包括example.com/get-free-
viagra),因此Google现在将此站点标记为“被黑客入侵”。公平,但是如何返回404?或者至少告知Google这是一个找不到页面?他们似乎没有提供这些信息,我非常担心SEO。

我想到了一些想法:

  • 弃用我当前的设置(我正在使用AWS S3托管静态网站),而改为使用expressJS框,以及一个执行API调用并在需要时返回404的中间件。但是,我不喜欢这种方法,因为它会影响性能(每个前端请求两次API调用)。
  • 使用window.location重定向到一个适当的404页。但是,我不确定Google是否会遵循它,并且已经不建议更改URL。
  • rel="nofollow"在未找到的页面上使用,但我觉得这还不够。

我现在很沮丧地倾向于第一选择。


阅读 152

收藏
2020-07-04

共1个答案

一尘不染

使用window.location重定向到正确的404页面。但是,我不确定Google是否会遵循它,并且已经不建议更改URL。

您的假设不正确。如果您重定向到适当的404页面(或410),则Google会很好。Google将会关注该信息,并将对此信息感到非常满意。它想知道虚假URL,以确保这些URL不会包含在其排名中。他们会喜欢的!

提醒您,尽管这不是执行重定向的首选方法,但Google接受并跟踪具有Refresh标签并将其延迟设置为0的页面,因为在某些棘手的情况下,根本没有其他方法可以执行重定向。对于Blogger页面(由Google拥有),建议使用此方法。

谷歌跟随。

2020-07-04