gpt4 book ai didi

javascript - Google 没有正确缓存我的 AJAX 可抓取应用程序?

转载 作者:太空狗 更新时间:2023-10-29 15:17:15 24 4
gpt4 key购买 nike

我使用 durandal 2.0 编写了一个 SPA,我使用 HTML5 pushstate 进行导航更改。我已经根据谷歌规范设置了所有内容。我不包括 hashabangs/#!在我的网址中,我使用的是元片段标记。

<meta name="fragment" content="!">

我正在使用 headless 浏览器 phantom JS 来为 google bot 提供我的 AJAX 应用程序的完全呈现的 HTML。在 MVC 中,我正在检测 ?_escaped_fragment_= 并执行 302 重定向到为完全呈现的 HTML 提供服务的 URL。该部分工作正常,要对其进行测试,请导航至此处:https://insureflo.com/?_escaped_fragment_=你会看到我网站的重定向和完全呈现的 HTML 内容 https://insureflo.com .

我有一个站点地图,其中包含我的所有 URL,包括根目录。尽管如此,谷歌仍然无法正确缓存或抓取我的应用程序,并且仍然显示该应用程序的加载页面。我的印象是您可以使用 pushstate 并依靠 meta fragment meta 标记供 google 解析,并自动在 URL 中包含 escaped_fragment。

但是,在网站管理员工具中作为 googlebot 获取时,我得到以下响应:

 HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: /HtmlSnapshot?url=https%3A%2F%2Finsureflo.com%2F%23
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sun, 08 Sep 2013 06:59:28 GMT
Connection: close
Content-Length: 168

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/HtmlSnapshot?url=https%3A%2F%2Finsureflo.com%2F%23">here</a>.</h2>
</body></html>

我相信根据规范,这个 302 是正确的,但为什么它不索引重定向的内容并在站点的 HTMl View 和图像预览中显示它?此外,在谷歌搜索结果中查看缓存时,我得到一个空白页面,并查看呈现常规页面的源代码,而不是预期的完全呈现的 HTML。例如:

http://webcache.googleusercontent.com/search?q=cache:https://insureflo.com

至此,我已经阅读并阅读了规范,我相信我已经满足了爬取 AJAX 应用程序的要求,并且真的需要一些帮助来解决这个问题。我在这里错过了什么吗?谢谢!

最佳答案

我在尝试做同样的事情时发现了很多事情。

  1. 网站管理员工具中的 Fetch as Google 会告诉您存在重定向但不会跟随它。

  2. 要使 Google Bot 在抓取过程中真正遵循重定向,您必须在网站站长工具中也有被重定向到的网站。

  3. 如果您希望 Google 从站点地图抓取您的站点并执行 _escaped_fragment_,则站点地图中的链接必须采用以下格式:

    http://yourlink.com/#!/stuff

我的博客上有更详细的文章

http://mark.stratmann.me/articles/the-great-ajax-seo-saga

关于javascript - Google 没有正确缓存我的 AJAX 可抓取应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18710601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com