【问题标题】:Anchored AJAX and SEO workaround?锚定 AJAX 和 SEO 解决方法?
【发布时间】:2009-11-11 18:35:31
【问题描述】:

你们都知道如何使用 300 毫秒触发器来构建 AJAX 站点,以检查 URL 中的锚点(哈希链接),然后使用 AJAX 加载正确的页面。但是,这些锚链接对搜索引擎来说毫无意义 =(

我想过做一些解决方法。所有的 JS 代码都保持不变,但是,这个小东西(我用的是 JQuery,对不起):

$('a').live("click",function(){
    var lnk = $(this).attr("href");
    document.location.hash = lnk;
    return false;
})

然后,您将正文中的锚链接替换为普通链接,为非 JavaScript 用户和搜索引擎构建相应的普通页面(仍然包含所有 JS 代码)。对于普通访问者,您可以将普通链接即时转换为哈希值并立即加载 AJAX 内容。对于那些试图加载通过搜索引擎找到的某些页面的人 - 他们会,之后访问者将继续使用 ajax 导航...不知何故(请记住,那些普通的直接页面仍然包含 JS 代码)。

我只是想确保我的假设是正确的。是吗?

更新: 不好的是,当用户使用 for ex 直接进入一些内部页面时。 /portfolio 地址,然后他会继续访问 /portfolio#contacts 或类似的 URL,这些 URL 不是很漂亮,但仍然有效(我的意思是 /portfolio#contacts 将显示联系人)。

【问题讨论】:

    标签: javascript ajax seo graceful-degradation hashchange


    【解决方案1】:

    这似乎不是一个好方法,主要是因为您最终会为每个链接的click 事件触发该函数,即使是那些您这样做的链接想要使用您的 AJAX 方法来加载内容,例如指向其他网站或 javascript:... 的链接。

    如果您将所有 AJAX-y 链接放在同一个类下或使用另一个属性来区分它们,然后调整您在那里使用的 jQuery 选择器,那么它将起作用,这将是一个好方法,因为不仅它是否对 SEO 友好,但它也提供了优雅的降级,也就是说,即使您的用户在不允许使用 JavaScript 的环境中运行,他们仍然可以访问内容。

    除此之外,如果 SEO 是您唯一关心的问题,您可以在网上搜索 sitemap.xml 文件是什么以及如何使用它。维基百科有一个article on it,可能值得一读。

    【讨论】:

    • 是的,为这些链接指定一个类是绝对必要的。
    【解决方案2】:

    听起来很不错...只是我建议您的 300 毫秒计时器上的回调也可以在您上面的事件中调用,这样您在单击链接时会立即获得结果(并且用户也可以在地址栏并获得相同的效果)

    【讨论】:

      【解决方案3】:

      嘿,伙计,您可能想查看jQuery Ajaxy。它将网站优雅地升级为丰富的 ajax 应用程序,因此您的网站仍然适用于 SEO 和 Javascript 禁用用户。

      您可以在in this upcoming website 中看到此功能。请注意所有链接与网站不是 Ajax 应用程序时的相同 - 如果您右键单击并在新窗口中打开,它们仍然有效!

      此功能在其演示页面中有详细说明。您还可以在此处找到其他示例和使用说明: http://www.balupton.com/sandbox/jquery-ajaxy/demo/

      总体而言,使用它非常简单明了(特别是考虑到它允许您做什么!),并且支持非常棒。

      【讨论】:

        猜你喜欢
        • 2010-12-28
        • 2011-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-21
        • 2012-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多