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

标签 javascript angularjs html seo single-page-application

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

所以谷歌是now supporting SPAsmost 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/

相关文章:

javascript - 我如何在 javascript 中编写以下 php 代码?

javascript - 有没有办法缩短多个 .next()?

javascript - Angular.js 服务

javascript - AngularJS ui 路由器 $stateChangeStart 带有 promise 无限循环

javascript - 为什么 ng-href 在解析地理字符串时表现奇怪

html - 将旧内容(.html/.php 等)重新路由到 Ruby on Rails

javascript - Kogrid:网格的最后一列仅部分可见

javascript - 浏览器导航未在 Vue.js 应用程序中加载组件

javascript - grunt build 出现 "Broken @import"错误?

php - 需要帮助将 html 表单内容转发到公共(public) http 服务