网站建设

百度站长平台推出链接提交自动推送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代码那么精准! 当然,如果你的网站任何页面都想被收录,那么也就无所谓了。
阅读全文
网站建设

BaiduSubmit:百度WordPress结构化数据插件(改进版)

张戈博客曾多次提到一个会造成百度不收录问题的原因:如果网站存在实时推送机制(比如安装了百度官方推出的BaiduSubmit插件),那么发布文章后,在百度收录之前这段时间内,无论如何都不要再去更新文章内容了,因为每次提交更新都会触发BaiduSubmit的实时推送机制,通知百度内容更新了! 在百度收录之前,如果频繁向百度推送更新通知,文章很可能就会被百度丢入沙盒,短时间内不会在百度搜索展现该条收录! 个人大胆猜测,造成这种现象的根本原因是收录之前,如果频繁更新内容,百度会认为这个内容是不稳定的。这个机制估计是百度出于用户体验考虑,百度希望用户看到的内容是和搜索到的一样,而不是百度收录了A内容,就因为你中途改成了B内容,导致用户通过A关键字搜索,却没有得到预期的结果! 因此,网站在发布文章之后,稳定收录并展示之前,切忌频繁修改内容! 但是,我作为一名中度强迫症患者,只要看到文章有错别字,或者排版等瑕疵,我都会立即修改!相信和我一样的朋友,肯定不在少数! 下面就分享一下解决办法。 一、关闭实时推送 ①、关闭Baidusubmit实时推送 如果不想每次更新文章都触发推送机制,那么最简单的方法就是在插件后台关闭实时推送即可: 这个方法是最简单的,但是存在一定缺憾:关闭实时推送之后,新发布文章也不会再推送给百度了。只会在百度提交一份sitemap数据,让百度定时抓取。 在博客没有开通sitemap权限的情况下,那这个插件就相当于在百度提交了sitemap数据(上图只有在开通了sitemap权限的情况下才可以看到)。 当然,如果你不怕麻烦,也可以在发布新文章的时候启用实时推送,然后在手动关闭即可。 ②、关闭WordPress实时推送 除了这个插件会实时推送数据,WordPress其实还自带了一个更新通知功能: 直接将百度的PING服务删除即可,其他的删不删应该都没关系。 二、修改插件机制 相比于第一种方法,下面的方法就更加合理:只有在文章发布的时候推送数据到百度,而后续更新文章则不会触发插件的推送机制,强烈推荐使用! 方法①、当网站未禁用修订功能时,可通过修订判断来终止插件推送: Wordpress的修订功能默认是打开的,那么我们就可以用下面这个语句来判断是否是更新动作。 修改方法: 编辑baidusubmit插件下的main.php,找到static function publishPost($postid) { ,在之后添加以上代码即可: Ps:可能你会疑问,如何判断已修改成功,更新时插件是否依然在推送数据?有个很简单的判断办法:更新文章时,如果有推送数据,那么花费的时间将比不推送数据要长的多!差距非常明显! 当然,如果你无法确定是否生效,建议使用下面这种方法,绝对可靠! 方法②、当网站禁用了修订功能时,可通过自定义栏目来终止插件推送: 我在测试上面的代码时,发现根本不生效!看了半天,才发现我的博客曾经把修订功能给禁用了!查看修订功能是否被禁用,只要打开网站根目录下的wp-config.php,查看是否存在一下代码: 禁用修订功能是为了节省数据库主键,最大程度保证文章ID的连续性,估计这样设置过的博客也不在少数。 既然禁用了修订功能,那第①个方法就无法使用了!这时候,我们可以借助WordPress的自定义栏目功能来解决这个问题。 原理很简单:文章首次发布时,会向百度推送数据,并且在对应文章中新增一个自定义栏目:Baidusubmit=1 更新文章的时候,插件先判断自定义栏目,如果Baidusubmit=1,则不再推送,从而解决了重复推送问题。 修改方法: 还是编辑baidusubmit插件下的main.php,找到static function publishPost($postid) {,在之后添加代码: 最终如图所示: 发布文章之后,文章编辑界面的自定义栏目中将出现如下键值: 后续,如果想让插件再次向百度推送文章,只需要将这个值改为0或其他数值即可。 三、插件下载地址 考虑到代码盲站长,特将以上2种修改后的baidusubmit插件打包上传,请根据实际需求下载安装即可: 博客未禁用修订功能,请下载【插件①】,不清楚的推荐下载【插件②】 安装时,先删除原有的baidusubmit插件,然后上传安装即可。
阅读全文
东拉西扯

吐槽:想和谷歌比肩,百度仍须努力

今天,群里谈到了百度浏览器翻墙,于是顺便进入了谷歌站长工具。顺手将中国博客联盟这个网站给添加上了(谷歌被墙之后,我差不多也是放弃了的状态...)。 添加了zgboke.com,并成功验证后,收到了一份邮件,让我在欣赏谷歌的同时,再次感叹百度的不足!  我蹩脚的翻译一下: 现在设置你的网站管理工具: 1 添加你的网站的所有版本 确认你已添加带www和不带www的所有版本. 另外,如果你的网站还用了https协议,那么也请加上这些版本。  新增网站 2 选择你的首选版本(域名) 选择你希望在谷歌搜索中显示的首选域名,带www还是不带www  设置首选域名 3 设置面向的国家(主要受众人群所在国家) 设置你的网站的主要受众人群所在的国家。  选择国家 4 设置共享管理帐号 如果你想其他人查看你的网站报告,你可以添加不同的访问级别。  管理网站帐号 5 提交一个sitemap文件 这有助于谷歌更好地了解如何抓取你的网站。  提交sitemap 对于这份温馨提示,我只想说说我最欣赏的第2、5点: ①、对于第2点:设置首选域名,这是国内任何一家搜索引擎都不具备的功能! 熟悉张戈博客的朋友都知道,为了让百度删除张戈博客不带www的收录,真是大费周章!明明别人提交网站的时候就做好了301跳转了,百度还是毅然决然的收录301跳转之前的网站,而且给予更好的排名。真是不可理喻! 虽然我不懂爬虫技术,但是我很确定的是,任何爬虫要识别301还是非常容易的,一个http status就能取得了!不是百度不能识别301,而是百度未设置快速响应机制,效率低下! 又比如网站改版功能,想当初张戈博客的域名从marsge.cn更换到zhang.ge的时候,百度用了3个月才完全切换过来,谷歌仅用了一个晚上!这就是区别!!这就是对比!!! 我认为,一个优秀的搜索引擎,是不会让站长们在这种单方面的细节处理上过多的浪费精力的!如果都像谷歌这样可以直接设置首选域名,站长们不知道可以省下多少不必要的精力呢! ②、对于第5点,提交sitemap这种基础功能,百度(还有搜狗)居然当成是一种特权,需要主动邀请!也就是大部分网站都不能自行提交sitemap.xml。 虽然张戈博客已经被邀请了,但是我依然吐槽一下,这种基础的抓取优化功能,真的没必要设置门槛!而且,sitemap可以为蜘蛛提供正确的爬行路径,更是节省了蜘蛛爬站的时间,同时也提高了抓取效率! 如果要细细对比的话,百度真的要被吐槽的一无是处了,比如搜索结果不够精准、推广内容泛滥等。这些优劣对比相信每个人心里都有一杆秤,我就不罗嗦了。 当然,我也要吐槽一下谷歌的搜索结果是从当前窗口打开,而不是新窗口打开的机制。不是很符合我个人的习惯,只好多多利用第三方浏览器的拖拽打开了。 东拉西扯的就说这么多,希望百度能努力改善这些细节,越做越好吧!
阅读全文
网站建设

百度站内搜索全新改版:WordPress生成通用行业模板数据的php脚本

今早进入百度站长平台查看站内搜索时,发现百度站内搜索已全新升级到2.0版本!原先的站内搜索已经转移到了独立的二级域名:http://zn.baidu.com 进一步查看发现站内搜索新增了一个结果页样式设置功能: 包含如下三种自定义设置: ①、页面顶部设置 ②、频道设置 ③、结果样式模板 其中我比较感兴趣的是频道设置,可以更加接近搜索引擎的风格,比如百度搜索: 仔细研究了一下这个频道设置,发现要区分不同的频道,有2种途径: ①、不同频道使用不同的二级域名(一般大站常有的做法,比如news.163.com); ②、提交行业模板数据,每一组XML数据使用面包屑标签breadCrumb来区分该内容所在频道; 很明显,张戈博客这种简单小站只能选择第二种方案,顺手把以前的sitemap脚本修改了下,就成功提交了! 下面分享这个php脚本的代码: 将以上代码保存为sitemap_hy.php上传到WordPress网站根目录即可,然后在浏览器访问这个文件查看效果,比如: https://zhang.ge/sitemap_hy.php 只要不报错就成功了!现在就可以前往百度站内搜索提交了:http://zn.baidu.com/cse/schema/sitemap 成功提交后,继续打开频道设置,参考下图将你博客的主要分类填入到相应栏位即可: 第二列留空则表示输出全部搜索结果,如果有面包屑,则表示从提交的sitemap中筛出相同面包屑的内容,全部填写完成后点击保存并查看效果了,比如,张戈博客的站内搜索地址:http://so.zhang.ge 提交结果后,就只能等待百度抓取数据并展现了,所以短时间内将如下显示: 隔了一晚上发现张戈博客的站内搜索已经开始展现数据了:   缩略图和标题都已经有了,但是内容却是一个【略】,再次看了下百度关于这个数据文件的说明。 content:如能提交全文,则不需要spider再抓取,既可以降低站点服务器压力,提升收录效率,也可以避免搜索系统解析误差。 好吧,既然如此,我就再折腾一下,让content输出文章内容!(上文代码已更新!) 最后,如果你对百度站内搜索比较感兴趣,还可以看看张戈博客的其他相关文章: PHP制作百度站内搜索绿色通道的网页列表数据文件 关于新版站内搜索和行业数据模板的分享就到此告一段落,下面我会继续研究下站内搜索的页面顶部设置和结果样式设置,敬请期待!
阅读全文
网站建设

WordPress免插件生成完整站点地图(sitemap.xml)的php代码

前言:站点地图(sitemap.xml)的作用,相信站长们都有所了解,我就不献宝了。而免插件生成sitemap.xml,网络上也早就有了纯代码生成的方法。 一直以来,张戈博客都是用DX-SEO这个很好用的中文SEO插件生成的sitemap。今天整理电脑文件时,看到了以前收藏的生成sitemap.xml的php脚本,就随手打开看了看,发现这个代码只能生成主页和文章页的sitemap。果断百度了一下,发现网上分享的都大同小异,只有首页和文章页。感觉有点缺憾,反正今天也是闲着,就动手改造了一番,让这个代码更加完善,可以同时生成首页、文章、单页面、分类和标签的sitemap! 一、PHP代码 将以上代码保存为sitemap.php,传到网站根目录。手动访问查看效果,如:https://zhang.ge/sitemap.php 二、伪静态 ①、Nginx 编辑已存在的Nginx伪静态规则,新增如下规则后(平滑)重启nginx即可: ②、Apache 编辑网站根目录的 .htaccess ,加入如下规则: 做好伪静态规则后,就可以直接访问sitemap.xml看看效果了,比如 https://zhang.ge/sitemap.xml 三、纯静态 此部分内容补充于:2016年10月24日程序员节 看到很多朋友已经在问这个sitemap如何静态化,加快打开速度。毕竟每次重新生成绝对是一个耗能大户,而且还有可能被有心之人拿来作为攻击入口! 其实,张戈博客早就已经实现sitemap.xml静态化了,而且在后面的文章中也有提到=>【相关文章】 实现方法有多种,比如在Nginx的fastcgi缓存中取消xml文件的缓存屏蔽,或者使用张戈博客最早使用的php生成静态文件等。 在这里,我就分享一个自己一直在用的最简单的实现方法:Linux定时任务+wget定时生成sitemap.xml 具体实现:将sitemap.php放到某个不为人知的目录,然后定时使用wget去请求这个文件,并将数据保存为sitemap.xml存放到网站根目录就可以了!比如: 2017-09-22补充:如果是启用了https的站点,需要加入 --no-check-certificate  的选项,即: Ps:使用这个方法,注意sitemap.php里面的 require('./wp-blog-header.php'); 要改成 require('../wp-blog-header.php'); 也就是注意相对位置! 如果实在搞不清楚什么是相对路径,那么就用简单粗暴的方法:将网站根目录的sitemap.php重命名为一个只有自己知道的php文件,比如xml.php,然后如下添加任务: 这样一来,就解决了sitemap.xml是动态数据问题了! 四、文章最后 ①、确认无误之后,已开通sitemap权限的就可以前往百度站长平台提交了,没开通权限的可以发送申请邮件到百度站长平台管理员邮箱申请,并且将sitemap.xml使用a标签链接在网站底部即可。 ②、代码使用很简单,可以根据需要增减内容,比如觉得标签不应该出现在sitemap里面的,可以将标签部分的php代码删除即可,但一定要注意不要误删除结尾的</urlset>标签。 ③、今天,把分类、单页面及标签的sitemap都整出来了,那开放适配专用sitemap的php代码也就可以继续完善下了,回头有时间我会整理总结一篇关于sitemap及开放适配的终结篇,敬请期待!
阅读全文
网站建设

百度Sitemap工具升级版内测,附移动sitemap.xml的php代码(支持响应式)

早上在研究如何禁止百度转码和百度网页缓存时,在百度站长平台看到了新消息提示,查看有如下内容: 看来俺博客的移动开放适配和移动站的建设已得到了百度的认可,我长期来的研究努力并没有白费。虽然很多人并不认可用二级域名再弄一个移动站的做法,而是更加推崇响应式网页,甚至谷歌也一直推荐响应式建站。 在我看来,只要做好PC站和移动站的适配工作,无论是从体验还是从SEO角度上看,二级域名做移动站和使用响应式的区别并不大。 最有说服力的案例就是百度搜索,百度自己都一直用的二级域名做移动站:http://m.baidu.com/,所以,用二级域名走移动站,绝对不会被百度搜索所排斥!这不,百度都给俺的移动站发邀请了,一切就清白了吧! 收到邀请后,我第一时间修改了php代码,并提交了针对m.zhang.ge的sitemap,下面简单说下步骤: 一、php代码 以下是摘自百度官方的移动Sitemap协议的帮助文件: 根据以上说明,可推出如下三种可用的移动sitemap生成php脚本(适合WordPress,其他程序仅供参考): ①、非响应式WordPress网站适用(适用于二级域名做移动站): ②、响应式WordPress网站适用: ③、响应式二合一做法: 如果是响应式网站,其实可以将PC版sitemap改造一下,同时兼顾百度PC搜索和移动搜索,代码如下: 请根据网站实际情况,选择合适的代码保存为sitemap_mob.php,并上传到网站根目录。 然后在浏览器访问:http://m.zhang.ge/sitemap_mob.php 查看效果。 Ps:如果响应式网站,推荐使用二合一的php代码,可同时提交向百度提交PC和移动的数据,从而避免转码困扰。 ④、福利:针对响应式网站,若还没开通百度sitemap权限,可制作开放适配专用的sitemap 代码如下: 先根据网站的实际版式,修改代码中板式标签部分,即将<xhtml_url>标签替换成实际的网站版式,以下为三种网站版式,选择一种即可: 不会看版式的,请参考如下说明对比一下网站的申明: 修改完善后,同样将上述代码保存为sitemap_sp.php文件。上传到网站根目录,然后使用浏览器访问该文件确认无误后,打开http://zhanzhang.baidu.com/mobiletools/index,提交百度开放适配数据即可!所有验证过的网站,均可以提交百度开放适配数据! 当然以上代码是针对响应式写的,如果是非响应式网站,请参看张戈博客之前的文章: 移动搜索SEO分享:PHP自动生成百度开放适配及360移动适配专用的Sitemap文件 二、新增伪静态 ①、Nginx做法 在原来的伪静态位置新增规则: ②、Apache做法 在.htaccess中新增规则: 保存后,在浏览器访问http://m.zhang.ge/sitemap_mob.xml 查看效果。 Ps:其实百度支持提交php地址,所以第二步只是为了看起来更像xml文件而已,其实可做可不做!! 三、前往提交 打开百度sitemap工具地址:http://zhanzhang.baidu.com/sitemap/index 选择移动域名后提交上面的sitemap_mob.xml地址即可: 提交完毕,至于有什么效果,就不得而知了,反正俺的博客的移动搜索本来就已经适配完善了: 算是给百度当了一次小白鼠,仅此而已。
阅读全文