网站建设

百度嵌入式站内搜索https化实践分享

百度站内嵌入式搜索,相信很多网站都已经用了有一段时间了。可惜在百度自己大力提倡网站https化的同时,百度的周边产品却自己打脸了,完全跟不上进度。 不得不说,百度这个嵌入式站内搜索给了网站更多的DIY遐想,让搜索更加贴合各种主题,原汁原味: Ps:预览地址:https://zhang.ge/search.html ,怎么制作这里就不赘述了,请参考本站历史教程。 这玩意好是好,但是不支持https!不过,我们可以有多种办法来变相实现。比如,利用七牛将百度分享https化、利用七牛将百度打赏https化,貌似七牛无所不能哦? 这里,当然也是可以利用七牛来解决问题,但是我并不想“邯郸学步”,所以这里打算用Nginx来实现。 一、改造原理 Ps:只求结果,不求过程的朋友请忽略此段啰嗦内容! 由于百度站内嵌入式搜索不支持https,那么就算把主js(iframe.js)本地化或者七牛化,也只是这一个文件实现了https!从这个js加载出来的图片等各种资源却还是调用的百度的http资源!因此,我们得分析这个js会调用的资源,然后全部https化。 百度嵌入式搜索其实就一个主js:http://zhannei.baidu.com/static/js/iframe.js,我们把它下载到本地,然后将其中的百度静态域名全部清空,只保留相对路径。比如:http://zhannei.baidu.com/customer_search/***,我们需要删除协议和域名部分,改成 /customer_search/*** 这种相对路径,这样我们才可以实现 Nginx 反代,七牛也是一样原理。 可能,光从肉眼去看js具体调用了哪些静态资源是比较困难苦逼的,这是我们可以将js上传到本地,然后将百度嵌入式代码改成本地js,刷新前台的时候就可以在F12控制台去看某某资源因为不是https被拦截了,这样就知道哪些资源还需要继续改造了! 二、改造代码 既然分享,说明第一步的苦逼工作也已经做过了,直接分享代码: 将以上代码保存为js文件,比如 baidusearch.js ,然后上传到服务器网站目录,(推荐放于主题下,比如:/wp-content/themes/begin/js/baidusearch.js) 然后,将百度站内嵌入式搜索代码中的iframe.js地址替换为以上js地址,到此完成网站代码部分改造: Ps:更多内容,请参考本站历史教程吧 三、反向代理 第二步还只是将相关资源全部指向了本地,所以下面需要改造Nginx,将这些指向全部反代到百度站内搜索,修改很简单,将以下Nginx代码添加到网站Nginx配置的 location / { 之前: 如果,Nginx集成了ngx_cache_purge 缓存模块,那么可以将上述代码中的缓存规则打开,避免每次搜索还要到百度去请求资源【相关教程】! 规则添加后,重启或重载Nginx即可生效。这时候,https前台就能正常使用百度嵌入式站内搜索了! 四、更多花絮 https实现了,但是还是有些瑕疵,那就是搜索结果中缩略图默认使用https协议,可能会被浏览器拦截。在张戈博客应用这个改造后,发现大部分缩略图居然返回403禁止了,仔细看了下,大部分如下形式: http://i8.baidu.com/it/u=1582249672,3936911246&fm=85&s=6BAAA3475C1300C649B5710B0100E09 看来是百度站内搜索zhannei.baidu.com开启了防盗链机制,自己不支持https,还不让别人改造么?于是直接给站内搜索管理员发了一份邮件: 目前,站内搜索确实取消防盗链了,虽然管理员牛逼哄哄的也没回我邮件。。。 虽然不再禁止访问了,但里面的图片依然是http协议的,严格的浏览器还是会禁止加载,不过对于完全不能用来说,这个瑕疵还算可以忍受!
阅读全文
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样式的调整,这是折腾主题的必备技能之一!所以样式问题就请自行搞定,这样才能学的更多,得到最大的收获!
阅读全文
网站建设

原创插件:WordPress博客友好对话框+文章随机推荐滚动条插件(附代码版)

双11光棍节,我在博客发布了一篇给博客部署一个友好对话框的教程,用了几天感觉非常不错!就进一步折腾了一下,目前这个js已实现以下多种功能: 一、功能描述 ①、能够取得访客的搜索来路和搜索关键词,并在右下角滑出欢迎对话框; ②、能够区分用户是否在博客留过言,从而给出不同的欢迎提示; ③、当有人复制博客任何内容时,将弹出友好的版权保留提醒; IE内核: WEBKIT内核: ④、JS代码版可全面兼容WordPress、ZBlog(PHP&ASP)、Emlog及Typecho: 我已手工适配上述建站程序对于留言信息的cookies命名,从而可以顺利取得不同建站程序的留言者昵称。 ⑤、网站底部随机文章滚动条功能(此功能仅WordPress插件版配备) Ps:张戈设计以上功能的目的,上一篇文章已说得很清楚了,主要是提高自然访客的体验度,尽最大努力增加网站粘性,从而降低跳出率。好了,废话不多说,开始分享咯! 二、JS部署方法 js部署方法非常简单,直接将如下代码粘贴到博客的footer或head或其他任意位置即可: 比如WordPress博客可以将上述代码粘贴到主题目录下的footer.php中。此JS代码在其他博客程序也同样适用! 二、WordPress插件 考虑到一些不懂代码的小白博主,所以花了些时间写了个WordPress插件,目前已提交至WordPress官方,并成功通过审核: 插件地址:https://wordpress.org/plugins/wp-dialog/ 下载地址:https://downloads.wordpress.org/plugin/wp-dialog.zip 如果好用,希望你能抽空前往给个好评,支持下~非常感谢! 安装方法: 方法①、直接在后台插件在线安装界面,搜索wp dialog并按照提示安装启用即可【推荐】。 方法②、将下载的文件解压,然后将wp-dialog文件夹 上传到 /wp-content/plugins/目录,在插件后台启用即可; 方法③、进入后台插件安装界面,选择上传安装插件,并选择下载得到的zip压缩包即可; 注意事项: 如果发现启用插件之后,滚动条不能滚动,可能有如下情况: ①. 博客未正确加载Jquery.js; ②. 博客重复加载了Jquery.js造成冲突。 若出现以上情况,请参考解决:https://zhang.ge/4387.html,当然,你也可以联系张戈协助解决。 Ps:这是张戈博客的第二个WordPress原创插件,希望大家喜欢。 2015.08.01 : Ver 1.25.2版本更新说明 = 1.2.5.2 = * 新增好搜、必应、神马和有道搜索来路判断功能; * 压缩js代码,优化加载速度,压缩后大概可以减少20kb; * 对话框改为在移动端不弹出(移动端弹出体验不好)。 = 1.2.5.1 = * 修复导致部分主题某些元素意外隐藏问题; * 修复部分对话框相关图片404问题。 2015.05.02:Ver 1.25版本更新说明 修复在部分主题下滚动条不显示文字或错乱问题; 修复底部滚动文字在宽度变窄时会消失的问题; 修改为当宽度小于480px底部滚动条自动隐藏; 新增宽度小于720px时,不会自动弹出欢迎框;  新增cookies记忆评论者信息功能,可在后台关闭; 其他未及时记录在案的CSS冲突修正。 Ver 1.24版本更新说明: 修复了在IE下复制文字无法弹出版权提醒的BUG; 新增宽度小于900px时隐藏底部公告栏的特性。 2015.01.07:Ver 1.23版本更新说明: ①、新增网页嗨一下功能,首次启动请到插件设置界面填写歌曲url地址 ②、后台新增邮件订阅设置,可自定义滚动条右侧的博客订阅按钮地址 ③、后台新增留言地址设置,让对话框中显示留言板超链接 ④、修复可能从cookie获取用户名乱码的问题 2014.11.23:Ver 1.22版本更新说明 ①、后台设置新增主题对话框功能开关,至此该插件所有功能都能灵活组合了; ②、修复了几个不影响功能的小错误。 2014.11.22:Ver 1.21版本新增了后台设置功能: 插件激活后,点击按钮进入插件设置界面,插件默认设置如下: 很直白的设置说明,一看就懂,其中手动呼出对话框是指底部随机文章滚动条右侧的笑脸按钮,其他的就不多说了。下一版本将在设置项目里面新增是否开启欢迎对话框设置功能,让插件的功能更加灵活! 三、ZBlogPHP插件 暴博客看到这个js之后,兴致勃勃的写了一个ZBlogPHP版插件,使用ZBP建站的朋友可以前往下载安装。 ZBP插件官方地址:http://app.zblogcn.com/?id=587 四、附加说明 ①、该对话框在浏览器关闭之前只会弹出一次,避免了重复弹出带来的负面影响,但是从搜索引擎再次打开的页面一定会显示对话框。 针对纯代码版(WordPress插件版已自带底部手动呼出功能): ②、如果想和张戈博客一样,在右下角增加一个手动呼出对话框的功能,你可以如下操作: i. 张戈在写js的时候,已经预留了手动接口: ii. 所以,只要在想要的位置新增一个a标签,可以是图片也可以是按钮,即可成功添加一个手动呼出对话框的功能: 比如图片按钮的代码如下: 文字的就不说了,这都搞不定,那还能说什么呢? 就写这么多,最后郑重声明一下,该插件及功能想法均属于张戈博客的原创作品,任何个人或团体不可擅自更改版权,否则必追究责任!
阅读全文
网站建设

百度站内搜索全新改版: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制作百度站内搜索绿色通道的网页列表数据文件 关于新版站内搜索和行业数据模板的分享就到此告一段落,下面我会继续研究下站内搜索的页面顶部设置和结果样式设置,敬请期待!
阅读全文
网站建设

利用artDialog给网站添加一个能显示搜索来路和关键词的欢迎框

最新消息:目前该功能已推出WordPress版和ZBlog(PHP)版插件!详细介绍=> 导读 我们都知道,跳出率的高低和网站的粘性有着必然的关系,而对于网站粘性,我们可以通过提高文章的质量、可读性及实用性来进一步优化。当然,前人还教诲我们,可以在文章底部弄一些相关性文章来吸引读者进一步点击阅读,可以有效地降低跳出率。 总之,这些都是网络上老生常谈的一些网站粘性优化经验,大家都能心神领会。 一、功能由来 前些天,我在查看CNZZ搜索词的时候发现了一种跳出率为100%的情况:搜索词和我博客的文章有一定相关性,但可能并不是用户确切想要的解决方法,所以用户就随手Close了。 将前期跳出率为100%的搜索词都看了一遍之后,我不禁心里呐喊:虽然用户搜索的问题,博客当前的文章无法解决,但是并不代表我不会啊!我只是没遇到这种情况,从而文章就没写到而已!! 但是,呐喊始终是无力的,因为你并不知道用户是谁?也无法主动和他联系!那么就只有一种可能:用户主动联系你,帮助他解决问题,从而丰富博客相关问题的解决办法,为之后的搜索带来更强的粘性! 那么问题来了,如何让用户主动联系你呢?想法总是高于技术的,只要有了想法,技术问题迟早可以解决。 当我拿到这个问题时,我就有了一个想法:当用户从搜索引擎通过搜索词打开你的博客文章时,网站可以在右下角弹出一个友好提示,告诉用户如果当前文章无法解决问题,你可以直接留言联系博主,从而间接和用户搭上了线!虽然,不一定全部奏效,但是只要有百分之一的效果,我们就值得去努力尝试! 理论的道理磨叽叭嗦的说了一大堆,实际是为了凑字数。。。 下面就献上张戈研究了一个下午的成果: 二、功能简介 ①、功能说明 本功能通过artDialog插件并结合一系列js代码实现,当用户通过关键词从搜索引擎点开你的博客时,在网站右下角弹出一个友好提示框,显示用户所使用的【搜索引擎】及【关键词】,并告诉用户若无法解决问题可以留言联系博主。值得说明的是本功能只对从搜索引擎来的用户有效,平常的访问将不可见。 ②、功能预览 i. 在线搜索张戈博客已收录文章的关键词,比如在百度搜索  centos 7  或  张戈: ii. 从搜索结果中打开张戈博客的文章链接,就可以在右下角弹出友好提示框: iii. 当然,其他主流搜索引擎张戈也已写好适配代码,比如谷歌、360以及搜狗,可以自行搜索测试。 三、功能实现 一直以来,张戈博客分享任何需要代码实现的功能,总是会贴上代码,并作详细说明。现在想想,我是不是进入了一个误区?因为我发现代码越多,解释越多,用户就越迷茫! 所以,这次分享我不会细说代码,仅仅说一下最简部署方法。至于进一步的DIY,请自己去搜索搞定。 部署方法很简单,直接将以下代码添加到博客的footer或head部分即可: 四、附加说明 ①、获取搜索引擎及搜索关键词的功能和搜索引擎的url形式有关系,所以张戈当前编写js并不一定永久有效,当搜索引擎的查询链接有所改变时,该功能可能失效,比如百度搜索是【&wd=string】,而谷歌搜索是【&q=string】。只要这个查询参数不变,那么js理论上一直有效; ②、本站初次尝试以最少代码来实现功能(俗称最简分享),也就是只要调用张戈博客已经部署好的代码就可以实现这个功能,所以展现形式也和张戈博客的一致!当然,后续有时间我可能会来补充详细的本地部署和DIY的方法; ③、代码的编写和测试仅用了一个下午,所以难免会有一些未料到的BUG,若有发现请及时反馈。 好了,本文分享到此结束,喜欢的赶紧去试试吧! 最新消息:目前张戈博客已推出WordPress插件版,欢迎前往查看:https://zhang.ge/4718.html
阅读全文
网站建设

替换WordPress默认搜索为百度站内搜索(知更鸟主题可照搬)

今天,中国博客联盟QQ群里的【58说】博友提到百度站长平台推出绿色收录通道了。连忙登陆站长平台看了下,意外的发现张戈博客已开通了站内搜索功能。之前确实给管理员发邮件申请过,不过一直没有邮件回复,就放一边没管了。 先打开了【绿色通道】的按钮看了看: 以张戈的经验来看,这个地址应该填写sitemap.xml或者html版本的网站地图为最佳! 而张戈博客之前已开通并提交了sitemap.xml文件,于是选择填写了html版本的博客地图url: https://zhang.ge/blogmap 目前处于审核状态: 百度一向以反应迟钝出名,所以什么时候审核完成,咱们就没必要过于关注了。准备折腾一下期待已久的百度站内搜索功能: 可以发现有个【搜索框样式】,进去自定义设置一番,会获得一段代码,这时候只要把代码贴到侧边栏的文本框应该就能用了吧?不过,此文并非分享如何将百度站内搜索添加到博客的侧边栏,所以想添加到侧边栏的朋友,请看知更鸟作者鸟哥很久以前的相关教程:《将百度站内搜索添加到侧边小工具中》,理论上适用于各种WordPress。 下面说下知更鸟主题的博客,如何将上方博客导航里面内嵌的搜索换成百度站内搜索: 一、准备工作 温馨提示:建议在博客的百度收录比较完整的时候,再使用此功能,否则搜索结果将远远小于实际可搜索内容,甚至空白!因为站内搜索的结果均来自百度收录!张戈大胆猜测,用了百度站内搜索,百度收录的速度应该会有所提升,因为这其中还涉及到了额外数据的抓取! 做这项工作之前,咱们还有一个重要的准备工作: ①、CNAME一个二级域名到zhannei.baidu.com:   ②、将这个二级域名添加为百度站内搜索的【搜索域名】: ③、确认这个二级域名可以正常访问到百度站内搜索,比如:http://so.zhang.ge 到这里,准备工作就已经做好了(其他站内搜索选项,自行按照提示设置即可)! 二、折腾主题 ①、我们先看下知更鸟主题的主题选项: 发现可以选择WP默认搜索或者Google搜索,谷姐最近来例假了,咱也就别打扰她了,还是用百度吧! ②、再打开主题模板中的header.php,可以找到这样一段代码: 可知,当选择为Google搜索时,调用的就是 includes/g_search.php,所以,今天的折腾对象就是它了! ③、打开includes/g_search.php,瞄了瞄身体构造: 对比如下的百度站内搜索的链接结构: http://so.zhang.ge/cse/search?s=11196058821421648414&q=搜索词 ④、依葫芦画瓢改装后的代码: 将 includes/g_search.php内容替换为以上代码,然后参考上图知更鸟主题选项中的【搜索设置】,修改成自己的百度站内搜索ID和地址即可。 三、附加部分 ①、如果不是知更鸟主题,以上代码可直接如下写死: 将代码中的第1、2行修改成你的站内搜索地址及ID即可,至于怎么用,放到哪,张戈就不管了,自己看着办吧。 ②、在站内搜搜结果中插入百度广告 前提必须已申请了百度联盟,然后去百度联盟创建3个广告位,再将广告ID插入到站内搜索的【获得收入】选项中即可,具体操作可参看下图文字说明:   ③、还未开通站内搜索的博客,可参考下图发一封邮件至百度站长平台管理员[email protected]:   至于能否开通,就看管理员心情了。。。。 四、最终效果 在知更鸟主题导航的内嵌搜索框中输入任意内容,回车即可: 虽然样式无法自定义,但总体还算满意!文章写的有点流水账,有兴趣的可以参考操作试试。至于牵扯到的相关CSS样式神马的,请自行调整,就不赘述了,毕竟折腾WP还是要有那么一点功底的。
阅读全文