网站建设

浅析网站更换ip或使用CDN会不会影响SEO排名

最近张戈博客在阿里云和腾讯云服务器之间来回折腾了数次,别的收获没有,就悟出了一个问题:网站更换IP或使用CDN会不会影响SEO收录或排名? 收录就不好意思说了,张戈博客这几个月内发布的文章基本都没收录。 一、更换IP 记得之前站长平台分享过一篇相关的文章,说的是只要用户可以访问的页面,百度就能正常抓取和收录,和网站服务器在国内还是国外、是否备案统统无关。而百度收录的好坏、百度关键词的排名和网站的稳定性及加载速度则息息相关。 那这篇文章再说更换IP有何意义?我想说的是网站更换IP并不会影响收录或排名,但是——这个有一定的条件。 ①、平滑过渡 肯定有不少站长朋友,在网站搬家,并更新DNS解析后,立马就把原来的服务器退了或关闭了。其实这是一个大坑。 网站搬家过的朋友可能都有这样的经验,在网站搬家后,我们会按惯例去百度站长平台使用一下抓取诊断工具,看看新的解析是否生效。 而懒散的百度一直以蜗牛著称,我们会发现你更换DNS解析之后,抓取诊断中显示的还是老服务器的IP,可能几天都换不过来。这个应该百度蜘蛛自身的一个DNS缓存优化吧! 所以,如果你立马就把老的服务器给停用了,那百度蜘蛛绝对有一部分会遇到闭门羹,后果你懂的。 在我们更换IP之后,当使用百度抓取诊断工具发现IP未变更时,我们可以如图点击【报错】,让百度刷新DNS缓存: 快的话可能半天就可以刷新过来了,慢的话可能需要1~2天!快和慢的情况我基本都遇到过。。。 当发现抓取诊断显示IP已经是最新的之后,我们需要回到老的服务器上去看网站日志,观察个1~2天,直到日志中没有如下所示的百度蜘蛛的抓取了,才算更换成功! Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) 这时候你才可以从容的停止老的服务器。 ②、稳定快速 稳定快速作为网站的基本素质,基本就不用多提了,更换后的服务器如果又慢还经常50x,蜘蛛肯定不会喜欢。所以,更换也是往好的方向,而不是越来越Low B才行! 二、使用CDN 以前张戈博客一直会说使用CDN之后需要多解析一个搜索引擎线路给蜘蛛专用。主要当时是认为CDN的节点很多,而且是动态修改的。也就是说使用了CDN就类似于我们的网站经常在更换IP! 那上面都说了更换IP对SEO没影响,为啥使用CDN需要多解析一个搜索线路到真实IP呢? 其实道理很简单,也并不是为了规避我之前提到的CDN的IP变来变去的情况,而是为了稳定! 上文提到了,百度蜘蛛服务器存在DNS缓存的情况(其实很多公司或集群都会有DNS缓存机制),如果我们使用CDN而不对蜘蛛回源,那么百度蜘蛛DNS缓存的就是CDN节点的IP! 那缓存了CDN节点IP有什么不对吗?也可以访问到我们的网站啊? 确实,缓存了CDN节点IP对访问没有任何影响,但唯一致命的是,CDN的节点可能随时都会撤销会更换IP!也就是说,这一小时蜘蛛通过一个IP为x.x.x.x的CDN节点访问到你的网站,可能下一小时这个CDN节点就下线了或换IP了!那么蜘蛛就无法访问你的网站了,只能等DNS刷新才行,这一等可能就是一两天哟! 当然,这种情况也不多见。保守起见,我们还是新增一条搜索引擎线路解析到真实IP比较靠谱。 好了,浅析到此告一段落,望你能有所收获!
阅读全文
网站建设

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申明了,不至于违反百度的游戏规则咯!
阅读全文
网站建设

利用JS生成二维码图片,优化WEB性能及页面加载速度

移动互联网的蓬勃发展绝对离不开二维码的“推波助澜”,一张小小的图片,省去了繁琐的苦逼输入,也拉近了PC端和移动端的距离!虽然是东洋人最初发明的,但我还是要给32个赞! 一、意淫场景 2年前接触网站建设后,二维码也进入了我折腾的范围,当时意淫了这样一个场景:当用户首次在别人电脑上看到我们的网站时,突然有事要离开,但是这个网页内容很赞,实在难以割舍,他该怎么办? 我继续意淫了多个解决办法: ①、复制这个网页,通过QQ发送到我的设备(那时候貌似还没有这个功能。。。) ②、收藏到类似QQ云收藏等在线收藏夹,或保存为文本存在云盘,以后再看 ③、死记硬背也要记住这个网页地址,然后回家继续看 ④、赶紧掏出手机,在手机浏览器里面输入网页地址继续看 。。。。 N、尼玛这网页为毛就不能提供一个二维码,让我用QQ浏览器扫一扫继续看呢? 很明显,在这种场景下,网页上如果能提供一个二维码就能给网站增加一个忠实访客,甚至是粉丝。 二、后台实现 我这人把,技术不行,但只要有想法就立马付诸实践,认为技术再难也不会是瓶颈。 博客用的语言是php,因为第一时间用php实现了这个功能,应用到网站就是这个样子: 源码也非常简单,感兴趣的看下:https://zhang.ge/5031.html 三、前台实现 本来这个PHP二维码用得挺好的,反正做了CDN缓存,速度负载都不用考虑。最近在一个国外的网站看一个源码的时候,好奇的看看网页的二维码是什么地址是,发现居然是canvas生成的! 是咯,为毛之前我没想到JS生成二维码这一茬呢? 果然还是想法和见识更重要啊!知道有这个途径,怎么实现基本是小菜一碟了。 顺手百度了一下,果然一堆教程,而且个个历史悠久,看来自己out怪不得别人。 实现很简单,DEMO如下: 丢到SAE试了下,效果还不错:http://atools.sinaapp.com/demo.html 更多参数如下: 四、中文兼容 从分享这个教程的博客那知道,上述JS生成二维码是不支持中文内容的,而少数个人博客可能会使用中文的url路径,那么就不适用了。 其实,要解决也挺简单,只要二维码编码前把字符串转换成UTF-8即可。 博主也提供相关JS转换代码: 因此,如果内容含有中文,就需要用这个函数先转码,比如前文的DEMO修改如下: 参考文章:http://suflow.iteye.com/blog/1687396 五、Begin主题 Ps:哈,突然发现鸟哥博客已经用上了,看来我们想到一起去了,相信begin新版本就会集成。 说了半天代码和demo,可能还是有很多朋友不会用,下面再简单介绍下把js生成二维码集成到Begin的方法。 Begin还是在上几个版本就已经集成了二维码图片功能,不过用的是外部api生成的,加载速度差强人意。当然,到了张戈博客,第一时间就换成了自建的php二维码api了。 现在get到了新技能,所以我也第一时间也将博客的二维码改成了js方式了,修改很简单: ①、加载js代码: 将上述代码添加到Begin主题的header.php或footer.php当中(也可以将上述js文件的内容合并到主题的全局js,比如scripts.js)。 ②、修改php代码: 编辑 begin/inc/scroll.php 这个文件,如下修改即可: 每个<li>代表一个按钮,上下位置自行按需调整即可。全部完成之后,彻底刷新各种缓存,就能看到前文贴图一样的效果了!其他主题只需参考折腾即可。 Tips: 上述代码也未加入中文兼容,如有需求,只需要继续增加兼容中文的 js 代码,然后把 content = window.location.href; 改成 content = utf16to8(window.location.href); 即可搞定。 六、兼容方案 前几天,鸟哥反馈我博客在IE8会导致整个浏览器卡死的问题!我苦逼定位了2个多小时才搞定! 定位方法非常苦逼: ①、先移除所有JS,测试依然卡B ②、移除wp_footer()输出,测试依然卡B ③、移除wp_header()输出,好了!! 尼玛,发现问题出现在头部输出里面,于是分别开启和关闭头部输出,得出头部输出内容,然后一项一项添加上去看是否会卡B。 最终,发现居然是一个我自定义的CSS代码导致的???原来是一个CSS属性的大括号被我写成了中文符号},真是R了狗了。。。 在测试中,我发现IE下无法生成二维码,于是脑补了下,发现IE不支持canvas模式,只支持table模式。 因此多写一个判断搞定: Ps:没错,这也是史上最短的IE判断,大家可以记录下,以备后用。 等使用table模式后,发现生成的二维码惨不忍睹,而且还扫不了: 后来和鸟哥交流的时候,他说是这主题table样式有冲突,重新下指定下二维码的table属性即可: 其实,table模式就是黑白表格组合原理,主题定义的表格样式把qrcode生成的二维码搞成了鬼样。 Ps:此项修复已加入到上一步Begin代码中,其他主题请自行参考。 七、对比分析 本文介绍的二维码是每个页面动态生成的二维码,扫码后打开的也是当前页面,但是不管是静态还是动态,图片加载的方式总是要产生一个http 请求的,当页面处于海量访问时就会带来一定的负载了。。。 但是,如果使用js生成二维码的方式,这图片就在前台浏览器生成的了。抛开JS的兼容性不说,在海量请求场景应该可以极大的减少http请求量吧? 当然,JS生成方式需要多载入一个Jquery.qrcode.min(通用JQ一般都有,就不算了)。看了下,这个JS只有13KB: 而且,我们完全可以把他合并到其他JS当中,那就连http请求都省了!可见,换成JS方式的性价比还是比较可观的!当然,JS的兼容性就另说了,这里就不多说了,感兴趣的可以试试。
阅读全文
网站建设

WordPress发布文章同步到新浪微博失败的问题解决与分享

张戈博客很久之前分享过一篇 WordPress发布文章同步到新浪微博 的文章,但经常有站长留言反馈同步失败,我一直觉得是代码部署问题。 最近很长一段时间,张戈博客也无法同步,我又觉得是微博自身的问题。直到近期抽空DeBUG了一下微博同步,取得了返回结果,才发现是由于网站IP变更导致的! 一、网站IP变更 如下是我DeBUG取得的返回 json 结果: 格式化如下: 其中“Ip Limit, request ip is not contained in safety ip”很明显的指出了错误原因:当前IP不在微博服务器白名单列表当中,说白了就是网站换了IP地址,和你之前申请微博应用时填写的IP不一致了! 前往新浪微博开放平台看了下,里面设置的IP果然还是之前的老IP: 所以,如果发现你部署了代码,却总是无法同步,请前往微博开放平台,如图查看并更正一下网站现用服务器的IP地址。 当然,修改后会进入二次审核状态,耐心等待好了。 Ps:其实最后我发现这里可以不填写任何IP,免得下次网站更换服务器又忘记修改了!反正大部分人也不怕自己的微博被盗用。 二、DeBUG 方法 如果,上述分享还不能解决你的问题,最后张戈再分享本文用到的DeBUG方法。 原理很简单,所谓的DeBUG就是取得微博同步的返回值,看下到底是什么原因不能同步。 DeBUG代码如下: 先根据自己微博修改以上代码中的微博 app_key、用户名、密码。 然后,将最后一句代码中的5082改成你博客已发布文章的ID。 最后,将代码保存为php文件(比如 test.php),上传到网站根目录并在浏览器访问即可看到微博同步返回的结果了! 能看到失败原因,相信问题已经解决了一半,是不是又学到了一招呢? 三、https导致失败 早上发现IP变更已经审核通过了,就更新文章试了下,还是没有同步成功!呐尼? 然后,又试了下DeBUG大法,发现返回如下: error:does multipart has image? 什么鬼?? 网上找了半天,基本都是说图片不是本地的,或者上传封装得不对之类的。 于是,强行将 $url 这个变量指定为具体图片地址,发现还是这个错误: $url= 'https://zhang.ge/logo.png'; 甚至,直接试了下图片的本地物理路径也不行。。。 最终,发现把https改成http就好了!!!原来不支持https图片? 那我把 $url 中的https强行替换成http就好了: 果然,替换后就成功了: 如果还是不行,请留言联系张戈!
阅读全文
网站建设

解决WordPress4.4.1不支持图片暗箱问题,Begin主题适用

前几天更新WordPress最新4.41版本之后,发现文章之前的图片暗箱弹出功能没了,而且之前设置好是缩略图尺寸也没了,直接就是最大尺寸。 看了下当前页面图片的源代码,发现变了: ①、很明显多了一个srcset属性 ②、Begin主题专用的图片暗箱标识:rel="example_group" 消失了。 所以,图片暗箱失效的原因就是这个暗箱属性 rel="example_group" 没了导致的。而我之前设置好的图片尺寸失效则是因为新增了 srcset 这个标签导致的。 简单了解了下,最新版 WordPress 加入srcset是为了更好的做到图片自适应,srcset这个属性细节,感兴趣的朋友可以自行了解下。 废话不多说,下面分享解决方法。 因为我之前有现成的缩略图代码,所以只要在缩略图代码里面多加入2条替换规则即可解决。 缩略图代码我就不分享了,感兴趣或有需求的朋友可以参考之前的文章: WordPress集成PHP缩略图,并开启Nginx缓存的方法 下面是本文相关代码: 如上代码,添加到主题的 functions.php 当中保存即可,若不在意或本身就是用完整尺寸图片,请如注释所述,去掉后面2条规则即可。 另外,上述代码只适用于需要 rel="example_group" 属性的暗箱功能,比如Begin主题。其他暗箱若发现不能功能,可以参考这个方法修复。 上述方法只是直接解决问题,但未研究如何从WordPress本身根治,比如暗箱标识是否是因为多了一个srcset属性导致的,如果是,完全可以修改暗箱代码兼容之。 还有,升级4.41之后,就算你禁止了任意尺寸的图片裁剪,WordPress依然会裁剪1份,也是为了srcset这个新玩意: 具体如何彻底取消,有时间我再摸索下,已经摸索出来的朋友也欢迎分享或留言告知。 好了,言简意赅,就这么多了,是否意犹未尽呢?自己体会。 2015-01-15 补充内容: 早上搜索了下WordPress去掉srcset,发现WP大学 已经发过教程了,我就当一下搬运工,贴一下去除代码,方便有需要的朋友: 不想改代码,也可以安装 Disable Responsive Images  插件解决。 那么,前文分享的代码可以修改如下(已集成WP大学分享的代码): 另外,我在搜索上述问题的时候,发现小松博客也分享了一个关于响应式图片相关问题,解决的是评论图片问题,我博客的评论由于很少贴图,所以暂时没发现这个问题。 若遇到此类问题可以前往参考解决:wordpress去掉评论响应式图片srcset属性
阅读全文
网站建设

全站启用SSL之后,如何兼容不支持https抓取的搜索引擎?

还是在今年5月份,百度就跳出来,宣布成为国内首个支持https的搜索引擎,结果呢?呵呵... 一、案例 ①、抓取诊断 全站开启并强制https之后,在百度站长平台使用抓取诊断发现,其实百度并不会识别强制跳转的301状态,至少不会友好的反馈给用户: 抓取并没有出现跳转提示: 其实,后台日志显示是正常的301跳转: ②、真是打脸 2017年05月25日更新:偶尔进入站长平台看了一把,居然给我博客自动做了https认证,然后去百度搜索site了一把我的网站,基本已全部换成了https,看来百度对https的收录已全面展开! 百度发公告说,已全面支持https,并推荐各个网站开启https,得到优先展示,结果呢? 我们先百度site一下www.baidu.com,然后复制收录里面的链接: http://www.baidu.com/link?url=f3Fbk5cL6W_Hz0jtf6JY991vn1teNTzZ1WBHaqnOmCO&wd=&eqid=aab2bf1f0009872d000000055687e679 然后用网页内容抓取工具看下百度收录自己的是什么: 真是呵呵了,自己收录自己的也是http,说好的https呢?你5月份就发公告支持了,这大半年了自己对自己的收录都没更新过来,何况其他网站?? 其实,要看百度对自己的收录是否是https还有一种更简单的方法:直接在百度搜索https://www.baidu.com即可: 再次呵呵下。。。 ③、配套设施缺憾 百度搜索确实是全站启用了https,可你的配套设施呢??搞了半天,也就是百度搜索支持了https,百度的其他产品几乎都不支持! 比如,做网站喜欢用到的百度分享,不支持https,还得自行处理【相关文章】; 比如,大部分网站的经济来源,百度广告不支持https,搞个蛋哟; 还好,百度统计还能凑合用下,不是那么一无是处。。。 二、正能量 国内各个搜索引擎都看了下,结果意外的发现搜狗居然已经正常收录我博客的https了: 其他基本都未收录,而国外的几个搜索引擎基本不用看,换https数日之后就全局替换成https收录了,而且目测给了更好的排名,比如谷歌、必应等。 百度一直以来都是蜗牛般的反应,真不知是技术不行还是故意设置的?百度的索引服务器再多能多过谷歌?全局刷新一下感觉如登天一般麻烦! 三、解决 吐槽了那么多,还是来说说如何缓解一下各种不支持的窘迫吧! 支持https的有:谷歌、必应、搜狗、百度(持怀疑态度)以及用户 不支持的有:    360、神马(宜搜)以及百度(有待验证)等 那我们全站强制https就行不通了,必须对这些来路做规则判断,然后针对性的跳转或不跳转才行。 只分享下Nginx的做法,其他就自行参考研究吧! ①、http和https不在同一个server模块的做法: Ps:分别监听80和443端口是大部分网站的做法。 在监听80的server模块中添加如下规则: ②、http和https在同一个server模块的做法(注意修改实际域名): 最后,重载或重启nginx即可生效。 简单解释下:若不是百度、360或神马蜘蛛进行的http协议请求,将全部跳转到https。即强制https对360、百度、神马开了白名单模式,不强制跳转。规则是通用的,你可以把第一条规则中的UA标识换成任意不想强制跳转的请求源。 时间有限,就分享这么多了,希望各大搜索引擎尽快兼容https,希望百度搜索的联动反应能快点,而且不行就别再打肿脸充胖子,要对得起国内搜索第一的地位! 2016/01/05 内容补充:早上看到了WP酷的分享,才拍脑袋想起还有XP系统不支持SNI,导致网页无法打开,所以上述新增的规则可以改成如下代码: 场景①适用: 场景②适用: 2016/01/09 内容补充:突然想到,既然要兼容那些不支持的请求者,那么当请求到https时,是不是应该跳回http呢? 比如,使用XP系统访问到了http,我们可以不跳转到https,但我们全站都是改造成https的,所以页面内的链接都是https的,那他进一步还是不能访问! 所以,继续加规则,如果是特殊用户,则强制http访问: ①、http和https不在同一个server模块的做法: Ps:分别监听80和443端口是大部分网站的做法。 在监听80的server模块中添加如下规则: ②、http和https在同一个server模块的做法(注意修改实际域名): 最后,重载或重启nginx即可生效。
阅读全文