history.js + Google [关闭]
Posted
技术标签:
【中文标题】history.js + Google [关闭]【英文标题】:history.js + Google [closed] 【发布时间】:2012-11-24 07:40:35 【问题描述】:让我们谈谈 google 的 AJAX 爬虫:
由于history.js 是丑陋的hashbang 网址的一个很好的替代品,我想知道一个特定的问题: 对于 html5 浏览器,如果加载了 ajax-content 并且应该由 google 索引,则会创建漂亮的 url。对于非 HTML5 浏览器(例如 IE 9 不支持 history.pushState),使用旧的 hashbang。
那么 google 看到的是哪个版本?谷歌看到重复内容是否有任何风险(一次是漂亮的 url,一次是 hashbang)?
感谢您对此的任何想法。
【问题讨论】:
【参考方案1】:我建议仅对支持该 API 的浏览器(大约 70% 的浏览器)使用 HTML5 History API,同时向不支持该 API 的浏览器提供常规静态页面。这样一来,搜索引擎就不可能看到与完整的规范静态 URL 不同的任何内容。
【讨论】:
【参考方案2】:HTML
<a href="http://some/other/page/1" data-history='"some":"data"' title="...">link1</a>
<a href="http://some/other/page/2" data-history='"some":"data"' title="...">link2</a>
$(document).on('click', '[data-history]', function(e)
e.preventDefault();
History.pushState($(this).data().history, this.title, this.href);
)
对于启用了 JavaScript 的客户端,hisotory.js 会处理这个 AJAX 请求,对于没有 JavaScript 的客户端,它会请求正常的页面。
【讨论】:
【参考方案3】:如果 ajax 页面需要通过 google 建立索引,我们需要从服务器提供页面的 html 快照。
例如:xyz.com/page1#!name=john
Google 抓取工具找到了这个 #!标识符和请求http://xyz.com/page1?_escaped_fragment_=name=john 这样我们的服务器就可以提供页面的 html 快照。
现在,当我们的 URL 被美化并附加 #! ajax 页面将被编入索引。
对于仅在 URL 中附加 # 的页面,谷歌爬虫将无法看到通过 ajax 加载的内容,并且不会被编入索引。所以不会有任何重复的可能
我们还可以在页面头部使用链接标签,其中 rel 规范 url 指向邮件 url。参考http://googlewebmastercentral.blogspot.in/2009/02/specify-your-canonical.html。
【讨论】:
以上是关于history.js + Google [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
./node_modules/history/esm/history.js Module not found: Can't resolve '@babel/runtime/helper
history.js 一个无刷新就可改变浏览器栏地址的插件(不依赖jquery)