当前位置: 首页 > 面试题库 >

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

空枫涟
2023-03-14
问题内容

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

因此,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"在未找到的页面上使用,但我觉得这还不够。

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


问题答案:

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

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

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

谷歌跟随。



 类似资料:
  • 我正在尝试使用BitBucket GIT存储库设置Jenkins,但Jenkins控制台总是给我以下错误代码: 我尝试过很多不同的方法,但总是失败。我的服务器上允许9418端口上的通信量。服务器处于1 Gbps连接上。

  • 我试图让ApacheHttpClient触发HTTP请求,然后显示HTTP响应代码(200404500等)以及HTTP响应正文(文本字符串)。需要注意的是,我使用的是因为大多数HttpClient示例都来自和API从版本3到版本4发生了巨大变化。 不幸的是,我只能让HttpClient返回状态代码或响应主体(但不是两者)。 这是我所拥有的: 所以我问:使用库,如何从同一

  • 我试图为web api控制器中的GET方法返回一个状态代码304 not modified。 我成功的唯一方法是这样的: 这里的问题是,它并不是一个例外,它只是没有被修改,所以客户端缓存是可以的。我还希望返回类型为User(正如所有web api示例使用GET显示的那样),而不是返回HttpResponseMessage或类似的内容。

  • 我正在处理WebAPI 2中的一个服务,endpoint当前返回一个<code>IHttpActionResult<code>。我想返回一个状态代码,但由于它不在枚举中,我不知道如何发送它,因为所有构造函数都需要一个参数 目前,我正在返回<code>BadResult(消息),但返回<code>422

  • 问题内容: 在服务器端,我只是将json-as-dictionary打印到控制台 现在,每当我通过ajax发出发布请求时,控制台都会打印出包含我所需内容的字典。 在客户端,我一直在尝试使用各种方法来基于成功的ajax调用执行一些jquery。我只是意识到这可能是服务器端的错误,即我没有发送任何请求标头来告诉jquery其ajax调用成功。 那么,如何将OK状态发送回给客户以告诉一切一切正常? 为了

  • 当我使用MVC控制器时,我使用“返回OK(对象)”或“返回BadRequest(ErrorMessage)”等。 我怎样才能实现这是剃刀页? 我尝试返回新的JSON result(object);这在状态代码为200时有效。但是如果我想返回带有JSON错误消息的状态代码400呢?