本篇文章的意义之一,很多站长对自己网站健康状况没有头绪:

在百度举办的活动上,有不少的站长会向百度工作人员提出一些根本无法回答的问题:

  1. 收录掉了,怎么办?
  2. 抓取掉了,怎么办?
  3. 流量掉了,怎么办?
  4. 排名掉了,怎么办?
  5. 收录不及时,怎么办?

这些问题太笼统了,即使把百度所有后台数据完全开放,也无法解答。提问的人肯定是连网站的基本结构都没有清晰的认识。好的问题是怎样的?耐心看完就有答案了。

本篇文章的意义之二,产品改版对SEO造成毁灭性打击

SEO最严重的问题,往往不是SEO问题,而是产品问题,或技术问题。有些大型网站每次大改版都是这样的:

  1. 会更换一套URL pattern。
  2. 由于数据的不兼容,旧版本pattern无法301到最新版。
  3. 即使数据兼容,也忘了做301。

我问过一个产品经理,这个产品的URL换过多少pattern, 答案是3到4个。但是我从web.archive.org上看,最少8个。平均每年换一个。稍微有一点搜索引擎基本常识的人应该能意识到,这种网站是典型的no zuo no die。

本篇文章的意义之三,长期的迭代开发流程中,SEO的需求可能被逐步改错

在产品,技术和测试的思维中,往往是没有URL的清晰定义的,只要页面能访问,内容是对的就合格了.以下几种URL都是被认为没问题的:

  1. http://www.a.com/product(category)/
  2. http://www.a.com/product.html/
  3. http://www.a.com/product/?channel=123&category=abc&brand=def&tracking=other_website

更不要提SEO的其他基本规范了。也就是说,事实上除了SEO没有人关心这些东西,每个开发环节都可能遗漏或者搞错一些东西。

曾经有一个产品,本来谷歌收录量达到了3000万,百度收录2000万,流量也不错,精力挪到别的产品上去了。 过了1个月发现流量有所下滑,以为是季节因素,没有在意,又过了2个月,流量下降非常多。仔细检查了一下发现一个惊人的变化。

  1. 本来收录的地址是http://www.a.com/product/item100.html。
  2. 在没有被告知的情况下,被技术同事加了一个301跳转,到http://www.a.com/search/?product=a&item=100。
  3. 其中/search/目录在robots.txt中是Disallow的。
  4. 在随后的2周内,收录量最低降到了300万左右。

我希望能有个系统自动的帮我梳理这些问题,让我不再每天担忧SEO的需求又不知道被谁弄掉了,如果有问题,能让开发测试的同事马上就收到警报,让“擦屁股”的事情不再占用我太多时间。

内容思维导图,元信息,页面单元测试,蜘蛛日志监控

鉴于前边几点,我的解决方案是:

  • 内容思维导图
  • 元信息
  • 页面单元测试
  • 蜘蛛日志监控

这些方案5年前就构思好了,并且小规模试用,但是由于复杂度和开发成本较高,到过很多坑。直到最近两年才逐步启用。绝对不适用于小公司,请广大SEO从业者慎重决策。

##内容思维导图

从产品的角度看是这样由各类功能组成的,有合理流程关系的(流程不展开讨论),符合用户体验的,但可能不符合搜索引擎体验: 产品思维导图

从SEO的角度看,网站的结构是这样由各类用户搜索需求组成的,也是有合理层级关系的: SEO内容思维导图 不同的网站会有截然不同的思维导图,因为他可能基本取决于技术架构。因此建议SEO从业者深入了解网站的技术架构之后再来绘制导图。具体的细节暂不展开。但是最起码自己要保证这几点:

  1. 网站有哪些内容节点
  2. 哪些命中了用户的需求
  3. 哪些是毫无检索意义的
  4. 缺少哪些节点
  5. 应该如何部署层级关系

思维导图绝对不是一劳永逸的,每当产品有新的pattern上线,或者旧的pattern下线,需要及时更新。每当你发现新的用户搜索习惯,也应该更新,并且推送给产品同事知道。

##元信息

我这里说的不是, 而是一切SEO相关的,有规律的(最好是可以用正则表达的),可量化的信息。包括:标题,关键词,描述,H1,等等。

从SEO的角度看,某网站的URL是这样的,符合“思维导图”层次的:

  • 首页: www.example.com/
  • 首页-频道1: www.example.com/channel/
  • 首页-频道1-维度1: www.example.com/channel/abc/
  • 首页-频道1-维度1-维度2: www.example.com/channel/abc/xyz/
  • 首页-频道1-详细页: www.example.com/channel/item12345/

从产品,开发,测试的角度看URL可能是这样无序的:

  • www.example.com/channel/?category=abc&brand=xyz&tracking=other_website
  • www.example.com/channel/?item=12345

如果下一版改成这样也没问题的:

www.example.com/?channel=123&category=abc&brand=def&tracking=other_website

如果没有清晰的规则定义,几乎是无法知道现在的网站还是不是你优化过的那个样子的。 根据SEO内容思维导图,我们得到如下的元信息表格(仅列出几个字段给大家参考): 元信息

##页面单元测试

这个“单元测试”是借用了一个研发的术语,原本是测试某一个函数或类的。我是用来测试SEO的一个具体的细节定义。工具也是借用了“Rspec”来二次开发的。这个模块可以分为两个环境来运行,production和testing。

其中production的测试,我们叫“回归测试”,目的是保证之前已经上线的SEO需求,依然好好的呆在那里,如果报警需要及时修复。

testing环境中,是为了给研发人员做类似TDD(测试驱动开发)用的。它包含了production的回归测试也包含了testing中新的需求,可以被当做是需求文档。只要研发人员把这个测试都跑通,就说明你的需求完成了。当这些需求上线后,把测试合并到production一起做回归测试,这样就圆满了。

测试的内容可以涵盖:元信息中的所有细节,已知链接的锚文本, 站内URL, 站外URL, 面包屑, alt, 响应时间, 页面尺寸,等等。

##蜘蛛日志监控

有了“元信息”的定义。做蜘蛛日志监控易如反掌。

亲身经历的一些现象:

  1. 全站85%的访问,response code都是301。
  2. 蜘蛛抓取量的50%都是抓异步请求(ajax,iframe)的URL。
  3. 某些类别的页面平均响应时间超过10秒/次。
  4. response code 200的访问中60%的请求都不是SEO需要的URL。

附图仅展示一些字段给大家做参考 蜘蛛日志监控报告

针对本文开头的问题,比较靠谱的提问方式是, “我的某某pattern页面每天抓取量多少,其中response200的有多少,平均响应时间是多少,主要的内容,SEO元素都正常,没有作弊的行为,但是这个pattern最近抓取掉了,收录掉了”。 其实能问这种问题的人,也基本不用提这类问题了。大多数的问题只要足够细化,就已经迎刃而解了。

以下是引用官方客服的答案:

10.10.x.x 和 10.20.x.x 这两个是 VPN 网段,所以不可以添加进智能加速,否则 VPN 会无法正常工作。

下面是以 192.168.x.x 为例的添加方法: 在下载下来的智能加速文件夹中,找到 data 文件夹:

ip-up 末尾加一行: route add 192.168.0.0/16 “${OLDGW}”

ip-down 末尾加一行: route delete 192.168.0.0/16 ${OLDGW}

添加完毕后,断开 VPN,再安装一遍 speed_up,最后重启系统,就可以了。

when compiling ruby 2.2.0 in centos 6.4, you may meet this problem:

make[2]: Entering directory `/home/work/ruby-2.2.0/ext/fiddle'
linking shared-object fiddle.so
/usr/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): relocation R_X86_64_32 against `.text' can not be used when making a shared object; recompile with -fPIC
./libffi-3.2.1/.libs/libffi.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [../../.ext/x86_64-linux/fiddle.so] Error 1
make[2]: Leaving directory `/home/work/ruby-2.2.0/ext/fiddle'
make[1]: *** [ext/fiddle/all] Error 2
make[1]: Leaving directory `/home/work/ruby-2.2.0'
make: *** [build-ext] Error 2

it says there’s some problems with fiddle, so you may wanna reinstall fiddle-devel, which would be told by forums after googling a bit while.

actually the way that worked for me is to enter the directory of ‘ruby-2.2.0/ext/fiddle’ and do :

ruby extconf.rb
make
sudo make install

now have fun compiling ruby 2.2.0 ^_^

当下载/编译安装完最新的ruby2.1后,安装某些gem时需要openssl. 基本的步骤是:

cd {ruby源码路径}/ext/openssl
ruby extconf.rb
make
make install

但当你make的时候会提示

make: *** No rule to make target `/thread_native.h', needed by `ossl.o'.  Stop.

报错的意思就是找不到’thread_native.h’文件 其实是{ruby源码路径}/ext/openssl/Makefile中忘了给路径变量top_srcdir赋值,调用的时候当然就报错了

ossl.o: $(top_srcdir)/thread_native.h $(top_srcdir)/thread_$(THREAD_MODEL).h

这个文件其实就在ruby源码包里,解决方法请看下面第3行:

srcdir = .
topdir = /usr/local/include/ruby-2.1.0
top_srcdir = {ruby源码路径}
hdrdir = $(topdir)
arch_hdrdir = /usr/local/include/ruby-2.1.0/x86_64-linux

接着继续make && make install即可

参考: http://stackoverflow.com/questions/21498868/install-openssl-support-for-selfcompiled-ruby-installation

class Twitter
  include HTTParty
  http_proxy 'http://myProxy', 1080
end