简介

毋庸置疑,百度是目前国内乃至华文世界中最受欢迎的搜索引擎。但是,由于架构及技术原因,我们的网站在百度搜索结果中的展示十分糟糕。主要问题包括:

  • 搜索“洋葱数学”返回的结果排序问题,一个名为“洋葱数学——中小学频教学网”的链接长期、稳定地排位在网站之前;
  • 百度搜索导引图为“错题本马上归来”之配图,尽管该图片已不再网站中使用;
  • 搜索结果中缺少网站介绍;
  • 百度快照异常;

本文主要目标是解决如上问题。标题中的“BEO”源自SEO (Search Engine Optimization),意为“Baidu Engine Optimization”。下文总结了这次BEO工作的主要流程与经验。

BEO 第一阶段——简单的SEO文本添加

最先,在/home页的

1
2
3
4
5
6
7
8
9
使用百度站长平台提供的“链接检测”功能发现,实际上百度Bot并未抓取到```/home```页面的内容,而仅抓取了```/```的图片。我们网站的架构上看,用户访问```/```时,如果登录信息已存在,则将会跳转至用户的个人中心,否则即跳转到```/home```,并返回静态页面。对于搜索引擎而言,自是不可能存有用户信息,因此正常情况下将跳转至```/home```。而是次跳转已被百度Bot屏蔽。
在得出如上结论后,本文针对该问题进行了第二阶段的BEO工作。
## BEO 第二阶段——针对百度Bot进行跳转
为了解决上文提到的问题,可以首先根据IP识别请求```/```的来源是否为百度Bot,如果是,则返回```/home```。因此,本文首先收集了百度Bot的IP地址段,之后在Nginx配置中设置了```geo```。
在Nginx中,```geo```的作用是根据预置的IP或IP段,决定某个变量的值。如下:

geo $search {
ranges;
default 0;
119.63.196.0-119.63.196.255 1;
115.239.212.0-115.239.212.255 1;
}

1
2
3
4
上述代码根据访问的IP对```$search```进行赋值。如果访问者IP位于119.63.196.* 或 115.239.212.* ,则将```$search```赋值为1,其他情况则将```$search```赋值为0。这样,我们只需把所有百度Bot的IP加入到geo中,若访问来自于百度Bot,则会使$search为1
接着,在网站的Nginx的conf文件中,只需在```/```的route下加入如下代码,即可实现针对百度Bot的跳转:

if ($search) {
rewrite ^.*$ /home break;
}
```
这样,只要$search为1,则会将任何path重写到/home上,并停止执行下面的Nginx代码。

完成上述工作后,再使用百度站长平台提供的链接检测工具,此时百度Bot已抓取到/home的内容。再次提交链接。2-3日后,修改生效,百度搜索结果已包含更新的dexription内容。但快照仍为更新。推测是由于百度快照缓存引起,遂向百度提交删除快照申请,数日后,快照正常显示/home的页面内容。

BEO 第三阶段——搜索导引图的更换

一般地,百度会在搜索结果中加入一张大小为121*75的矩形图片作为搜索导引图。该图由百度Bot在页面上抓取得到。原则是:

  • 图片尺寸或比例接近121*75
  • 图片被置于页面中的明显位置
  • 图片需在浏览器中显示(不能设置display为none或hidden)

我们之前曾使用一张错题本马山归来的图片,该图片尺寸恰为121*75,因此百度的搜索结果页面以该图片作为导引图。但是,显示该图的部分代码在错题本上线后即被注释。然而百度导引图并未更换。也就是说,百度Bot的导引图能够抓取到已被注释的代码。

为此,可以将含有错题本马上归来图片的代码删去。数日后,百度搜索结果导引图进行了更换。

未来,可以将一张121*75的图片加入到/home页面中,并进行注释,以方便百度Bot的导引图抓取。

此外,百度站长平台具有设置搜索结果导引图的功能,但测试发现此功能并未有任何效用。

BEO 后续

目前我们还可以继续进行的主要BEO后续工作包括:

  • 申请网站并官网认证
  • 优化导引图
  • 优化“相关搜索”(通过百度投诉渠道无效)
  • 优化搜索关键词推荐

实际上,只要打开百度,搜索“洋葱数学”,就知道BEO后续还应该、还可以做哪些工作了。

众里寻啊,千百度。