利用寶塔計劃任務實現主動自動推送網站地圖(sitemap)到百度站長(寶塔計劃任務提取網站地圖(sitemap)鏈接實現自動推送)
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
最近百度收錄以及索引量有時候增加,有時間減少,很不穩定,就想著如何把相關的更新記錄推送給百度一下,有了想法就要開始操作;
這個操作可以實現站點為wordpress以及PbootCMS或者其他站點均可;
一、 新建一個 PHP 文件,復制下面代碼,將這個PHP文件命名為,Baidu_Push.php
二、 填寫網站 sitemap.xml 地址和百度的推送接口(http://data.zz.baidu.com/urls?site=你的&token=你的),沒token的 百度站長資源站去獲?。╤ttps://ziyuan.baidu.com)。
三、?把文件地址添加到寶塔定時任務,選擇訪問 URL,自定義執行時間后,保存即可。
PS:其實在下面的代碼中有三種寫法,大致都是一樣的,看自己喜好,我比較喜歡第一種:
第一種代碼寫法:
<?php header('Content-Type:text/html;charset=utf-8'); /** 只需修改這里面的兩個鏈接 **/ $xml_url = "http://m.arunagnihotri.com/baidu_sitemap.xml"; // 這里修改你站點的xml地圖鏈接 $baidu_api = 'http://data.zz.baidu.com/urls?site=http://m.arunagnihotri.com&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=m.arunagnihotri.com&token=xxxxx';//去百度獲取 $xml_string = file_get_contents("http://m.arunagnihotri.com/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' => 'http://m.arunagnihotri.com/sitemap.xml',// 這里修改你站點的xml地圖鏈接 'api' => 'http://data.zz.baidu.com/urls?site=http://m.arunagnihotri.com&token=111111111'// 這里修改為你在百度站長獲取到的推送接口 ), array( 'url' => 'http://m.arunagnihotri.com/sitemap2.xml',// 這里修改你站點的xml地圖鏈接 'api' => 'http://data.zz.baidu.com/urls?site=http://m.arunagnihotri.com&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/m.arunagnihotri.com/Baidu_Push.php”
搞好以后,直接點一下執行,測試一下,成功的如下:
{"remain": 今日剩余數,"success": 推送成功數}
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!
賞
支付寶贊助
微信贊助
免責聲明,若由于商用引起版權糾紛,一切責任均由使用者承擔。
您必須遵守我們的協議,如您下載該資源,行為將被視為對《免責聲明》全部內容的認可->聯系老梁投訴資源 LaoLiang.Net部分資源來自互聯網收集,僅供用于學習和交流,請勿用于商業用途。如有侵權、不妥之處,請聯系站長并出示版權證明以便刪除。
敬請諒解! 侵權刪帖/違法舉報/投稿等事物聯系郵箱:service@laoliang.net
意在交流學習,歡迎贊賞評論,如有謬誤,請聯系指正;轉載請注明出處: » 利用寶塔計劃任務實現主動自動推送網站地圖(sitemap)到百度站長(寶塔計劃任務提取網站地圖(sitemap)鏈接實現自動推送)