网站建设

纠正静态文件域名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/ 自己看着办吧,个人建议加上,避免遗漏主题特有静态文件,比如字体。
阅读全文
网站建设

WordPress百度自动推送JS优化,规避错误、重复推送问题

导读:关注SEO、关注收录的站长,应该都知道百度搜索提供了一段自动推送的js代码,可将任意网页推送到搜索引擎,加快收录。但是,这段代码并不是简单的增加到网页中万事大吉了!百度埋坑技术,你我都懂的!本文主要分享埋坑之自动推送JS代码的优化... 一、问题描述 百度近些年推出过多种收录推送工具,比如结构化数据插件、主动推送、自动推送js等等。每一次张戈都会对这些东西进行优化处理,主要是因为这些工具都会出现重复推送的弊病!虽然百度并没有申明重复推送会带来什么副作用。但根据我个人的经验,同一篇文章,如果重复推送,可能会让百度蜘蛛认为你这文章更新频繁,不稳定从而进入收录沙盒短期内不会展示! 这一点,在以往的文章中我都反复提出过: BaiduSubmit:百度WordPress结构化数据插件(改进版) WordPress百度链接主动提交插件:Baidu-links-submit优化版 WordPress发布文章主动推送到百度,加快收录保护原创 对于百度最新推出的自动推送JS代码,通过站长平台的反馈来看,依然存在重复推送的坑: Ps:看到这个回复,其实我是打心底鄙视了百度一把!这js只需要添加到新页面?那新页面收录之后,我们再去删除js代码?那我还要经常关注页面是不是被收录?那几万个页面的网站还得靠工具检测咯? 重复推送到底有没有副作用,百度并没有给我明确的答复。不过管理员明确回复,无需添加主动推送,就算是没有副作用,已收录的页面也添加自动推送js代码,也会浪费每天的可推送额度( 当天剩余的可推送url条数)! 另外,我们知道,很多时候多个url地址其实是同一个页面内容,比如: 而且,当我们给页面带上查询参数,显示的依然是同一个页面内容,但是Url地址变了!!那么自动推送js获取到的Url也变了!它就会将这个 Url 推送到搜索引擎!实际上,这些相同内容的页面我们并不希望重复抓取和收录! 二、问题解决 根据上面的分析,这类自动推送js代码就不能整站添加,而是只需添加到未收录且正规Url的页面。 比如: https://zhang.ge/5093.html 百度已收录,这种页面不添加 https://zhang.ge/5096.html 百度未收录,这种页面要添加 https://zhang.ge/5096.html?from_weixin 百度未收录,但属于重复内容页面,所以不添加 已收录、未收录的判断,关注张戈博客的朋友肯定记得我之前在博客分享过百度是否收录的插件和代码吧!而对于是否是正规页面,也只需要添加一个简单判断。 如上PHP代码,添加到主题functions.php即可。当页面未被百度收录,且被访问的页面地址等于WordPress唯一页面地址时,将会输出百度自动推送js代码,不符合条件的页面则不会输出。 2016年5月31日更新说明:有朋友反馈收录判断不准确,花时间DEBUG看了下,发现抓取到的百度搜索结果可能是空白内容等错误内容,导致判断为已收录! 所以,上述代码加入百度搜索结果必要关键词【百度为您找到相关结果】的条件判断,目前来看应该比较准确了,已在使用的朋友请更新到最新代码。 三、其他说明 和以前分享的百度是否收录代码一样的工作原理,文章加载时,会在百度搜索当前文章的url地址,如果百度未收录,查询结果中会匹配到【没有找到该URL。您可以直接访问】或【很抱歉,没有找到与】文字内容。当代码确认页面已收录时,将会在文章中添加一个值为1的 baidu_record 自定义栏目。 只有当 baidu_record 这个自定义栏目的值不存在时,代码才会去百度查询收录结果。并且在确认未收录之后,才会在网页 footer 中输出自动推送js代码。 这样就规避了已收录页面重复推送和百度实时查询导致加载慢两个问题! 另外,其实还有另一个值得关注的坑:百度统计代码也会自动推送,是否也存在本文提到的问题,就不得而知了。 最后,顺便说明一下,360搜索也推出了主动收录js代码,喜欢折腾的朋友可以参考本文进行优化。 效果补充:实施后,自动推送数量以从200+降为20+,说明已收录的文章不会重复推送了。
阅读全文
网站建设

分享最近对网站外链跳转页面代码的一些改善

很久之前在博客分享了几篇关于外链跳转的代码或教程。如果没看过的可以先了解下: 分享两种外链跳转方法,可避免权重流失。 分享一个WordPress外链跳转教程,兼容知更鸟暗箱下载和文章索引 分享知更鸟Begin主题外链跳转代码,兼容下载按钮和弹出层上的外链 最近,有了一些灵感以及在其他博客也吸收了一些相关经验,就把现用的外链代码小改了下,感觉还不错,现在分享下,喜欢的可以试试。 Ps:不喜欢啰嗦的朋友请直接从第五步开始看。 一、安全加固 首先,加入了在鱼叔博客看到了的防止恶意请求的简单防护代码: 二、跳转方式 之前的代码使用的是html的refresh跳转方式: 正好之前分享百度是如何取消关键词的时候,curl到的是这样的一个结果: 百度使用了一个跳转方式,成功伪造了新的referrer来路,从而屏蔽了搜索关键词。 很明显上面的代码使用了html的refresh和JS两种跳转模式,而html的用到了noscript标签,也就是说当浏览器不支持js的时候才会使用html跳转的方式。 所以,我之前分享的跳转代码也可以参考改进下: 三、跳转加密 看过有博客对外链进行了一个Base64加密,所以我也加入了这次小改当中,而且还可以同时兼容不加密的跳转链接: 四、禁止收录 既然是外链跳转,肯定不希望被蜘蛛收录或抓取,所以多加入了一个禁止收录和抓取的META申明: 五、正式部署 ①、完整跳转代码 I、PHP版本 将以上代码保存为go.php上传到网站根目录即可。 II、JS版本 这算是这次的彩蛋吧!偶然的灵感,让我想到了其实可以用 js+html 纯静态来搞定这个跳转功能。测了又测,终于新鲜出炉!和PHP基本一致的功能,可以放心使用! 选择JS 版本将以上代码保存为 go.html 上传到网站根目录即可。 Ps:2个版本的功能是一致的,优缺点区别:PHP版本是动态的,会略微产生服务器的性能负载,而JS版本则需要浏览器支持JS才可以功能。不过目前来看,绝大部分浏览器都是支持的! ②、Nginx伪静态 之前的代码用的都是 “go.php?url=外链地址” 的形式,经常也看到有个别网站对外链跳转做了伪静态,也就是 “/go/外链” 这种形式。 这次,也试了下,感觉还不错,所以就整了下。只要在Nginx中加入如下规则即可: I、PHP版本 II、JS 版本 张戈博客 TIPS 实际上,将php版本保存为 index.php 或 将JS版本保存为 index.html,然后在网站根目录新建一个go文件夹,把 index.php 或 index.html 上传到go文件夹中,那么Nginx就可以使用一条通用规则了: 说白了,因为 index.php 或 index.html 是WEB读取的默认文件,其中 index.html 一般优先级比 index.php更高一些,所以只需要重写到go目录即可,至于你选择js版本还是php版本就看你index放的是php还是html了。 此段文字看不懂的话,请忽略之。 Ps:上述代码如果不知道放到哪,可以直接放在 location / { 的前面即可。加入伪静态规则,并且重启Nginx之后,我们就可以通过 "/go/外链加密串" 的方式进行跳转了。不过亲测发现无法使用 /go/https://zhang.ge/xxx 这样直接丢http地址的方式进行跳转,因为http://会读取为 http:/,少了一个斜杠,这个之前博客文章其实有提到过,这里就不深究了。 ③、Apache伪静态 还是有不少网站用的是Apache服务器,所以还是补充一下Aapace伪静态规则: 将上述规则代码添加到 .htaccess 文件的第一行即可。 ④、WordPress替换 做好了跳转页面,我们就需要将之前应用的相关函数都修改一下。其实就是将代码中的 /go/?url=外链 改成 /go/base64加密串 的模式,下面贴一下具体代码,请自行参考修改。 Ps:由于张戈博客需要兼容之前的 /go/?url= 的形式,所以现在用的是/goto/伪静态形式,无此需求的网站可忽略之。 A. 文章外链替换 B. 评论外链跳转 C.  下载外链跳转 用过之前外链跳转的网站,应该都有上述ABC代码,只要参考上述代码,修改一下替换后的链接形式即可。部署后,刷新前台文章或评论,就能看到效果了。 看了还是不太会的朋友,建议多看、多想、多动手、多搜索、少提问,这是网站折腾学习的不二法门!
阅读全文
网站建设

分享知更鸟Begin主题外链跳转代码,兼容下载按钮和弹出层上的外链

今天 osx86 问我,说网上找的代码用到begin主题上,会导致下载按钮(href=#button)也被替换,导致无法弹出下载界面。其实张戈博客之前分享过一个博客外链转内链的跳转到代码,可以兼容 HotNewspro主题的下载按钮和文章索引,于是我要他站内搜索下。 他用了后发现确实可以,不过给我反馈了一个问题:确实滤过了下载按钮和索引,但是弹出层上的下载链接没有被替换成跳转链。 我随即看了下,发现确实是这样。因为代码是在文章content过滤的,而下载按钮是独立的模板,所以并不会生效。 唉,世上无难事,依葫芦画瓢是也! 方法很简单,找到下载按钮相关模板文件,然后替换不就得了吗?且往下看。 一、新增函数 将如下 php 代码添加到 主题目录下的 functions.php 文件中: 这个函数使用很简单,直接传入链接,函数会自动判断,并绝对会返回一个内链,比如: <?php echo link_nofollow("http://www.baidu.com");?> 就会输出: https://zhang.ge/go/?url=http://www.baidu.com 需要配合张戈博客之前分享的跳转代码,详见 https://zhang.ge/2703.html。 二、修改模板 已经有了替换函数了,下一步就是找到你要替换的地方,将原先的值传入函数即可。Begin 的下载弹出层代码位于 begin/inc/file.php 原始代码如下: 其中的 url1-4 就是我们要处理的目标,所以如下修改即可: 保存后,文章下载弹出层里面的外链就变成了内链跳转的模式了。 代码和方法都非常简单,有需要的自己折腾吧!不清楚的可以参考一下之前分享2篇文章: 分享两种外链跳转方法,可避免权重流失 分享一个WordPress外链跳转教程,兼容知更鸟暗箱下载和文章索引
阅读全文
网站建设

SEO分享:彻底禁止搜索引擎抓取/收录动态页面或指定路径的方法

最近张戈博客收录出现异常,原因并不明朗。我个人猜测存在如下几个直接原因: 更换主题,折腾时带来过多错误页面或间歇性访问错误; 直接线上折腾Nginx缓存和缩略图,可能导致间歇性大姨妈; 新发文章瞬间被转载,甚至是整站被采集,可能导致“降权”; 百度居然开始收录动态页面,而且还在持续抓取动态页面。 对于前三个,已发生的已无法改变,要发生的也无法阻止。对于转载和采集,我也只能在Nginx加入UA黑名单和防盗链机制,略微阻碍一下了,但是实际起不到彻底禁止作用,毕竟整个天朝互联网大环境就是这样一个不好的风气,很多人都不愿意花时间、用心写文章,喜欢不劳而获的转载甚至是篡改抄袭。 对于第四点,真是忍无可忍。我很想对百度说,我忍你很久了。明明robots里面加入了禁止抓取这些动态地址和某些路径,但是蜘蛛依然每天抓取,而且还收录了!收录也没事,关键收录了动态地址居然不收录静态地址了??这是要闹咋样啊? 案例①: 案例②: 案例③: 以上案例中的地址,我通过百度站长平台的robots检验结果都是被禁封的,真不知道百度怎么想的: 所以,我决定用极端手段,彻底禁止这些不听话的蜘蛛抓取那些我不想被收录的页面!robots协议显然还是太温柔了!下面看张戈怎么放大招吧! 一、Nginx 规则 张戈博客用的是 Nginx,所以直接在 server  中新增如下规则即可: Ps:就是将上述代码中“新增规则【开始】”到“新增规则【结束】”内容添加到我们网站的 Nginx 配置-- server 模块 中的 root 指令之后即可。 二、 Apache规则 Apache 测试了半天总是500错误,暂时先放弃了,有时间再来调整! 我自己测试写的规则如下,感兴趣的朋友可以自行测试看看,也许是我环境的问题。 Ps:大概思路和Nginx一致,既匹配了蜘蛛UA,又匹配了禁止关键词的抓取,直接返回403(如何返回404,有知道的朋友请留言告知下,测试成功的朋友也敬请分享一下代码,我实在没时间折腾了。) 三、PHP代码版 使用很简单,将上述PHP代码添加到主题目录下放 functions.php 当中即可。 四、测试效果 测试效果很简单,直接利用百度站长平台的抓取诊断工具即可:   点开看看可以发现真的是返回404: 最后,结合张戈博客之前分享的《SEO技巧:Shell脚本自动提交网站404死链到搜索引擎》即可将这些无用的收录全部删除: 有朋友说我这个是黑帽手法,用户可以访问,而搜索引擎却404,很适合淘宝客网站的商品外链。是什么手法我不清楚,我只知道实用就好!特别是张戈博客那些外链,都是用/go?url=这个路径来跳转的,现在这样处理后,就算搜索引擎不遵循robots硬是要抓取,就只能抓到404了! 好了,本文就分享到这,这种做法和张戈博客之前分享的《SEO分享:彻底禁止搜索引擎收录非首选域名的方法》一样,属于极端优化做法,实施后,我们的索引肯定会大量下降,因为很多垃圾索引或收录都将被删除,但是这是良性的做法,因为优质且不重复的内容才是提高排名的王道!
阅读全文
网站建设

百度站长平台robots工具升级后的新发现

百度站长平台robots在11月27日全新升级,主要是新增了2大功能: ①、可分别显示已生效的robots和网站最新的robots,以便站长自行判断是否需要提交更新: ②、新增robots校验功能,从此不再写错规则,把蜘蛛挡在门外: 对此,很多关注互联网的博客网站都已发文分享,而且官方也有具体说明,我就不继续赘述了。 写这篇文章的目的,只要是为了纠正以前的一个robots认知错误!记得张戈博客前段时间分享过一篇《浅谈网站使用七牛云存储之后的robots.txt该如何设置?》,我在文章分享的七牛镜像域名的robots应该如下设置: 本来当时使用百度robots检测也是没问题的: 当这次robots工具升级之后,我使用新增的【规则校验】功能试了下,竟然是如下结果: 纳尼?最后的禁封难道不起作用了??于是,我试着把禁止规则移动到最前面看看效果: 结果,依然全部允许抓取!!这不科学啊! 想了半天,我看只有一个解释了,那就是百度只看Baiduspider标签了,其他的规则它不理睬!难怪之前百度依然会收录我的七牛静态域名: 好吧,上有政策下有对策,对之前的规则稍作修改即可: 再次检测已经没问题了: 接着,为了验证之前的一个疑问,我进一步测试了下: 从图中的结果可以看出,禁止规则的前后位置,并不影响允许抓取的规则,说明不存在前后优先级!从而推翻了张戈博客旧文章关于前后优先级的说法。而真正的优先级应该是:Allow高于Disallow,及【允许规则】高于【禁封规则】。 最后,总结一下。通过本文测试,说明了2个问题: i. 当robots中存在百度蜘蛛标签Baiduspider时,通用规则将失效!虽然还不知道是不是robots升级之后的bug,为了保险起见,站长在写robots的时候,如果存在具体UA规则,记得额外加上禁封规则会比较好! ii. robots规则并不区分前后优先级,而是Allow的优先级大于Disallow(即>)。 好了,这就是本次百度robots工具升级的新发现,希望对你有所帮助! 最新补充:最近测试发现本文所写问题已被百度修复!
阅读全文