在我问我的问题之前,这是一个元问题:我可以在这里发布这个问题吗?这是关于最佳实践,但问题是相当具体的。我没有看到更好的StackExchange网站问这个问题。
我即将开始开发一种单页网站。它将包括文章等的集合视图以及所述文章的更详细视图,这些文章将以叠加方式异步加载。因此,这不是一个真正的异步单页网站,我不会使用角度或排序,但为了简单起见,我将其称为单页网站。
新出现的问题是该网站将严重依赖社交媒体共享,并且需要由搜索引擎抓取工具正确编入索引。
毋庸置疑,当我在异步加载的叠加层中阅读有趣的文章时,我决定在社交网络上复制粘贴网址(这将是http://www.onepagesite.com);东西不起作用。
我正在寻找转义网址的部分,以便可以链接覆盖页面。在浏览第1条叠加层时,会将客户端网址重写为http://www.onepagesite.com/#!article/1
然而,现在抓取成为一个问题,因为机器人(Facebook,谷歌等)不执行js而不等待加载异步内容。
他们执行拥有唯一的用户代理。因此,一种解决方案是嗅探用户代理并为机器人提供与人类客户端不同的html文件。
我能想到的另一个解决方案是使URL成为应用程序的实际状态,由以下示例解释:
此解决方案要求后端的工厂/页面呈现部分的工作方式与客户端javascript重写URL的方式完全相同。
现在这就是我作为一页网站的绝对新手,可以看作是一种可能的解决方案。
所以这是我的问题:
我仍在布置我的项目的总体结构,所以我仍然相当灵活&因此问题
答案 0 :(得分:2)
您正在寻找的是使ajax可抓取。幸运的是,Google has figured this out for you。
简短版本是你使用像你所示的哈希爆炸片段(#!article/1
),当爬行机器人询问你时(使用#!
之后的部分作为查询参数名为__escaped_fragment
)并返回相关内容。链接中的详细信息。
他们给出的示例都有key=value
样式片段,例如:
http://example.com#!article=21
......机器人要求这样:
http://example.com?_escaped_fragment_=article=21
...然后将文章的内容返回到机器人。