【问题标题】:Bot friendly ajax page机器人友好的ajax页面
【发布时间】:2012-11-12 05:48:44
【问题描述】:

我现在正在尝试编写一个对 seo 友好的 ajax 投资组合。我的目标是为用户提供 javascript 效果,为没有 js 的机器人/用户提供普通的 html。

文件:

  • index.php(我的程序的起点)
  • aboutme.php(包含“关于我”的 html 代码)
  • contact.php(包含“联系人”的 html 代码)

想法:

用户访问 index.php 并点击“关于我” -> 加载动画出现 -> aboutme.php 被 ajax 加载 -> history.pushstate 将 url 重写为 aboutme.php。

-> 当用户在 fb/twitter/g+ 上分享当前网站 url 时,机器人将获得正确的标题、正文等,因为它是没有任何 javascript 的普通 html 页面。

但我的问题是:如果其他用户打开该页面,他们会直接看到内容。但我想先给他们看一个加载动画,直到用 ajax 加载数据(类似于他们点击链接)。

我怎样才能实现这种方法?非常感谢!

【问题讨论】:

  • 我已经做到了,它比你想象的更像是一只兔子。多年后,我仍然支持它并在想,“我希望我从来没有朝那个方向走”。 FWIW
  • 那么,你现在会怎么做呢?

标签: php ajax seo


【解决方案1】:

最好的方法是创建一个 javascript 文件。将链接标签写入“head”部分。这将使 javascript 文件在内容之前下载。 Javascript 显示动画,但同时浏览器将下载已经在后台的内容。在“文档就绪”事件中,停止动画。

这将让机器人直接访问内容。因为 javascript 对他们不起作用。

【讨论】:

  • 好的,我明白你想要达到的目标。但是让我们稍微复杂一点:如果 aboutme.php 不仅包含 html 代码,还包含一些服务器端 php 的东西(比如 sleep(10);),那会怎样。浏览器现在会等到他完全接收到 aboutme.php 后才会显示动画,不是吗?
  • 好吧,如果服务器等待 10 秒,机器人将在 10 秒内无法看到数据。但是你可以做的是,你可以先冲洗头部,然后再冲洗身体。因此,javascript 可以工作,但服务器会自行等待。
【解决方案2】:

我认为这根本不是问题,保持链接的href像往常一样,然后使用JavaScript或jQuery更改单击链接的默认行为以使用ajax加载链接的内容。

【讨论】:

    【解决方案3】:

    要使您的 ajax 内容可抓取,请参阅 https://developers.google.com/webmasters/ajax-crawling/,Bing 也支持这一点。或者使用 HTML5 pushState,参见http://www.seomoz.org/blog/create-crawlable-link-friendly-ajax-websites-using-pushstatehttps://github.com/blog/760-the-tree-slider 等。

    【讨论】:

      【解决方案4】:

      我一直认为这比它的价值更努力(通常),但要回答你的问题:

      index.php、aboutme.php、contect.php 应该提供完整的 html。 某些链接应该有 js 事件处理程序拦截点击,而不是加载 aboutme.php,而是在后台加载 aboutme-content-only.php。然后更新 dom 和推送状态等...

      这样,对于那些第一次访问的用户以及那些浏览器不支持推送状态或 javascript 的用户来说,网站很容易降级。

      【讨论】:

        猜你喜欢
        • 2021-10-12
        • 1970-01-01
        • 1970-01-01
        • 2016-09-27
        • 1970-01-01
        • 2022-12-31
        • 1970-01-01
        • 2021-10-27
        • 1970-01-01
        相关资源
        最近更新 更多