Javascript history.js+;谷歌

Javascript history.js+;谷歌,javascript,ajax,history.js,hashbang,Javascript,Ajax,History.js,Hashbang,让我们谈谈谷歌的AJAX爬行: 因为这是丑陋URL的一个很好的替代方案,所以我想知道一个特定的问题: 对于HTML5浏览器,如果加载了ajax内容,就会创建漂亮的URL,并且应该由google索引。对于非HTML5浏览器(例如IE9不支持history.pushState),使用旧的hashbang 那么谷歌看到的是哪个版本?谷歌看到重复内容有没有风险(一次是用漂亮的url,一次是用hashbang) 感谢您的任何想法。如果需要使用google为ajax页面编制索引,我们需要从服务器上为该页面提

让我们谈谈谷歌的AJAX爬行:

因为这是丑陋URL的一个很好的替代方案,所以我想知道一个特定的问题: 对于HTML5浏览器,如果加载了ajax内容,就会创建漂亮的URL,并且应该由google索引。对于非HTML5浏览器(例如IE9不支持history.pushState),使用旧的hashbang

那么谷歌看到的是哪个版本?谷歌看到重复内容有没有风险(一次是用漂亮的url,一次是用hashbang)


感谢您的任何想法。

如果需要使用google为ajax页面编制索引,我们需要从服务器上为该页面提供html快照

例如:xyz.com/page1#!姓名=约翰

谷歌爬虫找到了这个#!标识符和请求 这样,我们的服务器就可以为页面的html快照提供服务器

现在,当我们的URL被美化并附加上#时!ajax页面将被索引

对于URL中只添加了#的页面,google crawler获胜;我们无法看到通过ajax加载的内容,并且它不会被索引。所以不会有任何复制的可能性

我们还可以使用页面头部的link标记,rel cannonical url指向邮件url。请参阅以获取参考。

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>

对于启用JavaScript的客户端,hisotory.js会将此处理为AJAX请求,对于没有JavaScript的客户端,它会请求正常页面。

我建议对支持该API的浏览器(大约70%的浏览器)单独使用HTML5历史API,而对不支持该API的浏览器提供常规静态页面。这样,搜索引擎就不可能看到与完整规范静态URL不同的内容

$(document).on('click', '[data-history]', function(e){
    e.preventDefault();
    History.pushState($(this).data().history, this.title, this.href);
})