Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google没有正确缓存我的AJAX可爬行应用程序?_Javascript_Jquery_Html_Ajax_Seo - Fatal编程技术网

Javascript Google没有正确缓存我的AJAX可爬行应用程序?

Javascript Google没有正确缓存我的AJAX可爬行应用程序?,javascript,jquery,html,ajax,seo,Javascript,Jquery,Html,Ajax,Seo,我使用durandal 2.0编写了一个SPA,并使用HTML5 pushstate修改了我的导航。我已经按照谷歌的规格设置好了一切。我不包括哈沙邦!在我的URL中,我使用的是meta-fragment标记 <meta name="fragment" content="!"> 我正在使用无头浏览器phantom JS为google bot提供AJAX应用程序的完整呈现HTML。在MVC中,我检测到?\u转义\u片段并执行302重定向到为完全呈现的HTML提供服务的URL。这部分

我使用durandal 2.0编写了一个SPA,并使用HTML5 pushstate修改了我的导航。我已经按照谷歌的规格设置好了一切。我不包括哈沙邦!在我的URL中,我使用的是meta-fragment标记

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

我正在使用无头浏览器phantom JS为google bot提供AJAX应用程序的完整呈现HTML。在MVC中,我检测到?\u转义\u片段并执行302重定向到为完全呈现的HTML提供服务的URL。这部分工作正常,为了测试这一点,请导航到这里:您将看到重定向,以及我的站点的完整呈现的HTML内容

我有一个站点地图,其中包含我所有的URL,包括根。尽管如此,谷歌仍然不会正确缓存或抓取我的应用程序,并且仍然会显示应用程序的加载页面。我的印象是,您可以使用pushstate并依靠meta-fragment meta标记让google解析,并自动将转义的_片段包含在URL中

然而,在网站管理员工具中以谷歌机器人的身份获取信息,我得到了以下回应:

 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>
找到HTTP/1.1 302 缓存控制:专用 内容类型:text/html;字符集=utf-8 位置:/HtmlSnapshot?url=https%3A%2F%2fsureflo.com%2F%23 服务器:Microsoft IIS/8.0 X-AspNetMvc-Version:4.0 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 日期:2013年9月8日星期日06:59:28 GMT 连接:关闭 内容长度:168 移动的对象 对象移动到。 这个302是正确的,我相信根据规范,但为什么它不索引重定向的内容,并显示在HTMl视图和网站的图像预览??此外,在谷歌搜索结果中查看缓存时,我会看到一个空白页面,查看源代码时呈现的是常规页面,而不是预期的完全呈现的HTML。例如:


目前,我已经阅读并阅读了规范,我相信我已经满足了对AJAX应用程序进行爬网的要求,我真的需要一些帮助来解决这个问题。我是不是遗漏了什么?谢谢大家!

今天,我以谷歌的身份让网站正确地显示在fetch中。如果其他人遇到这种情况,谷歌不喜欢被重定向不止一次,因此,当你检测到转义的_fragment uu查询字符串时,在MVC中,在我的情况下,你需要在该页面上呈现内容,重定向到带有302的HTML快照页面可能会在我的经验中引起问题。因此,我只是在主控制器方法中检测它,如果检测到查询字符串,则呈现快照内容。希望这对其他人有帮助


另一个注意事项是确保元片段不存在于HTML快照中,我已经犯了这个错误。

在尝试做相同的事情时,我发现了许多事情

  • 网站管理员工具中的fetchas-Google会告诉你有一个重定向,但不会跟随它

  • 为了让GoogleBot在爬网过程中真正遵循重定向,您必须在网站管理员工具中拥有被重定向到的站点

  • 如果您希望Google从站点地图抓取您的站点并执行_转义_片段u,则站点地图中的链接必须采用以下格式:

  • 我在我的博客上有一篇更详细的文章


    嘿!!,我和你一步一步地遇到同样的问题:)。我甚至使用Durandal+pushstate。我将尝试返回没有重定向的html,看看这是否可以解决问题,但是。。。在快照中包含meta标记有什么问题?