如何让搜索引擎抓取AJAX内容?

越来越多的网站,开始采用”单页面结构”(Single-page application)。

整个网站只有一张网页,采用Ajax技术,根据用户的输入,加载不同的内容

如何让搜索引擎抓取AJAX内容?

这种做法的好处是用户体验好、节省流量,缺点是AJAX内容无法被搜索引擎抓取。举例来说,你有一个网站。

http://example.com

用户通过井号结构的URL,看到不同的内容。

http://example.com#1

http://example.com#2

http://example.com#3

但是,搜索引擎只抓取example.com,不会理会井号,因此也就无法索引内容。

为了解决这个问题,Google提出了”井号+感叹号”的结构。

http://example.com#!1

当Google发现上面这样的URL,就自动抓取另一个网址:

http://example.com/?_escaped_fragment_=1

只要你把AJAX内容放在这个网址,Google就会收录。但是问题是,”井号+感叹号”非常难看且烦琐。Twitter曾经采用这种结构,它把

http://twitter.com/ruanyf

改成

http://twitter.com/#!/ruanyf

结果用户抱怨连连,只用了半年就废除了。

那么,有没有什么方法,可以在保持比较直观的URL的同时,还让搜索引擎能够抓取AJAX内容?

我一直以为没有办法做到,直到前两天看到了Discourse创始人之一的Robin Ward的解决方法,不禁拍案叫绝。

如何让搜索引擎抓取AJAX内容?

Discourse是一个论坛程序,严重依赖Ajax,但是又必须让Google收录内容。它的解决方法就是放弃井号结构,采用 History API。

所谓 History API,指的是不刷新页面的情况下,改变浏览器地址栏显示的URL(准确说,是改变网页的当前状态)。这里有一个例子,你点击上方的按钮,开始播放音乐。然后,再点击下面的链接,看看发生了什么事?

如何让搜索引擎抓取AJAX内容?

地址栏的URL变了,但是音乐播放没有中断!

History API 的详细介绍,超出这篇文章的范围。这里只简单说,它的作用就是在浏览器的History对象中,添加一条记录。

window.history.pushState(state object, title, url);

上面这行命令,可以让地址栏出现新的URL。History对象的pushState方法接受三个参数,新的URL就是第三个参数,前两个参数都可以是null。

window.history.pushState(null, null, newURL);

目前,各大浏览器都支持这个方法:Chrome(26.0+),Firefox(20.0+),IE(10.0+),Safari(5.1+),Opera(12.1+)。

下面就是Robin Ward的方法。

首先,用History API替代井号结构,让每个井号都变成正常路径的URL,这样搜索引擎就会抓取每一个网页。

example.com/1

example.com/2

example.com/3

然后,定义一个JavaScript函数,处理Ajax部分,根据网址抓取内容(假定使用jQuery)。

function anchorClick(link) {

var linkSplit = link.split(‘/’).pop();

$.get(‘api/’ + linkSplit, function(data) {

$(‘#content’).html(data);

});

}

再定义鼠标的click事件。

$(‘#container’).on(‘click’, ‘a’, function(e) {

window.history.pushState(null, null, $(this).attr(‘href’));

anchorClick($(this).attr(‘href’));

e.preventDefault();

});

还要考虑到用户点击浏览器的”前进 / 后退”按钮。这时会触发History对象的popstate事件。

window.addEventListener(‘popstate’, function(e) {

anchorClick(location.pathname);

});

定义完上面三段代码,就能在不刷新页面的情况下,显示正常路径URL和AJAX内容。

最后,设置服务器端。

因为不使用井号结构,每个URL都是一个不同的请求。所以,要求服务器端对所有这些请求,都返回如下结构的网页,防止出现404错误。

  

    

      

      

        … …

      

    

  

仔细看上面这段代码,你会发现有一个noscript标签,这就是奥妙所在。

我们把所有要让搜索引擎收录的内容,都放在noscript标签之中。这样的话,用户依然可以执行AJAX操作,不用刷新页面,但是搜索引擎会收录每个网页的主要内容!

(完)

文章来源:阮一峰的网络日志

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:卢松松,转转请注明出处:https://www.chuangxiangniao.com/p/1069789.html

(0)
上一篇 2025年1月13日 16:13:31
下一篇 2025年1月13日 16:13:55

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 两种容易被转发的微博内容

    每每看到那几百上千次的微博转发,心里就非常项羡慕,为什么我的微博没人转发呢?来自AdMaster与SSI的调查报告也许给了你答案:第一是:心情语录、名人语录”最主流,第二是网络上的热点话题! 受访者最愿意转发的内容依次是“心情语录、名人语录…

    2025年1月13日
    100
  • 禁止搜索引擎收录的方法

    1. 什么是robots.txt文件? 搜索引擎使用spider程序自动访问互联网上的网页并获取网页信息。spider在访问一个网站时,会首先会检查该网站的根域下是否有一个叫做 robots.txt的纯文本文件,这个文件用于指定spider…

    好文分享 2025年1月13日
    100
  • Google喜欢的17类内容

    1. 采访 Google 尊敬那些生产优质内容的人们。一个比较容易的方式是采访你所在行业中的专家,把采访内容发布出来。这种采访不一定面对面。比如下面的例子,采访可以用邮件、电话或面谈等形式。 采访的好处有:专家可能在自己的网页上做链接到你的…

    2025年1月13日 好文分享
    100
  • 搜索引擎网页去重算法分析

    相关统计数据表明:互联网上近似重复的网页的数量占网页总数量的比例高达29%,完全相同的网页大约占网页总数量的22%.研究表明,在一个大型的信息采集系统中,30%的网页是和另外70%的网页完全重复或近似重复的。 即:互联网的网页中相当高的比例…

    2025年1月13日
    100
  • 搜索引擎良心排名

    最差到最好排名:百度、搜狗、搜搜、360、谷歌!在百度上搜索“复旦大学附属眼耳鼻喉科医院”,前3项都是其他医院广告,查了20页还没找到正确网站。搜狐sogou.com,结果比百度好不到哪去。腾讯soso.com,第三条搜到正确网站,360s…

    IT业界 2025年1月13日
    100
  • 怎样让内容被转载的更多

    很多网站并不希望内容被转载,包括我在内,去年还不遗余力的写过一篇文章用技术手段防止博客文章被恶意转载。后来发现这是错误的,酒香不怕巷子深的时代早已过去,何况多数人的酒不香。 其实,内容被转载的越多,证明这个网站越有价值,内容的质量也越高。假…

    站长动态 2025年1月13日
    100
  • 来自投资人的质疑:百度的搜索问题

    这是7月中旬的一个下午,也是百度公司(BIDU. NASDAQ)的普通一天。从北京西二旗地铁口出来,在一群科技公司的包围之中,最显眼的就是波浪状的百度大厦。小河环绕的透明大厅内人流攒动,每隔十几分钟,就会有人抱着笔记本电脑带着前来应聘的人们…

    IT业界 2025年1月13日
    100
  • 搜索引擎的Robots规则

    robots.txt是一种存放于网站根目录下的文本文件,用于告诉搜索引擎的爬虫(spider),此网站中的哪些内容是不应被搜索引擎的索引,哪些是可以被索引。通常认为,robots.txt文件用来搜索引擎对目标网页的抓取。 robots.tx…

    好文分享 2025年1月13日
    100
  • JavaScript解析:让搜索引擎看到更真实的网页

    长期以来,站长们选择使用JavaScript来实现网页的动态行为,这样做的原因是多种多样的,如加快页面的响应速度、降低网站流量、隐藏链接或者嵌入广告等。由于早期的搜索引擎没有相应的处理能力,导致在索引这类网页上往往出现问题,可能无法收录有价…

    好文分享 2025年1月13日
    100
  • 搜索引擎基于链接的排序算法

    向大家推荐这篇较早以前的文章,其实很多经典的文章,SEO的价值含量才更多。 基于链接的排序算法似乎已广泛应用到各种商业搜索引擎中。为了让设计出来的网站能够在各种搜索引擎中获得较高排名,设计者们应该知道这些算法的原理。 Google排名的成功…

    好文分享 2025年1月13日
    100

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信