换一种思路解决七牛镜像被搜索引擎收录的问题

许多站长博主常使用七牛进行动静分离,其中的核心功能是对象存储,同时为了加速分发,七牛将静态资源缓存在各地的CDN服务器上,这个功能叫做融合CDN。

如果设置不当,七牛会将整个站点镜像到它的缓存服务器上,内容几乎和源站一样,被一些搜索引擎认为是镜像站,导致源站被降权。眼哥做其他站时就遇到过,static.domain.com 竟然上了百度首页,而源站连影子都没见到。?

七牛默认方案

七牛意识到这个问题,默认会在对象存储空间里生成一个 robots.txt 文件,用来阻止搜索引擎的蜘蛛。文件内容如下:

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.txt 只是一个约定俗成的习惯,对搜索引擎没有强制力,防君子不防小人。上文说到镜像存储被百度收录,用的就是七牛的默认 robots.txt。

网友的智慧

因为以上原因,一些站长想出了其他解决方案:

  1. 将镜像源设置为存放静态资源的子目录,譬如:https://www.idcbuy.com/uploads ,如果网站的静态文件都集中在一个文件夹,这个方法是可行的,但如果比较分散的话就无法做到全站的动静分离。
  2. 新建一个二级域名,例如 cdn.idcbuy.net ,将静态文件都放在这个域名下,再把这个域名镜像到七牛。很敬佩能想出这个方法的大神,但是大神就这么简单地一说,也没有提供实操方法,让人很难琢磨出怎么“ 将静态文件都放在这个域名下 ”。

以上方法要么有缺陷,要么操作复杂,需要一个更简单好用的解决方案。

眼哥的猜想

因为要解决搜索引擎收录问题,所以首先从搜索引擎的原理考虑。我们可以把搜索引擎看做大型的爬虫项目,网页信息之所以保存在搜索引擎的数据库中,是因为它们的爬虫光顾过我们的网站。前面说过,robots.txt 防君子不防小人,搜索引擎的爬虫可以选择遵守它,也可以选择无视它,只要文件能够访问就可能被采集。

那么,假设不让搜索引擎访问呢?或者说,只给搜索引擎有限的访问呢?

搜索引擎之所以收录 static.idcbuy.com 这样的镜像站,是因为它认为这是一个完整的网站。事实上镜像缓存确实跟源站几乎一样,同样有首页、内页和静态资源。一个完整的网站具有独立性,也就是说脱离了源站也能照常运行。知道这样的原理,我们就有操作空间了——让镜像缓存脱离源站就无法访问

使用防盗链功能可以实现这个需求。

设置防盗链

作为对象存储和镜像缓存,虽然七牛赠送了一定的免费额度,但是如果被滥用的话可能给站长带来巨大的经济损失。例如图片、视频被人盗链直接引用到其他网站上,受益的是其他网站,损失的是七牛账号所有者。为此使用七牛一定要设置好防盗链。

登录七牛账号之后进入 融合CDN 页面,点击 域名管理 ,点击右侧的 配置 ,在 访问控制 区域进行设置。

将防盗链打开,切换到白名单模式,添加源站域名。最后一定要将空 Referer 访问关闭,这是杜绝搜索引擎直接访问镜像缓存的关键。

设置过后就只能从源站访问镜像的资源,搜索引擎无法单独访问 www.idcbuy.net ,而源站只会加载镜像缓存中的静态资源,不访问类似首页这样的文件。所以搜索引擎的爬虫从源站爬呀爬,顶多爬到源站需要的静态资源上,而不是缓存的页面上,对搜索引擎来说,这个只包含了图片、视频、css/js 的“镜像站”是不存在的。

其实只需要多想一想,换个思路,问题很可能就迎刃而解。七牛的出现让普通站长也能轻松用上了CDN,从此拯救了无数小水管主机,有兴趣的话可以注册一个,会让你吃到甜头的:七牛云存储入口

七牛近期上线了云主机业务,目前正在进行 0 元免费试用活动,有兴趣的话 请戳这里

耕读君
耕读君

一个筋斗十万八千里,说明上云好啊

文章: 196

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注