网站建设

纠正静态文件域名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针对百度星火计划2.0原创保护的优化措施

今天在看百度站长平台的时候,发现1月18日发布了一篇介绍星火计划2.0的文章。仔细看了下,感觉到可用之处,就对张戈博客加了一些代码,算是针对性优化。 下面分享给大家,推荐使用! 一、星火计划 什么时候百度星火计划?其实我也是第一次听到,不过其内容肯定是像我这种原创博客都非常关心的——原创保护。 文章介绍中提到了什么是原创和伪原创,看得我都不想因为本文摘抄其内容而变成了伪原创了。所以感兴趣的可以自己点开看:http://zhanzhang.baidu.com/college/articleinfo?id=782 总之,百度星火计划就是对原创文章进行保护,让那些只会采集剽窃、甚至是篡改他人作品的网站统统死啦啦的。 就像文章说的一样(无奈,我还是要摘抄一下): 星火计划2.0项目的意义: 1,对于有转载的原创网页,百度搜索会从众多相同内容中识别出原创网页,使之在搜索结果中的排序不被对应的转载网页超越; 2,对于通过百度站长平台主动推送的原创数据,我们在识别成功后,会在搜索结果处进行“原创”标记 ,进一步凸显原创内容的价值,为原创者正名。 不过,对于是否真的不被超越,比如站长之家转载了张戈博客文章之类的,咱们拭目以待! 二、如何优化 文章的最后提到了网站针对星火计划能够进行的一些优化措施,具体为: ①、使用百度站长平台的主动推送链接功能 这是必须的,原创与否的先决条件肯定是谁发布的早!作为原创的我们,点击发布的同时立即向百度推送发布通知,告知这篇文章是从我们博客首发的,其他相同或相似的文章统统是转载或伪原创! 对于开启这个主动推送功能,有多种方式: 百度提供的通用js代码(貌似不支持https,会报错)【相关文章】 百度主动推送插件(张戈博客优化版)【相关文章】 百度主动推送代码(张戈博客原创版)【相关文章】 其中,第一个js代码适合所有建站程序,而且实现简单,推荐使用!后面一个是插件一个是代码,只适合WordPress,当然最终功能都一样,自行选择即可。 ②、在网站添加星火计划可识别的Meta标签 如下是百度文章中分享的DEMO: 会DIY的朋友基本不用往下看就能自己动手修改了吧?、 三、部署代码 将如下代码添加到 WordPress主题的 functions.php 当中即可在前台输出星火计划代码: 2016-05-20更新:补充适合360搜索的智能摘要Meta申明。 Ps:以上代码利用wp_head()函数将星火计划代码输出到前台,如果分享上述代码没有效果,说明你的主题未在header.php中调用 wp_head() 函数,请自行解决。 三、前台效果 成功加入代码后,刷新网站前台,然后查看源代码就能看到效果了: 五、其他说明 2016年02月13日发现百度站长平台发布了关于星火计划违规的通知【传送门】,看了下原来滥用星火计划也可能坏事。 所以,我们只需要提交原创文章,转载或整理分布的文章最好不要放置这个星火计划META申明。 那我们如何来控制是否放置代码呢?很简单,使用文章自定义栏目即可(上文代码已支持)! ①、自定义栏目 如果不是原创文章,我们可以新增一个自定义栏目,比如 author,值任意或者填写原文地址,而原创文章则不新增这个栏目: ②、回溯修改 接下来我们需要在非原创文章中新增自定义栏目author,值为非空任意值,比如就填写原文地址或数字等,这个随你了。否则,没有这个标签的文章都会当作原创处理! 好了,如上修改后,代码就只会在原创文章页面中插入星火计划的META申明了,不至于违反百度的游戏规则咯!
阅读全文
网站建设

太狗血了!分享一下张戈博客百度收录排名异常的检查记录

关注张戈博客以及喜欢转载张戈博客原创博文的朋友,应该都发现张戈博客现在的百度收录异常惨淡!而且,我还叮嘱哪些喜欢转载我博客博文的朋友,不要转载半个月内发布的文章,因为我以为几个月来百度不收录、排名下降严重的是因为我先后更换主题-->换用360网站卫士-->文章被人快速转载所致。 我发现最蛋疼、最诡异的是,我发布的文章几个月都没被收录!!!然后我也默默的在心里把度娘骂了几个月,尼玛就算被人采集、被人第一时间转载也不至于不收录啊? 可实际有图为证: 基本从5月份开始,发布的文章就不再收录,索引从4800掉到现在1000左右! 期间,我各种怀疑,是不是robots设置有误?是不是外链go跳转对搜索引擎封闭等措施带来惩罚? 直到。。。直到我今天心血来潮,想试下百度的API搜索接口,提供sitemap数据才发现抓取失败。 其实,在之前我就发现所有和sitemap数据提交有关的功能都提示抓取失败!但是尼玛,在百度抓取诊断检测相同的链接又是成功的!! 我以为是百度站长工具出现了暂时性的问题,还反馈过:   直到今天,我还又反馈了一把: 反馈完之后,我反复去看了下这个抓取失败结果: 结果发现都是连接超时错误,DNS解析是没问题的,确实是真实IP,看来不是使用CDN的问题:   继续看了几遍之后,我偶然点开了抓取异常这个工具,一看吓一跳,每天的连接超时居然将近一半! 突然灵光一闪,连接超时,好熟悉的字眼,不是40X,也不是50X。。。没错,就是防火墙拦截! 赶紧登陆阿里云ECS看了下iptables: 看到了有2个网段被禁用,先尝试解封,然后回到百度更新了下sitemap试了下,居然成功了?! 我次奥!真是这个网段被禁封造成的!成功后,我特意再次更新sitemap。并看了下nginx日志,发现还真是220.181.108这个IP段的IP,尼玛,巧就巧在百度抓取诊断工具不在这个网段,可以正常抓取,迷惑了我几个月!!! 事后,我努力的回忆了一把当时为什么禁用了这2个网段。。。 记得,当时是Begin交流群里有个人采集我的整个博客。我当时用了各种办法禁止他采集内容中的盗图,最终他用了搜狗的图片接口来采集我博客的图片。我就不好怎么禁止了,因为搜索引擎来的IP,CDN是自动回源的! 于是,我图省事直接把搜狗的图片接口IP的整个网段都给禁封了!尼玛,当时也没想过百度和搜狗的蜘蛛节点可能在同一个机房了??另外恶狠狠的诅咒下,采集个人博客者木有小JJ!! 几个月的时间,对SEO带了非常严重的影响!要不是运气好,突然想到了这么一桩,这博客的百度SEO就基本废了! 废了也没什么,关键不明不白,谁也不爽吧!此次解除禁封之后,相信不出一个月,应该就会有效果了,至少最新发布的文章是会被收录的,不看别的,就见证下本文一个星期会不会被收录吧!不过之前未收录却被转载走的文章算是废了,发出去虽然推送到了百度,但是百度却没抓取到内容,被人转了之后估计被识别成首次发布的原创了吧! 好了,本文算是一个吐槽贴,也是给一些网站降权、收录异常的朋友一个参考,某些时候,收录异常、网站被K站不一定是你SEO方面的问题,一定记得看看是不是服务器把蜘蛛挡在门外了哟! 后续跟进篇 2015-11-02:再去百度站长平台查看抓取异常和抓取时间,可以发现已复到正常水平:
阅读全文
网站建设

百度站长平台推出链接提交自动推送JS代码

张戈博客之前分享过百度的各种链接提交推送的代码或插件,有原创代码,也有改良插件: WordPress发布文章主动推送到百度,加快收录保护原创 WordPress百度链接主动提交插件:Baidu-links-submit优化版 BaiduSubmit:百度WordPress结构化数据插件(改进版) 不过都是基于 WordPress 建站程序的,其他建站程序不免只能捶胸顿足无奈乎... 不过,前几天偶然在百度执行site命令时,发现百度又推出了新鲜玩意,点开一看发现不错,公告内容如下: 亲爱的网站管理员: 为了更快速的发现站点每天产生的最新内容,百度站长平台推出了技术门槛更低的JS自动推送工具。站长只需一步安装便可实现页面自动推送,成本低、收益高,弥补了部分站长反馈的使用主动推送方式提交时技术门槛较高的问题。 自动推送JS代码是百度站长平台最新推出的轻量级链接提交组件,站长只需将自动推送的JS代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。 按照经验,打开百度站长平台,点击【链接提交】栏目,果然发现多了一个自动提交选项: 简单看了下,发现部署非常简单,只要将如下js代码添加到网站的每一个前台页面即可,最值得称赞的是支持所有html页面,而不再受限于建站程序! 如果你不知道放到哪,那么最简单的方法就是将上述代码放到你平常用于站点访问统计的代码旁边,比如CNZZ的站点统计。当然,其实就是将代码放置到建站程序的公用部分即可,比如header或footer等公共模块。 从页面加载优化来说,则建议放置到footer模块内,让其后置加载请求。 百度也终于开窍了一次,php也好,asp也好,都受限于开发语言,总是无法一劳永逸。这次推出这个js推送方案就真正实现了全面兼容了。 这段代码的工作原理也非常简单:基于自动推送的实现原理问题,安装代码的页面在任意平台(浏览器、微信、微博)被加载时,页面链接会被第一时间推送给百度,从而提高站点新内容的发现速度。无需站长汇总URL再进行主动推送操作。借助用户的浏览行为来触发推送动作,省去了站长人工操作的时间。 那么,当你部署此代码后,每次发布文章后,只要第一时间访问一下文章页面,即可在前台触发推送机制,将最新文章推送给百度。 按照百度的说法: 自动推送和链接提交有什么区别? 已经在使用链接提交的网站还需要再部署自动推送代码吗? 二者之间互不冲突,互为补充。已经使用主动推送的站点,依然可以部署自动推送的JS代码,二者一起使用。 什么样的网站更适合使用自动推送? 自动推送由于实现便捷和后续维护成本低的特点,适合技术能力相对薄弱,无能力支持全天候实时主动推送程序的站长。 站长仅需一次部署自动推送JS代码的操作,就可以实现新页面被浏览即推送的效果,低成本实现链接自动提交。 同时,我们也支持主动推送和自动推送代码配合使用,二者互不影响。 貌似张戈博客经常提到的“重复推送数据到百度,会导致文章进入收录沙盒”的说法又不那么坚定了。从上面的FAQ来看,百度倒是提倡多种链接推送同时使用,互为补充。 但是,按照经验来看,感觉不那么靠谱,个中曲直就自己把握了,我觉得二者选其一即可。 问题补充: 顺便看了下百度这段js的代码: 发现是利用 referrer 来获取页面地址的。然后,在network中看了下请求地址是如下形式: http://api.share.baidu.com/v.gif?l=http%3A%2F%2Fzhang.ge%2F5069.html 给一个图片传参?好吧,表示没看懂工作原理。但是,我突然醒悟了一件事情,通过JS获取页面地址其实也挺坑的,比如某篇文章是: https://zhang.ge/5066.html 那么该文章的分页就是: https://zhang.ge/5066.html/comment-page-2/#comments 如果用 js 来推送,势必后面的页面也有可能被推送。也就是说,js推送的方式很可能就会推送一些我们不想被收录的页面,并没有php代码那么精准! 当然,如果你的网站任何页面都想被收录,那么也就无所谓了。
阅读全文
网站建设

Wordpress百度链接主动提交插件:Baidu-links-submit优化版

今早就有朋友在张戈博客留言,说百度又推出了主动提交的WordPress插件,让我看看。 官方公告如下: 为了方便广大使用wordpress建站的站长朋友及时提交数据,百度站长平台设计和开发了一款wordpress插件—Baidu Links Submit工具,该工具是基于百度站长平台ping2.0的链接提交接口。本插件只需您简单的配置下您的site和token即可使用。确保您的网站以快速的提交方式,以保证新链接可以及时被百度收录。 其实很多人以为这个插件就是百度以前推出的WordPress结构化数据插件的更新版本,而实际上,在我看完代码后发现其实是针对百度近期推荐的主动提交功能的WordPress插件。 对于主动提交,其实张戈博客在第一时间就分享了代码版,包括 wp_http、curl_init和file_get_contents三种推送方案,不想用插件的朋友可以继续使用代码版: WordPress发布文章主动推送到百度,加快收录保护原创 我亲自安装看了下,发现还能显示当日提交限额、已提交数量和剩余数量: 这倒是不错,虽然代码版我也能轻松实现,只要借鉴一下插件的查询函数即可,但是代码版就应该保持代码版的简洁高效才好。 但是,在我看完整个插件的关键代码后,发现依然存在以前那个结构化插件的弊病:修改已发布文章或页面会重复推送到百度!一是会拖慢文章更新提交的速度,二是重复提交很有可能会被百度判断为内容不稳定而放入沙盒,造成收录延迟展示的问题! 不过,有了以前的思路,我很简单的就解决了重复推送的问题:文章首次发布时,会推送到百度,如果推送成功则新增一个名称为baidusubmit的自定义栏目。回头再来更新修改该文章时,则先判断是否存在这个自定义栏目,如果存在则不再推送到百度。 简单贴一下我修改2个关键的地方: ①、推送前先进行自定义栏目的判断: ②、成功推送后则新增自定义栏目: 这样就保证了每篇文章只会成功推送一次。如果你铁了心想让某篇文章再大改后重新推送到百度,则只需要删除该文章的自定义栏目baidusubmit即可: 如果还有疑问,建议阅读一下张戈博客以前分享的相关文章: BaiduSubmit:百度WordPress结构化数据插件(改进版) WordPress发布文章主动推送到百度,加快收录保护原创 最后,提供优化版的下载地址: 如果你想安装这个插件,那么推荐你使用张戈博客分享的优化版,有益而无害! 安装插件后,记得到插件设置界面填写域名和token值【token值获取地址】。另外,如果之前已经集成了张戈博客的代码版,请记得删除掉,否则首次发布文章会连续推送2次! 2015-09-27 更新记录: 首先感谢露兜大神的给力提醒,为了减少垃圾数据的产生,将插件的判断机制改成: ①、文章首次发布时进行推送,如果推送失败则新增自定义栏目Baidusubmit,值为false: ②、再次编辑更新文章,若检测到存在值为false的自定义栏目Baidusubmit,则再次推送并删除这个自定义栏目。当然, 如果推送失败将继续添加,进入第二轮: Ps:这里设置并判断值是否为false,主要是为了避免重复推送以前 Baidusubmit 值为 1 的文章。 ③、另外,插件获取文章地址的写法存在冗余调用: 这个改进,同样感谢露兜的提醒!如果已在正常使用则没必要折腾这个更新,当然如果你是一个强迫症,那就另说了... 2015-09-28 更新记录: 在百度官方贴中发现作者已更新了插件,主要是为了解决插件在低版本下会报致命错误的问题。所以,张戈博客也在发现后第一时间更新了本文分享的优化版插件,使用报错或者首次使用只需从本文下载安装即可。已正常使用的朋友可以无需更新。
阅读全文
WordPress集成多种站内搜索、百度嵌入式搜索,并伪静态化的方法 网站建设

WordPress集成多种站内搜索、百度嵌入式搜索,并伪静态化的方法

分享前,先吐槽一下:最近阿里云爆出了云盾误删除ECS文件,最后只能用回滚来解决的坑爹玩意儿。刚听到这个消息后,连忙看了下自己的ECS,没发现有明显的异常。 这2天慢慢的发现近期修改的一些代码都被还原了,比如明明去掉了评论审核后的通知功能,今天一个朋友QQ告诉我收到的邮件中的文章地址不对,我看了网友的截图,就知道是评论的审核通知邮件。看了下代码,果然之前的注释都去掉了。又比如,我明明屏蔽了某插件的某个菜单,结果今天又看到了。 看来多少还是有所波及,确实是回滚了!还好,最近没怎么折腾代码,否则都白费了! 一、综合搜索 还是在用 HotNewsPro 主题的时候,张戈博客就集成了3个站内搜索,分别是百度、360和默认搜索。换到 Begin 主题之后,也在第一时间就把之前的功能平移了过来。 从一开始就有朋友要我分享部署方法,实在是太忙,心有余而力不足。其实,稍微有点扒站能力的就能把这玩意抠走。。。 二、修改代码 ①、搜索伪静态 何为搜索伪静态? 众所周知,WordPress 默认搜索地址为 http://www.domain.com/?s=keyword 这是一个动态地址,和全站伪静态有点格格不入,而去还不利于静态缓存。 很简单,将以下代码加入到主题下的 functions.php 当中即可: 现在去前台搜索,就会发现结果会跳转到【/search/关键词】了。当然,为了让搜索直接进入这个页面,而不是要301跳转,我们可以稍微改造一下这个搜索框。 常规搜索框代码一般如下: 输入内容,点击搜索后就必然会跳到 ?s=keyword这个动态页面。所以,我们需要通过js代码来拦截这搜索动作,然后重新定义跳转地址,将代码如下修改即可: 很简单的代码,原理就是给【搜索】动作绑定了一个js函数,而这个js函数的功能就是获取当前输入的关键词,并拼接成一个新的地址,最后跳转过去即可。 如此,就实现了WordPress默认搜索的伪静态化。很明显,这个方法适合任何WP主题。 Ps:其实这儿用Nginx或Apapche的伪静态规则来实现,性能会更棒!后面再研究折腾一下。 ②、集成多种搜索 多种搜索?到底哪几种? 这就看你的心情了,只要搜出来有内容,随便你增加几个都行!除了百度有高兼容性的站内搜索之外,其他站点无非就是利用site指令+关键词而已。 比如,在360好搜搜索张戈博客的某个关键词,直接访问如下链接即可: https://www.haosou.com/s?q=site%3Azhang.ge+移动适配 那么其他任意搜索引擎,基本都可以依葫芦画瓢搞定了。很明显这种方法就会要用到上文分享的JS函数了,不过要稍微改造一下,让函数可以多次利用。 比如,我想同时集成360和默认搜索,代码可以这样写: 写了这么多,更多搜索引擎,你应该可以自己搞定了吧? 三、Begin专用 Begin 的就简单了,直接用张戈现在用的代码即可。 编辑 Begin 主题下的 inc/search-baidu.php 文件,替换为以下代码(域名请自行替换): 然后,到后台的主题选项中把默认搜索功能给关掉即可,因为上述代码已经集成了! 最后,效果如图所示,当然直接在张戈博客右上角搜索一把也是可以的: 四、百度内嵌 这个功能出来有那么一段时间了,在我发现后,第一时间就推荐给了鸟哥。所以,后面的Begin版本也就将这个功能集成进去了。所以,使用 Begin 主题的朋友下面的内容就可以跳过了。 个人认为还是不错的,比以前用 cname 方式集成百度搜索更加和谐,因为用到的是一个二级目录了,感兴趣的可以看下【官方帮助文档】了解更多参数的用法和含义。 下面简单分享一下集成方法: ①、复制主题目录下的页面模板(常见名称为 page.php),假如复制后名为 bdsearch.php; ②、编辑复制后的 bdsearch.php,将文件头的模板名称修改为百度嵌入式搜索,比如: ③、找到如下类似代码: 然后替换为如下内容即可: ④、最后,新建一个页面,模板选择【百度嵌入式搜索】,发布即可。 发布后,访问这个页面地址,将会出现默认的百度站内搜索,而且是iframe嵌入式的: 接下来,我们还得改造一下搜索框,让关键词传递给这个页面才行。 每个主题的搜索框都不一样,这里就不能给出直接可用的代码了,请参考以下代码自行修改: 以上内容,多多少少会涉及到CSS样式的调整,这是折腾主题的必备技能之一!所以样式问题就请自行搞定,这样才能学的更多,得到最大的收获!
阅读全文