28

我正在开发一个新网站,我想尽可能多地使用 AJAX。基本上,我希望用户几乎永远不会离开主页,并在弹出窗口、滑块、部分等中显示所有内容。

现在我们现有的网站已经排名很高,所以我也想让谷歌高兴。我一直在阅读 Google 的Making AJAX Applications Crawlable并了解我必须通过_escaped_fragment_为爬​​虫提供相同的内容。


我想使用Umbraco开发这个网站的问题,它已经提供了对 SEO 友好的 URL。IE

但问题是我没有一种简单的方法来实现_escaped_fragment_而不破解 Umbraco 核心(至少这是我的知识),并且使用我在下面发布的解决方案(答案)也将使没有 Javascript 的用户满意。双赢局面?你告诉我!=)

更新
昨天有另一个用户的回答(现已删除),他建议 Google 不再使用_escaped_fragment_方法,并建议将其排除在外。这是真的?Google 真的会运行 AJAX 来查看内容吗?

谢谢马尔科
_

4

3 回答 3

11

我正在接受@Daniel Pryden评论中的建议,并将其作为答案发布。

我曾想过这个问题和想法 - 为什么不以老式方式创建网站、实际页面和所有内容,然后执行以下步骤。

  1. 使用 jQuery 拦截主页上的所有内部链接,并在 之前添加一个井号 (#) window.location.pathname,从而触发 hashchange 事件。(见步骤 3)
  2. 在除主页之外的所有页面上添加 javascript 重定向以将页面重定向回主页,但window.location.pathname在哈希 (#) 之后附加。例如,Google 抓取http://www.domain.com/about-us.aspx,但是当用户访问该页面时,他们会被重定向到http://www.domain.com/#/about-us.aspx
  3. 在主页上,使用 jQuery BBQ 或类似的插件来监听 hashchange 事件,包括页面何时加载,以便加载动态内容。Umbraco 可以配置为根据请求是否为 AJAX 来提供部分或完整页面内容。

这样,没有 Javascript 的用户将拥有一个成熟的(半好看的)网站,Google 将毫无问题地抓取所有页面,但使用 Javascript 的用户将始终停留在主页上 - 以及拥有一个很酷的概念将完成 Web App 而不是 Web Site。

于 2011-07-20T03:49:12.977 回答
9

您是否也考虑过使用 HTML5 历史会话管理?

这样您就不必在较新的浏览器中使用哈希,这样用户就不会注意到任何事情。

有点简化你会做这样的事情:

编辑:更新的例子。

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'));
    });
}
于 2011-07-24T13:50:16.967 回答
0

使用 jQuery BBQ 并在页面顶部使用 js 函数来检查是否存在有效的哈希,如果是,则重定向到页面。

于 2011-07-26T21:25:54.377 回答