我正在开发一个新网站,我想尽可能多地使用AJAX。基本上,我希望用户几乎不会离开主页,并在弹出窗口,滑块,部分等中显示所有内容。
现在我们现有的网站已经排名很高,所以我也希望Google保持高兴。我一直在阅读Google的Making AJAX Applications Crawlable,并了解我必须通过 _escaped_fragment _ 为抓取工具提供相同的内容。
问题
我想使用 Umbraco 开发此网站,该网站已经提供了SEO友好的网址。的即
但问题是我没有简单的方法来实现 _escaped_fragment _ 而不破解Umbraco核心(至少我的知识),并使用我在下面发布的解决方案(答案)也会让没有Javascript的用户高兴。双赢局面?你告诉我! =)
更新
昨天另一位用户(现已删除)的答案显示Google不再使用 _escaped_fragment _ 方法,并建议将其排除在外。这是真的? Google实际上会运行AJAX来查看内容吗?
谢谢你 马尔科
答案 0 :(得分:11)
我正在接受 @Daniel Pryden 评论的建议,并将其作为答案发布。
我考虑过这个问题并思考 - 为什么不以老式的方式创建网站,实际页面和所有内容,然后执行以下步骤。
window.location.pathname
之前添加哈希(#),从而触发hashchange事件。 (见第3步)window.location.pathname
。例如,Google会抓取http://www.domain.com/about-us.aspx,但当用户访问该网页时,会将其重定向到http://www.domain.com/#/about-us.aspx 这样,没有Javascript的用户将拥有一个完整的(半好看的)网站,谷歌将抓取所有页面而没有任何问题,但使用Javascript的用户将始终留在主页 - 和酷的概念将完成Web应用程序而不是Web站点。
答案 1 :(得分:9)
您是否还考虑过使用HTML5历史会话管理?
这样您就不必在newer browsers中使用哈希,这样用户就不会注意到任何事情。
有点简化你会做这样的事情:
编辑:更新的例子。
function route(path) {
$.get(path, function(data) {
//parse data
});
}
if (typeof history.pushState !== 'undefined')
{
$(window).bind('popstate', function(e)
{
route(window.location.pathname);
});
$('a').click(function(event) {
event.preventDefault();
history.pushState({},'',this.href);
});
} else {
$(window).bind('hashchange', function(e)
{
route(window.location.hash);
});
$('a').click(function(event) {
event.preventDefault();
$(this).attr('href', '/#'+$(this).attr('href'));
});
}
答案 2 :(得分:0)
使用jQuery BBQ并在页面顶部使用js函数检查是否存在有效哈希,如果有,则重定向到页面。