Javascript Spiderable软件包如何与Meteor一起工作?

Javascript Spiderable软件包如何与Meteor一起工作?,javascript,search-engine,meteor,google-webmaster-tools,Javascript,Search Engine,Meteor,Google Webmaster Tools,我已经将该软件包添加到我的Meteor应用程序中,当使用url中的?\u转义\u片段\=请求时,会返回该页面的html版本,但我无法让谷歌抓取该网站 细节 在中使用和请求根页面时“http://example.com/“返回的页面是javascript版本;比如: HTTP/1.1 200 OK content-type: text/html; charset=utf-8 date: Fri, 30 Nov 2012 05:39:36 GMT connection: Keep-alive tra

我已经将该软件包添加到我的Meteor应用程序中,当使用url中的
?\u转义\u片段\=
请求时,会返回该页面的html版本,但我无法让谷歌抓取该网站

细节 在中使用和请求根页面时
“http://example.com/“
返回的页面是javascript版本;比如:

HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
date: Fri, 30 Nov 2012 05:39:36 GMT
connection: Keep-alive
transfer-encoding: chunked

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="/e83157bdc4ff057fa3a20b82af4c11b4ebe776e7.css">
    <script type="text/javascript">
      __meteor_runtime_config__ = {"ROOT_URL":"http://www.example.com","DEFAULT_DDP_ENDPOINT":"https://www-example-com-ddp.meteor.com/"};
    </script>
    <script type="text/javascript" src="/13cf3d21ce1c4a88407ca5f3c250f186ab1738f9.js"></script>
    <meta name="fragment" content="!">
    <title>example.com</title>
  </head>
<body>
</body>
</html>
问题
  • 你如何告诉谷歌将
    ?\u转义的\u片段\u=
    添加到url,以便它呈现html版本

  • 如果url没有hashbang(!#),Google还会在url中添加
    ?\u转义\u片段=
    ?i、 e.
    /home
    /products/1
    而不是
    /#主页
    /#产品/1

  • 你如何让谷歌跟踪链接页面?并附加
    ?\u转义的\u片段
    ?页面的所有js版本的标题中都有
    。我以为这就是所需要的一切

似乎最简单的解决方案是更新可插拔包以将html版本返回到Google Bot,而不是要求
?\u expaired\u fragment\u=
,但如果这对其他人有效,我很好奇,我做错了什么

附加信息 是允许web搜索引擎索引Meteor应用程序的临时解决方案

根据报告,它做了几件事:

  • 它将以下标记添加到页面js版本的
    标题
    部分:

  • 当满足以下任一条件时,使用它解析javascript应用程序并返回html版本:

    a。请求的用户代理是
    “facebookexternalhit”

    b。请求的url包含字符串
    ?\u转义\u片段\u=


  • 没有以
    #开头的哈希片段的任何页面,如家庭,需要:

     <meta name="fragment" content="!">
    
    
    
    通知爬虫获取丑陋的url(带有_expected\u fragment的
    )。显然,它进入了
    部分

    更新:我注意到,根据你问题末尾给出的插件描述,上面添加了meta标记,你可以通过显示源代码来检查它是否包含在你的页面中

    通常,除主页外的所有其他页面都应该有类似于
    www.yoursite.com/#!hashfragment
    位于漂亮的URL中,其中
    #
    )之后的code>作为爬虫程序的通知程序工作,因此您不需要包含上面提到的meta标记。

    我认为这是一个“谷歌站长工具”错误

    谷歌似乎确实在抓取这个网站——这些页面显示在谷歌的搜索结果中。然而,谷歌网站管理员工具仍然将索引页面总数列为1。然而,Bing仍然没有抓取页面

    编辑: 它是谷歌网站管理员工具,页面列为

    未选择:由于与其他页面基本相似而未编制索引的页面,或已重定向到其他URL的页面

    EDIT2:回答Jonatan的问题:

    如果url没有hashbang(!#),Google还会在url中添加
    ?\u转义\u片段=
    ? 对。我的应用程序在URL中不使用hashbang(!#)。而谷歌机器人在爬行时仍然会附加
    ?\u转义的\u片段
    。下面是一个日志示例:

    INFO HIT /url/2/01 66.249.72.42
    INFO HIT /url/2/01?_escaped_fragment_= 66.249.72.142
    INFO HIT /url/2/01 108.162.222.82
    INFO HIT /url/2/01?_escaped_fragment_= 108.162.222.82
    INFO HIT /url/2/05 108.162.222.82
    INFO HIT /url/2/05?_escaped_fragment_= 108.162.222.214
    

    谷歌机器人似乎会尝试使用带有和不带
    ?\u转义\u片段\u=
    的url。我知道这个问题已经得到了回答,但是对于从谷歌来回答这个问题的人来说。我想包括这个主题的视频

    这有助于我理解流星蜘蛛包。

    更多信息请点击此处:感谢您的链接。你所提到的一切都是正确的。我现在相信谷歌正在抓取这个网站,但是结果并没有出现在网站管理员工具中。你的问题包含的问题比这个答案更多。为什么它被标记为正确的?你能加上其他答案吗?特别是,我正在寻找
    的答案,如果url没有hashbang(!)?
    @JonatanLittke我已经更新了答案,谷歌还会在url中添加?_转义片段吗。有趣的是,Google bot将首先尝试不带
    ?\u转义\u片段\u
    的url,然后使用它。谢谢!我想这可能是因为片段元标记。当然,我不认为他们在其他网站上都这样做。那么为什么你需要
    ?\u转义\u片段=
    ?如果没有它,html不会在
    curl
    @Chet的响应中呈现,spiderable包仅在url中存在
    ?\u转义\u片段时发送呈现的html。呈现HTML是一个缓慢的过程,因此它不会对每个请求都这样做,只有那些无法在客户端呈现javascript的请求才会这样做。这是否回答了你的问题?是否有其他链接?那个人死了,用他们的网站搜索。。。
    
    INFO HIT /url/2/01 66.249.72.42
    INFO HIT /url/2/01?_escaped_fragment_= 66.249.72.142
    INFO HIT /url/2/01 108.162.222.82
    INFO HIT /url/2/01?_escaped_fragment_= 108.162.222.82
    INFO HIT /url/2/05 108.162.222.82
    INFO HIT /url/2/05?_escaped_fragment_= 108.162.222.214