【问题标题】:How do I make my AJAX content crawlable by Google?如何使我的 AJAX 内容可被 Google 抓取?
【发布时间】:2010-09-02 11:01:04
【问题描述】:

我一直在开发一个大量使用 jQuery 并通过 AJAX 加载内容的网站,如下所示:

$('#newPageWrapper').load(newPath + ' .pageWrapper', function() {
    //on load logic
}

现在我注意到 Google 不会索引任何通过 Javascript 动态加载的内容,因此我一直在寻找解决该问题的方法。

我已经阅读了 Google 的 Making AJAX Applications Crawlable 文档 100 遍,但我仍然不明白如何实现它(主要是由于我对服务器的了解有限)。

所以我的第一个问题是:

  • 是否有一个体面的分步教程,从头到尾记录您所知道的?我试过用谷歌搜索它,但没有找到任何有用的东西。

其次,如果还没有任何东西,谁能解释一下:

  1. 如何设置我的服务器来处理 对包含的 URL 的请求 _escaped_fragment_'

  2. 如何实现HtmlUnit on 我的服务器创建一个'HTML 要显示给 爬虫。

如果有人能帮我解释一下,我将非常感激,在此先感谢!

-本

【问题讨论】:

  • 先使网站功能无Javascript,再添加Javascript。

标签: javascript ajax seo web-crawler htmlunit


【解决方案1】:

最好的解决方案是创建一个可以使用和不使用 JavaScript 的网站。阅读有关渐进增强的文章。

【讨论】:

  • 虽然这确实是最好的解决方案,但它并不普遍适用,并且实际上并没有回答原始问题。
【解决方案2】:

我找不到替代方案,所以我接受了 epascarello 的建议,现在如果 URL 包含“_escaped_fragment_”,我将使用 php 生成内容(如果爬虫访问,URL 将包含该内容)

对于那些搜索:

<?php

    if(isset($_GET['_escaped_fragment_'])){

        $newID = $_GET['_escaped_fragment_'];

        //Generate page here
    }

?>

【讨论】:

  • 确保在 PHP 或数据库事务中使用 $_GET['escaped_fragment'] 之前对其进行清理。不想要 PHP 漏洞或 SQL 注入。
  • 处理_escape_fragment 确实是要走的路,我建议接受这个答案,即使它是你自己的。顺便说一句,这是一个关于[使 AngularJS 应用程序可抓取](yearofmoo.com/2012/11/angularjs-and-seo.html_.
  • 对于现代浏览器,解决方案应该是使用 HTML5 pushState 的 restful Urls。整个逃生片段看起来像个黑客。
【解决方案3】:

如今,该问题通常通过使用在网络服务器级别插入 Google 的 Making AJAX Applications Crawlable 方案实现的服务来解决。您不必再自己动手了。

我为以下公司之一工作:https://ajaxsnapshots.com(还有其他公司)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2011-11-26
    • 1970-01-01
    • 2012-01-01
    相关资源
    最近更新 更多