我看到了一些类似的问题(比如 this one ),但没有一个专门解决这个问题。
所以谷歌是now supporting SPAs和 most web browsers do HTML5 pushState .
我的 AngularJS(但可以是任何 JS 东西)网站正在使用 URL 来确定 API 路由。然后执行 API 调用,然后相应地呈现内容。
但是,由于 EVERY URL 返回 HTTP 200 状态代码(包括 example.com/get-free-viagra),Google 现在将此网站标记为“被黑客入侵”。公平,但我如何返回 404?或者至少通知谷歌这是一个未找到的页面?他们似乎没有提供该信息,我非常担心 SEO。
我想到了一些想法:
- 弃用我当前的设置(我正在使用 AWS S3 托管静态网站),并改用 expressJS 框,并使用一个中间件执行 API 调用并在需要时返回 404。但是,我不喜欢这种方法,因为它会损害性能(每个前端请求调用两次 API)。
- 使用
window.location
重定向到正确的 404 页面。但是,我不确定 Google 是否会遵循它,并且已经不鼓励更改 URL。 - 在未找到的页面上使用
rel="nofollow"
,但我觉得这还不够。
我现在很沮丧地倾向于第一个选项。
最佳答案
Use window.location to redirect to a proper 404 page. However, I'm not sure if Google will follow it and it's already discouraged to change the URL.
您的假设不正确。如果您重定向到正确的 404 页面(或 410),Google 会很好。谷歌将关注它,并对这些信息感到非常高兴。它想了解有关虚假 URL 的信息,以确保这些 URL 不会包含在其排名中。他们会喜欢的!
作为提醒,虽然这不是执行重定向的首选方式,但 Google 接受并跟踪具有刷新标签且其延迟设置为 0 的页面,因为在某些棘手的情况下,根本没有其他方法可以执行重定向。这是 Blogger 页面(由 Google 拥有)的推荐方法。
Google 紧随其后。
关于javascript - 如何从 SPA 返回 HTTP 404 状态代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37334220/