利用宝塔计划任务实现主动自动推送网站地图(sitemap)到百度站长(宝塔计划任务提取网站地图(sitemap)链接实现自动推送)
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
最近百度收录以及索引量有时候增加,有时间减少,很不稳定,就想着如何把相关的更新记录推送给百度一下,有了想法就要开始操作;
这个操作可以实现站点为wordpress以及PbootCMS或者其他站点均可;
一、 新建一个 PHP 文件,复制下面代码,将这个PHP文件命名为,Baidu_Push.php
二、 填写网站 sitemap.xml 地址和百度的推送接口(http://data.zz.baidu.com/urls?site=你的&token=你的),没token的 百度站长资源站去获取(https://ziyuan.baidu.com)。
三、 把文件地址添加到宝塔定时任务,选择访问 URL,自定义执行时间后,保存即可。
PS:其实在下面的代码中有三种写法,大致都是一样的,看自己喜好,我比较喜欢第一种:
第一种代码写法:
<?php header('Content-Type:text/html;charset=utf-8'); /** 只需修改这里面的两个链接 **/ $xml_url = "https://www.laoliang.net/baidu_sitemap.xml"; // 这里修改你站点的xml地图链接 $baidu_api = 'http://data.zz.baidu.com/urls?site=https://www.laoliang.net&token=2589053300';// 这里修改为你在百度站长获取到的推送接口 /***只需修改这里面的两个链接**/ $xmldata =file_get_contents($xml_url); $xmlstring = simplexml_load_string($xmldata,'SimpleXMLElement',LIBXML_NOCDATA); $value_array = json_decode(json_encode($xmlstring),true); $url = []; for ($i =0;$i < count($value_array['url']);$i++){ // echo $value_array['url'][$i]['loc']."<br/>"; $url[]= $value_array['url'][$i]['loc']; } //百度推送接口一次只支持推送2000条数据,所以超过2000条的话需要分组推送 $url_group = array_chunk($url,2000); $count=count($url_group); for($i=0;$i<$count;$i++){ $ch = curl_init(); $options = array( CURLOPT_URL => $baidu_api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode("\n",$url_group[$i]), CURLOPT_HTTPHEADER => array('Content-Type:text/plain'), ); curl_setopt_array($ch, $options); $result =curl_exec($ch); curl_close($ch); echo $result; } ?>
第二种代码写法:
<?php $token='http://data.zz.baidu.com/urls?site=www.laoliang.net&token=xxxxx';//去百度获取 $xml_string = file_get_contents("https://www.laoliang.net/sitemap.xml");//网站xml地图 $xml_string = trim($xml_string); $xml_object = simplexml_load_string($xml_string); $array=[]; $i=0; foreach ($xml_object->url as $key=>$value){ //默认一次提交100,适合用于泛目录的xml地图(因为刷新一次就随机变),普通的网站的会出现重复提交,慎用,非要用就把$i数值改成2000 百度不允许超过2000 if($i===100){ break; } $array['aa']= get_object_vars($value); $url.=$array['aa']['loc']."\n"; $i++; } $urls=explode("\n",$url); $ch = curl_init(); $options = array( CURLOPT_URL => $token, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode("\n", $urls), CURLOPT_HTTPHEADER => array('Content-Type: text/plain'), ); curl_setopt_array($ch, $options); $result = curl_exec($ch); echo $result; ?>
第三种代码写法:
<?php header('Content-Type:text/html;charset=utf-8'); $xmldata =file_get_contents("你的sitemap.xml链接"); $xmlstring = simplexml_load_string($xmldata,'SimpleXMLElement',LIBXML_NOCDATA); $value_array = json_decode(json_encode($xmlstring),true); $url = []; for ($i =0;$i < count($value_array['url']);$i++){ echo $value_array['url'][$i]['loc']."<br/>"; $url[]= $value_array['url'][$i]['loc']; } $api ='你的推送接口'; $ch = curl_init(); $options = array( CURLOPT_URL => $api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode("\n",$url), CURLOPT_HTTPHEADER => array('Content-Type:text/plain'), ); curl_setopt_array($ch, $options); $result =curl_exec($ch); echo $result; ?>
多站点版-注意:需要修改的区域都已经添加了注释,多个站点只需参考示例的两个数组进行增加,然后保存即可。
<?php header('Content-Type:text/html;charset=utf-8'); // ini_set('max_execution_time',600);//脚本超时,秒为单位,自己根据需要定义 /** 多个站点只需在这里面新增数组 **/ $data = array( array( 'url' => 'https://www.laoliang.net/sitemap.xml',// 这里修改你站点的xml地图链接 'api' => 'http://data.zz.baidu.com/urls?site=https://www.laoliang.net&token=111111111'// 这里修改为你在百度站长获取到的推送接口 ), array( 'url' => 'https://www.laoliang.net/sitemap2.xml',// 这里修改你站点的xml地图链接 'api' => 'http://data.zz.baidu.com/urls?site=https://www.laoliang.net&token=222222222'// 这里修改为你在百度站长获取到的推送接口 ), ); /** 多个站点只需在这里面新增数组 **/ foreach($data as $value){ echo '================================<br/>'; echo $value['url'].'<br/>'; post_Baidu($value['url'],$value['api']); } function post_Baidu($xml_url, $baidu_api) { $xmldata =file_get_contents($xml_url); $xmlstring = simplexml_load_string($xmldata,'SimpleXMLElement',LIBXML_NOCDATA); $value_array = json_decode(json_encode($xmlstring),true); $url = []; for ($i =0;$i < count($value_array['url']);$i++){ // echo $value_array['url'][$i]['loc']."<br/>"; $url[]= $value_array['url'][$i]['loc']; } //百度推送接口一次只支持推送2000条数据,所以超过2000条的话需要分组推送 $url_group = array_chunk($url,2000); $count=count($url_group); for($i=0;$i<$count;$i++){ $ch = curl_init(); $options = array( CURLOPT_URL => $baidu_api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode("\n",$url_group[$i]), CURLOPT_HTTPHEADER => array('Content-Type:text/plain'), ); curl_setopt_array($ch, $options); $result =curl_exec($ch); curl_close($ch); echo $result.'<br/>'; } } ?>
不管上面几种写法,但需要推送给百度;推送百度也有两种方式:
第一种:宝塔计划任务--添加计划任务---访问URL
最主要的就是url地址,别写错了即可,如下图我的所示;
第二种:宝塔新建计划任务---任务类型----shell脚本
脚本内容:php /www/你的网站目录/Baidu_Push.php
比如老梁的“php /www/www.laoliang.net/Baidu_Push.php”
搞好以后,直接点一下执行,测试一下,成功的如下:
{"remain": 今日剩余数,"success": 推送成功数}
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!
赏
支付宝赞助
微信赞助
免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。
您必须遵守我们的协议,如您下载该资源,行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源 LaoLiang.Net部分资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。
敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:service@laoliang.net
意在交流学习,欢迎赞赏评论,如有谬误,请联系指正;转载请注明出处: » 利用宝塔计划任务实现主动自动推送网站地图(sitemap)到百度站长(宝塔计划任务提取网站地图(sitemap)链接实现自动推送)