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

时间:2016-05-19 21:21:50

标签: javascript angularjs html5 seo single-page-application

我看到了这样的一些问题(比如this one),但没有一个问题专门解决这个问题。

因此Google now supporting SPAsmost web browsers do HTML5 pushState

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

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

我想到了一些想法:

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

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

1 个答案:

答案 0 :(得分:3)

  

使用window.location重定向到正确的404页面。但是,我不是   确定谷歌是否会遵循它,并且已经不鼓励改变   网址。

您的假设不正确。如果您重定向到适当的404页面(或410),谷歌将非常好。谷歌将遵循它,并将非常满意这些信息。它想知道伪造的URL,以确保它们不会被包括在他们的排名中。他们会喜欢它!

作为提醒,虽然它不是执行重定向的首选方式,但Google接受并关注具有Refresh标记并且延迟设置为0的页面,因为在某些棘手的情况下,根本没有其他方法可以执行重定向。这是Blogger页面(由Google拥有)的推荐方法。

谷歌跟随。