作为一名站长,大家一定关注自己站点百度的收录,应该都知道百度搜索提供了一段自动推送的js代码,可将任意网页推送到搜索引擎,加快收录。如果直接把代码放在网站,推送的js代码会重复提交推送,这样是不是很不好,
找到phpcms\libs\functions\extention.func.php
添加如下函数
function baidu_check_record($url){
if(strpos($url,'.html')){
$baidu_cache = getcache('baidurecord','baidu');
$baidu_cache=unserialize($baidu_cache);
$pathurl=str_replace(APP_PATH,'',$url);
$array=explode('-',$pathurl);
if($array[1] && $array[2] && $baidu_cache[$array[1].'-'.$array[2]] == 1){
return 1;
}else{
$url='http://www.baidu.com/s?wd='.$url;
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
$rsurl=curl_exec($curl);
curl_close($curl);
//如果抓取到的百度结果中不存在【提交网址】这个关键词,则认为该页面已被百度收录
if(!preg_match_all('/提交网址/i',$rsurl,$match1) && preg_match_all('/百度为您找到相关结果/i',$rsurl,$match2)){
$baidu_cache[$array[1].'-'.$array[2]]=1;
$baidu_cache=serialize($baidu_cache);
setcache('baidurecord',$baidu_cache,'baidu');
return 1;
} else {
return 0;
}
}
}
}
function bdPushData($catid,$id) {
if ($_SERVER['HTTPS'] != "on") {
$currentUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
} else {
$currentUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
}
if(!$catid || !$id) return;
$get_url=go($catid,$id);
//判断是否是未收录页面,并且当前页面是否等于正规url地址(get_premalink)
if(baidu_check_record($get_url) == 0 && $currentUrl == $get_url) {
echo "<script>(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'http') {
bp.src = 'http://zz.bdstatic.com/linksubmit/push.js';
} else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(bp, s);
})();</script>";
}
}
在页面底部加上如下代码:
{if $catid && $id}
{bdPushData($catid,$id)}
{/if}
工作原理是文章加载时,会再百度搜索当前文章的url地址,如果百度未收录,查询结果中会匹配到“没有找到该URl。您可以直接访问”或"很抱歉,没有找到与"文字内容。当代码确认页面已经收录时,将会把文章的栏目catid和文章id保存成数组,存储到缓存,方便下次直接获取来判断是否已经推送过了。
百度自动推送服务对象及原理
JS链接推送代码以网页为最小对象,服务于全平台多终端,PC站和移动站均可使用。
安装代码的页面在任意平台(浏览器、微信、微博)被加载时,页面链接会被第一时间推送给百度,从而提高站点新内容的发现速度。
本文摘自[找寻记忆]网站,原文链接“https://www.liloufan.com/jishu/2016/09/22131.html”转载请保留出处.
phpcms v9添加百度自动推送JS代码并解决重复推送问题
PS: 大家余生也别多多指教了,都TM爱咋过咋过吧!BY:梦梵FLY-2023-03-23