hashbang还是不hashbang?

Mar*_*rko 28 ajax seo jquery umbraco hashbang

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

现在我们现有的网站已经排名很高,所以我也想让Google高兴.我一直在阅读由Google 编写制作AJAX应用程序,并了解我必须通过_escaped_fragment_为抓取工具提供相同的内容.


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

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

更新
昨天另一位用户(现已删除)的答案提示Google不再使用_escaped_fragment_方法并建议将其排除在外.这是真的?谷歌实际上会运行AJAX来查看内容吗?

谢谢
Marko

Mar*_*rko 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的用户将拥有一个完整的(半好看的)网站,谷歌将抓取所有页面而没有任何问题,但使用Javascript的用户将始终留在主页上 - 并且拥有一个很酷的概念将完成Web App而不是Web站点.


Ewo*_*ann 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'));
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 网址会改变.这一行将处理:history.pushState({},'',this.href); (4认同)