网站建设

纠正静态文件域名robots写法,解决百度搜索不显示缩略图的问题

可能有部分站长用了七牛CDN之后,会发现在搜索引擎搜索的结果中缩略图越来越少,甚至消失。。。经过张戈多次思考分析,发现居然是因为使用了七牛CDN导致的,本文就简单分享下这个坑。 在此之前,张戈博客曾2次分析过网站使用七牛CDN之后,静态二级域名robots的写法: 百度站长平台robots工具升级后的新发现 浅谈网站使用七牛云存储之后的robots.txt该如何设置? 确实也是可以了,百度图片收录也正常了。 后来博客换成了php缩略图,并通过Nginx将缩略图重写成了 x.png?w=480 的形式【相关文章】。 接着,将缩略图全部丢到了二级静态域名 res.zgboke.com 上,最后将静态域名的robots设置如下: 结果,很久很久之后就发现百度搜索中,缩略图越来越少,甚至到最后几乎没有了。经验告诉我,要么就是蜘蛛抓取不到图片,要么就是被robots禁封了。 结合百度站长平台的robots工具和抓取诊断工具检查后,发现果然是robots误禁封造成的! 百度索引变动一直以慢著称,所以robots写错了也不会在十天半个月突显出来,真是坑的一B! 通过抓取诊断工具,发现普通图片可以抓取,带参数的图片就抓取失败。经过多次测试,发现问题出现在 Allow: /*.png$ 这种写法,是以 png 结尾,尾部不再包含其他任何字符,因此,上文提到的 PHP+Nginx 缩略图形式 x.png?w=480 ,就处在 robots 禁止抓取的范围了: 于是,我将静态域名robots修改如下: 因为最后一行是禁止所有,所以保守起见,robots.txt我也加入了允许规则。第二行则是关键,一般博客的缩略图和图片都在 wp-content 路径下,不管是不是带参数,都统统允许了。 经过了几个月,目前百度搜索的缩略图基本都恢复正常了: 所以,发现搜索引擎缩略图收录异常的朋友,可以先分析下是不是蜘蛛被robots或其他因素拦截了。 最新补充:启福留言说其实把尾巴的$改成通配符*就好了。确实如此,所以静态域名的robots可以修改如下: 这样就可以让蜘蛛仅抓取图片了,范围比 wp-content 更精准一些。总之,对哪种写法存在疑问,只要借助百度站长平台的robots工具检测一下就一清二楚了。 最后强调说明一下,本文说的robots是适用于只存放图片等静态文件的二级域名(比如:res.zgboke.com)!别乱用到主站的robots,被K站了别来哭哦! 再次更新:突然想起一件事,记得之前用过谷歌的移动设备适合性测试工具,是需要抓取css和js的,否则显示出来的布局就是乱的了:而且百度的移动友好度测试工具(目前好像已经隐藏,看不到了)也需要抓取css和js,所以css和js还是得放开,最终版修改如下: 其中,Allow: /wp-content/ 自己看着办吧,个人建议加上,避免遗漏主题特有静态文件,比如字体。
阅读全文
网站建设

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

最近因为稳定性考虑,我的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即可: 对于问题②: 这有是一个老生常谈的问题,但是每次都会比较纠结!但比较肯定的是,对于七牛这种类似镜像站的域名,还是禁止抓取比较好!否则就会导致收录重复。 张戈博客备案之后,就将static.zhang.ge这个域名cname到了七牛的空间域名,所以网站的静态文件也就可以用这个二级域名来存放。 七牛的空间,创建时默认会有一个robots,禁止所有搜索引擎抓取,内容如下: 直接使用这个robots,对SEO肯定是没问题的,避免了搜索引擎抓取到重复的内容。但是,有个小缺憾,使用这个robots之后,以前百度和360搜索结果中的缩略图都会被K掉。因为你的图片被禁止抓取了!!! 个人觉得搜索结果中有特色图片还是不错的,也许会吸引用户点击! 所以,我对放置在七牛空间的robots如下改造(推荐使用): 意思很简单,就是允许百度和360抓取文章中的图片,其他搜索引擎一律禁止抓取! 这样做的好处是: ①、在避免搜索引擎收录七牛重复内容的同时,允许其收录文章的特色图片和内容配图; ②、禁止抓取可以极大的节省七牛空间的GET次数,因为搜索引擎的每一次抓取都将产生一次GET,而七牛免费空间的GET次数是有限制的,我们完全没必要白白浪费。 用百度robots工具检测下: 没啥问题,直接上传到七牛空间,访问http://static.zhang.ge/robots.txt 即可看到效果。 今天,在群里谈论到这个问题的时候,龙三兄弟居然说可以在主域名写robots去禁用二级域名的抓取,着实震惊到我了,谁说可以这样写的? 好了,robots的具体规则本文就不罗嗦了,只提2点: 最新补充:第①条说法已被推翻,关于robots优先级,请看最新文章:https://zhang.ge/4781.html ①、在robots.txt文件中,前面规则的优先级要高于后面的规则,而且至少要有一条Disallow记录,否则就没有起到禁止抓取的作用了,比如 这种写法将允许抓取/wp-content/uploads目录,而不允许抓取/wp-content/目录。 若反过来写: 这种写法就是错误的,后面一条的Allow将不能生效,因为前面的规则优先级要高些,这么说应该懂了吧? ②、路径【不加斜杠】的规则比【加斜杠】的规则能匹配的范围更大,举例: 这种写法,确实是禁止了二级目录bbs,但是却没有禁止 /bbs,即未禁止这个二级目录的默认页(比如:WordPress默认的页面地址就是不带斜杠的),如果你想禁止目录下的所有内容,就不要带斜杠: 对于第②条说法,可以查看百度官方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,现在的速度也是杠杠的!
阅读全文
网站建设

发现插件生成的robots.txt不能被谷歌和360识别

上次通过《正确的Win主机网站伪静态设置方法》重新设置了玛思阁的伪静态,当时由于使用Rewrite robots没有效果,就安装了一个生成robots.txt的插件,然后发现访问robots地址也有了指定的内容。几天却发现360全部被K,仅剩首页,而谷歌也不再收录新页面,一直以为是我的robots内容有误,于是搜来搜去,改了无数次robots内容。谷歌在【已拦截的网址】选项中总是显示【语法有误】,在sitemap提交界面也用英文提示“所有内容被robots拦截...”云云。但是百度却未受影响,开始收录玛思阁的文章了。。。 今天闲下来了,决定解决这个疑难杂症!于是我去复制了别人正常收录的robots内容,然后贴到robots插件中生成新的,结果发现在谷歌sitemap提交时依然提示全部被拦截!我勒个去,这明显说明问题出现在插件上了!但是使用插件生成了robots,百度站长平台检测又是没问题的,真是纳闷! 于是重新去查Rewrite规则相关资料,并通过UE编辑器重建httpd.ini文件,新增了内容: RewriteRule /robots.txt /robots.txt 删除robots插件之后,发现可以访问自定义的robots了!以前httpd里面也有这条规则,就是不生效!难道是编码错了么? 重新编写robots.txt上传后,再到谷歌提交sitemap,发现问题已解决: 至于效果,可能要等几天再去查看下收录情况了! 下面贴一下我的httpd.ini和robots内容,以供参考: httpd.ini robots.txt robots内容暂时先这样了,以后观察收录情况再来修改。 另外,不知道各位有没有设置过更新服务【WP后台=>设置=>撰写】,在我搜索robots的时候看到了别人提供的博客更新通知列表,管它有没有用,先加上再说:   RPC更新列表如下:
阅读全文