【问题标题】:Ajax history works against SEOAjax 历史对 SEO 不利
【发布时间】:2010-11-16 20:01:43
【问题描述】:

我有一个重 ajax 的网站。我更新了地址栏中的哈希值,以便存储冲浪历史 - 因此前进和后退按钮仍然起作用。例如,一个典型的用例是:

  • site.com/directory#sports/1
  • site.com/directory#sports/2
  • site.com/directory#sports/3
  • site.com/directory#movies/1
  • site.com/directory#movies/2

我相信这些哈希值会被搜索引擎爬虫忽略。哈希之前具有相同路径的所有链接都被同化。这对 SEO 不利,因为无法索引特定页面。例如,我无法在 Google 上搜索“site.com sports”并希望找到指向 site.com/directory#sports/1 的链接。那么我如何既保留 ajax 历史又拥有良好的 SEO 呢?据我所知,必须使用散列来在 ajax 期间不重新加载页面。执行 ajax 时不能像这样更新 URL:

  • site.com/directory/sports/1
  • site.com/directory/sports/2

【问题讨论】:

    标签: javascript ajax url seo


    【解决方案1】:

    你需要一个井号:#!。阅读Google's Making AJAX Applications Crawlable

    【讨论】:

      【解决方案2】:

      搜索引擎通常需要一种无需使用 ajax 即可找到这些链接的方法。如果您提供一种方法来抓取复制您的 ajax 页面 (site.com/directory#movies/2) 的链接,那么搜索引擎可以获取您的数据。

      您可以通过创建一个包含指向这些页面的链接的导航页面,或者为您的站点创建一个说明如何访问这些页面的 sitemap.xml 来做到这一点。

      只要确保您的网站在被直接点击时呈现 site.com/directory#movies/2 应该是什么,而不仅仅是 site.com/directory。

      【讨论】:

      • 这真的不是最好的方法。
      • 如果你想让它在所有搜索引擎中工作,而不仅仅是谷歌,你应该让你的网站可以抓取。通过 Ajax 让您的网站可抓取是一种新技术,我不建议您依赖它。
      • 如何在客户端不使用 JavaScript 渲染依赖 URL 片段的内容?服务器永远不会看到片段!
      • 服务器可以覆盖通用目录结构,并根据需要对其进行解析。我一直使用 zend:framework.zend.com/manual/en/zend.controller.router.html
      【解决方案3】:

      如果您想关注 SEO 和可访问性,那么您应该使用真实的 url 作为链接并通过注册事件侦听器(如 onclick)来添加 AJAX 功能。

      这样,google 会通过链接看到内容,禁用 JS 的人也会看到。 您的其他用户将拥有动态内容和 AJAX 的完整体验。

      另请阅读Google's AJAX recommendations

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-14
        • 1970-01-01
        • 1970-01-01
        • 2011-01-16
        • 2015-07-20
        相关资源
        最近更新 更多