网站建设

浅谈网站使用七牛云存储之后的robots.txt该如何设置?

Jager · 11月6日 · 2014年 · · · 7221次已读

最近因为稳定性考虑,我的 2 个网站都脱离了 360 网站卫士的阵营,准备单飞。昨天在模拟 CC 攻击自己网站的时候,发现十来个并发就扛不住了!

分析了一下原因,在没开启 360CDN 缓存的情况下,10 个并发攻击,硬件配置肯定是没问题的,那么无法访问的原因很明显就是带宽不够!

现在我的服务器带宽已经升级到了 2M,也就是峰值 250kb/s 的样子。试想一下,打开一个页面打开需要 100kb 的速度才感觉顺畅,如果 10 个并发,那么每个页面只能分到 25kb/s,肯定非常卡!产生 10 个并发时,2M 带宽会被占满,其他客户端根本无法访问,跟挂了没啥区别!

既然不用 360CDN 了,那么要改善这种带宽不够的情况就得请大名鼎鼎的七牛云存储出马了!

在 wp-super-cache 插件的 CDN 设置中填写七牛空间地址,重新启用了这个好久没用过的免费 CDN 加速(话说我一直把七牛当远程备份用,不知道七牛的产品经理知道了会不会跳出来打我。。。)

启用七牛之后,发现了 2 个问题:

①、WordPress 的 Ajax 评论无法使用了;

②、纠结存在七牛的静态图片是否要禁用搜索引擎的抓取和收录。

对于问题①:

很好解决,如下修改 comments-ajax.js 即可:

var i = 0, got = -1, len = document.getElementsByTagName('script').length;
while ( i <= len && got == -1){
	var js_url = document.getElementsByTagName('script')[i].src,
			got = js_url.indexOf('comments-ajax.js'); i++ ;
}
#新增如下行,前面是七牛空间地址,后面是博客地址
js_url = js_url.replace('static.zhang.ge','zhang.ge');

对于问题②:

这有是一个老生常谈的问题,但是每次都会比较纠结!但比较肯定的是,对于七牛这种类似镜像站的域名,还是禁止抓取比较好!否则就会导致收录重复。

张戈博客备案之后,就将 static.zhang.ge 这个域名 cname 到了七牛的空间域名,所以网站的静态文件也就可以用这个二级域名来存放。

七牛的空间,创建时默认会有一个 robots,禁止所有搜索引擎抓取,内容如下:

User-agent: Baiduspider
Disallow: /
User-agent: Sosospider
Disallow: /
User-agent: sogou spider
Disallow: /
User-agent: YodaoBot
Disallow: /
User-agent: Googlebot
Disallow: /
User-agent: Bingbot
Disallow: /
User-agent: Slurp
Disallow: /
User-agent: MSNBot
Disallow: /
User-agent: googlebot-image
Disallow: /
User-agent: googlebot-mobile
Disallow: /
User-agent: yahoo-blogs/v3.9
Disallow: /
User-agent: psbot
Disallow: /
User-agent: *
Disallow: /

直接使用这个 robots,对 SEO 肯定是没问题的,避免了搜索引擎抓取到重复的内容。但是,有个小缺憾,使用这个 robots 之后,以前百度和 360 搜索结果中的缩略图都会被 K 掉。因为你的图片被禁止抓取了!!!

浅谈网站使用七牛云存储之后的robots.txt该如何设置? 浅谈网站使用七牛云存储之后的robots.txt该如何设置?

个人觉得搜索结果中有特色图片还是不错的,也许会吸引用户点击!

所以,我对放置在七牛空间的 robots 如下改造(推荐使用):

# robots.txt for statice domain
User-agent: Baiduspider
Allow: /wp-content/uploads/*.jpg$
Allow: /wp-content/uploads/*.png$
Disallow: /

User-agent: 360Spider
Allow: /wp-content/uploads/*.jpg$
Allow: /wp-content/uploads/*.png$
Disallow: /

User-agent: Baiduspider-image
Allow: /wp-content/uploads/*.jpg$
Allow: /wp-content/uploads/*.png$
Disallow: /

User-agent: 360Spider-Image
Allow: /wp-content/uploads/*.jpg$
Allow: /wp-content/uploads/*.png$
Disallow: /

User-agent: *
Disallow: /

意思很简单,就是允许百度和 360 抓取文章中的图片,其他搜索引擎一律禁止抓取!

这样做的好处是:

①、在避免搜索引擎收录七牛重复内容的同时,允许其收录文章的特色图片和内容配图;

②、禁止抓取可以极大的节省七牛空间的 GET 次数,因为搜索引擎的每一次抓取都将产生一次 GET,而七牛免费空间的 GET 次数是有限制的,我们完全没必要白白浪费。

用百度 robots 工具检测下:

浅谈网站使用七牛云存储之后的robots.txt该如何设置?

没啥问题,直接上传到七牛空间,访问http://static.zhang.ge/robots.txt 即可看到效果。

今天,在群里谈论到这个问题的时候,龙三兄弟居然说可以在主域名写 robots 去禁用二级域名的抓取,着实震惊到我了,谁说可以这样写的?

浅谈网站使用七牛云存储之后的robots.txt该如何设置?

好了,robots 的具体规则本文就不罗嗦了,只提 2 点:

最新补充:第①条说法已被推翻,关于 robots 优先级,请看最新文章:https://zhang.ge/4781.html

①、在 robots.txt 文件中,前面规则的优先级要高于后面的规则,而且至少要有一条 Disallow 记录,否则就没有起到禁止抓取的作用了,比如

User-agent: *
Allow: /wp-content/uploads
Disallow: /wp-content/

这种写法将允许抓取/wp-content/uploads 目录,而不允许抓取/wp-content/目录。

若反过来写:

User-agent: *
Disallow: /wp-content/
Allow: /wp-content/uploads

这种写法就是错误的,后面一条的 Allow 将不能生效,因为前面的规则优先级要高些,这么说应该懂了吧?

②、路径【不加斜杠】的规则比【加斜杠】的规则能匹配的范围更大,举例:

User-agent: *
Disallow: /bbs/

这种写法,确实是禁止了二级目录 bbs,但是却没有禁止 /bbs,即未禁止这个二级目录的默认页(比如:WordPress 默认的页面地址就是不带斜杠的),如果你想禁止目录下的所有内容,就不要带斜杠:

User-agent: *
Disallow: /bbs

对于第②条说法,可以查看百度官方 robots 的格式说明中的关于 Disallow 的说明(原文地址):

Disallow:

该项的值用于描述不希望被访问的一组 URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以 Disallow 项的值开头的 URL 不会被 robot 访问。

例如 "Disallow:/help" 禁止 robot 访问 /help.html、/helpabc.html、/help /index.html,而"Disallow:/help/" 则允许 robot 访问/help.html、/helpabc.html,不能访问 /help/index.html。"Disallow:"说明允许 robot 访问该网站的所有 url,在"/robots.txt"文件中,至少要有一 条 Disallow 记录。如果"/robots.txt"不存在或者为空文件,则对于所有的搜索引擎 robot,该网站都是开放的。

继续回到带宽瓶颈这个话题,了解网页结构的都知道,占据页面体积的主要是静态文件,比如 JS、CSS 和图片等。其他字符文字都非常小!

那么,在带宽不足又没开启 360 一类的 CDN 加速的时候,利用七牛云存储给网站做简单的动态分离处理的效果是非常不错的!因为最占带宽的静态文件已经交给七牛去处理了,你网站也就输出一些文字字符啥的,就极大的缓解了服务器网络小水管的尴尬!

所以,七牛云存储的主要功能就是分担来自带宽的压力,而不是其他!当网站服务器带宽不够用,又不想用啥云加速或网站卫士的时候,你就可以速度去启用七牛云存储了!

好了,关于七牛云存储和 robots 设置就说这么多了,发现没用 360CDN,现在的速度也是杠杠的!

38 条回应
  1. 极品飞鸽 2014-11-6 · 20:42

    :smile: 一直木有用过robots协议

  2. 七弦琴 2014-11-6 · 21:38

    我将图片和静态文件分别用了两个静态域名,图片robots直接给删了。。

    • avatar
      Jager 2014-11-6 · 22:21

      没有robots有2个不好,第一个是可能造成镜像重复收录。
      第二个是浪费七牛的get次数,搜索引擎抓取都是要消耗七牛get次数的。

  3. 陌小雨 2014-11-7 · 8:41

    网站正在备案中,听说robots中Disallow的优先性大于Allow,所以最好先写Disallow,不知道是不是有这么回事。 :oops:

    • avatar
      Jager 2014-11-7 · 8:56

      仔细看了下资料,其实优先级和顺序有关系:前面的优先级要高于后面的优先级。文章已补充。

  4. 屌丝 2014-11-7 · 9:58

    Jager兄 我的七牛只用来做图片外链

    User-agent: *
    Disallow: /
    User-agent: Googlebot-Image
    Allow: /
    User-agent: Baiduspider-image
    Allow: /
    User-agent: 360Spider-Image
    Allow: /	
    

    这么设置行么

    • avatar
      Jager 2014-11-7 · 10:00

      注意文章后面部分关于robots优先级的说法。
      你这样的顺序写的话,后面的允许全部无效。

      • 屌丝 2014-11-7 · 10:03

        就是说
        User-agent: *
        Disallow: /
        要放在后面?

        这个结构是水煮鱼插件默认的 看来得改改了 感谢!

        • avatar
          Jager 2014-11-7 · 11:12

          文章已更新,关于robots规则的顺序优先级问题,我已贴上百度官方权威资料。

  5. Alick.Li 2014-11-8 · 23:37

    不错 就是太麻烦了....签到成功!签到时间:下午11:32:39,每日签到,生活更精彩哦~

    • avatar
      Jager 2014-11-10 · 12:31

      你消失的时间可不短啊

  6. wingsBlog 2014-11-9 · 14:09

    好复杂的感觉

  7. 梦轩丽人 2014-11-9 · 17:33

    对于七牛云存储,目前我只用来存储图片而已,利用得比较少啊

    • avatar
      Jager 2014-11-10 · 12:32

      我也是用来存在静态文件和网站备份

  8. 电脑维修 2014-11-9 · 19:18

    不错的一个博客

  9. 2014-11-9 · 19:54

    话说我用了七牛后就没设置过robotss

    • 开水 2016-1-5 · 11:15

      大神,有空吗,用了七牛后缩略图不显示,可否指点一下

  10. PHP二次开发 2014-11-9 · 22:09

    好几天没来了,最近一直在忙逆袭会的事情。

    • avatar
      Jager 2014-11-10 · 12:32

      很不错的项目,逆袭~~

  11. 香港服务器租用 2014-11-10 · 14:13

    讲的很好也很细致,很有用,以后继续分享哦。
    独立IP主机 风暴来袭 优惠62% 终生3.8折,转发活动送wifi…

  12. 热腾网 2014-11-11 · 13:32

    这个设置很不错。

  13. 蒲德高 2014-11-19 · 11:19

    看上去的确有点复杂啊

  14. aoweisi 2015-1-21 · 12:03

    请教个问题 七牛镜像过后会提供一个网址 例如本站的
    http://7u2hvs.com1.z0.glb.clouddn.com/
    通过这个网址可以看到和本站一样的东西 这个存在的意义是什么啊!

    • avatar
      Jager 2015-1-21 · 12:07

      他镜像了你的文件,访问当然是一摸一样了,不过他的数据不会更新而已。
      所以,才有了本文中介绍的robots设置,禁止百度抓取七牛中的相同数据,造成镜像惩罚!

      • aoweisi 2015-1-21 · 12:10

        现在七牛建镜像的时候robots 已经 自动模版添加了禁止抓取

        我就是想明白 这个镜像站的作用是什么?

        • avatar
          Jager 2015-1-21 · 12:11

          这个很难理解么?你自己的网站里面静态资源都已经改成了七牛的,用户访问你的网站的时候,这些静态资源实际上是从七牛拉取的,而不是你的网站!
          如果七牛不镜像你的网站,哪会这些静态资源?

          • aoweisi 2015-1-21 · 12:13

            也就是说 依访客地域七牛就近分配节点 加速访问吗?
            没怎么接触过cdn加速这些东西

            • avatar
              Jager 2015-1-21 · 12:14

              加速是一方面,就近原则。
              第二个主要是缓解带宽压力,国内很多云服务器都是1M带宽。
              文章最后几段已说明。

              • aoweisi 2015-1-21 · 12:15

                好的 基本明白了!
                多谢指教~~~

  15. 小众博客 2015-7-6 · 15:06

    我之前用七牛做镜像,用的是默认的robots,但是百度为何还是收录了二级域名的首页。

  16. 赣南剑客 2015-12-3 · 23:42

    直接上传到七牛空间,这个提供的robots不是放到自己空间吧!是放七牛空间的内容管理里面吗?

  17. 狂族晨曦 2016-3-6 · 13:55

    我的七牛开了防盗链,设置了白名单,然后蜘蛛根本访问不了robots.txt。请问白名单和robots要怎么配合呢?

  18. 男人的日常 2016-5-6 · 9:10

    第二个是浪费七牛的get次数,搜索引擎抓取都是要消耗七牛get次数的。正解 男人的日常

  19. yearliny 2016-12-28 · 13:38

    评论特效炫酷到爆~就是有点卡。七牛云CDN现在有了个新问题,就是不让谷歌搜索引擎抓取的话,对谷歌来说,这个网站的布局是乱的,不适合移动端访问,于是会被降权。

    • avatar
      Jager 2016-12-29 · 9:07

      那就把 *.js 和 *.css 都加入到允许范围即可。灵活变通嘛

  20. 玉满斋 2017-1-8 · 1:04

    那我主站的robots.txt里要不要禁止抓取静态文件只允许七牛绑定域名的静态文件被抓取呢?两个域名都允许会不会被判定为是重复抓取而被降权呢?

    • avatar
      Jager 2017-1-9 · 9:40

      静态文件没什么影响

  21. Alliot 2017-4-21 · 23:11

    像我这种静态博客,用七牛云做图床的估计不用修改七牛云的默认robots.txt规则了。。。