我的邮箱偶尔会收到下图这样的邮件,提醒我某个站点的页面因为“noindex”标签存在的缘故,导致没办法被收录。
刚开始收到这类邮件时,我是会直接将其删除的。毕竟我自己很清楚,我的站点已经开放爬取,无论是 robots 文件还是具体的页面上,都不存在 noindex 标签的。

但是类似这样的邮件,收到的次数多了之后,我就比较好奇到底是什么原因,会老是导致搜索引擎认为我的页面拒绝索引。
加上前几天看到 Google Search Central 官方频道上发布了这样一条视频,于是想搞清楚问题原因的兴趣更浓了。

那首先第一个问题,noindex 标签来自哪里?
基本四种主流的渠道,我们所用的 CMS 系统的源代码、主题或插件使用的 JS 代码,主题或者插件所跨域引用的 JS 代码,以及网站的缓存(插件缓存与 CDN 缓存)。
逐一简单说明下。
其实 CMS 系统源码层面的问题很好解决,类似我们平时经常使用使用的 WordPress 这种系统,其 noindex 标签的开关就在网站的“设置”区域。
只需要简单检查下网站的 robots 文件,看看里面是怎么显示的便知道问题所在了。甚至更简单一点,直接将网页源代码打开,在里面搜索“noindex”关键词,当没有出现匹配结果便表示一切正常了。
至于网站所引用的 JS 代码,不管是本地文件引用还是跨域文件引用,我觉得问题都好定位。
方法同上,直接在加载完成的网页上搜索“noindex”关键词。如果出现了结果匹配,就表示肯定是哪个插件有点小毛病。找到这个文件,再从文件定位到插件,去看看具体什么问题。
上面几种渠道排查完,就基本只剩下缓存这个需要排查的点了。
两个方面,一是 CDN 缓存,二是本地插件生成的缓存。
对于 CND 缓存的网页内容是不是存在问题,判断方式也简单,直接用几个国家的 IP 地址分别访问一下,看看源代码里有没有问题 。
如果确实有问题的话,那直接在 CDN 服务商处请求重新缓存。甚至最简单的办法,关闭 CDN 服务,问题自然而然就解决了。
而网站插件所生成的页面缓存,定位的逻辑与上面一样。
但是要注意一个问题,就是我们去梳理问题点的时候,最好用无痕浏览器(或者换个浏览器),不登录管理员账户,再去逐一排查。
缓存插件这块的坑真的太多了,尤其是当插件版本更新、主题版本更新导致彼此不兼容时,你都不知道问题出在哪。
而且一旦涉及到前端输出代码压缩,JS 代码压缩成一个统一文件时,问题就基本缠绕在一块了。