hashbang或不hashbang?

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

现在我们现有的网站已经排名很高,所以我也想让Google开心。 我一直在阅读Google制作AJAX应用程序,并了解我必须通过_escaped_fragment_搜寻器提供相同的内容。

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

  • http://www.domain.com/about-us.aspx
  • http://www.domain.com/about-us/our-team.aspx
  • 但问题是,我没有一个简单的方法来实现_escaped_fragment_,而不会窃听Umbraco核心(至少这是我的知识),并且使用我在下面发布的解决方案(答案)也将保持没有Javascript的用户感到高兴。 双赢局面? 你告诉我! =)

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

    谢谢
    马尔科


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

    我想到了这个问题和想法 - 为什么不以旧式的方式创建网站,实际的网页和一切,但然后执行以下步骤。

  • 使用jQuery拦截主页上的所有内部链接,并在window.location.pathname之前加上一个散列(#),从而触发hashchange事件。 (请参阅步骤3)
  • 在除首页以外的所有页面上添加一个JavaScript重定向,以将页面重定向回首页,但在散列(#)后附加window.location.pathname 。 例如,Google抓取http://www.domain.com/about-us.aspx,但当用户访问该页面时,他们被重定向到http://www.domain.com/#/about-us.aspx
  • 在主页上,使用jQuery BBQ或类似的插件来监听hashchange事件,包括加载页面的时间以便加载动态内容。 Umbraco可以配置为基于请求是否为AJAX请求来提供部分或全部页面内容。
  • 这样,没有Javascript的用户将拥有一个完整的(半美观的)网站,Google会毫无问题地抓取所有网页,但拥有Javascript的用户将永远停留在首页上 - 以及拥有Web应用程序而不是Web站点将会完成。


    你是否也考虑过使用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'));
        });
    }
    

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

    链接地址: http://www.djcxy.com/p/64653.html

    上一篇: To hashbang or not to hashbang?

    下一篇: Hashbang versus URI parse