利用寶塔計劃任務(wù)實現(xiàn)主動自動推送網(wǎng)站地圖(sitemap)到百度站長(寶塔計劃任務(wù)提取網(wǎng)站地圖(sitemap)鏈接實現(xiàn)自動推送)
[重要通告]如您遇疑難雜癥,本站支持知識付費業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!
最近百度收錄以及索引量有時候增加,有時間減少,很不穩(wěn)定,就想著如何把相關(guān)的更新記錄推送給百度一下,有了想法就要開始操作;
這個操作可以實現(xiàn)站點為wordpress以及PbootCMS或者其他站點均可;
一、 新建一個 PHP 文件,復(fù)制下面代碼,將這個PHP文件命名為,Baidu_Push.php
二、 填寫網(wǎng)站 sitemap.xml 地址和百度的推送接口(http://data.zz.baidu.com/urls?site=你的&token=你的),沒token的 百度站長資源站去獲?。╤ttps://ziyuan.baidu.com)。
三、?把文件地址添加到寶塔定時任務(wù),選擇訪問 URL,自定義執(zhí)行時間后,保存即可。
PS:其實在下面的代碼中有三種寫法,大致都是一樣的,看自己喜好,我比較喜歡第一種:
第一種代碼寫法:
<?php header('Content-Type:text/html;charset=utf-8'); /** 只需修改這里面的兩個鏈接 **/ $xml_url = "http://m.madamerex.com/baidu_sitemap.xml"; // 這里修改你站點的xml地圖鏈接 $baidu_api = 'http://data.zz.baidu.com/urls?site=http://m.madamerex.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條數(shù)據(jù),所以超過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.madamerex.com&token=xxxxx';//去百度獲取 $xml_string = file_get_contents("http://m.madamerex.com/sitemap.xml");//網(wǎng)站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地圖(因為刷新一次就隨機變),普通的網(wǎng)站的會出現(xiàn)重復(fù)提交,慎用,非要用就把$i數(shù)值改成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; ?>
多站點版-注意:需要修改的區(qū)域都已經(jīng)添加了注釋,多個站點只需參考示例的兩個數(shù)組進行增加,然后保存即可。
<?php header('Content-Type:text/html;charset=utf-8'); // ini_set('max_execution_time',600);//腳本超時,秒為單位,自己根據(jù)需要定義 /** 多個站點只需在這里面新增數(shù)組 **/ $data = array( array( 'url' => 'http://m.madamerex.com/sitemap.xml',// 這里修改你站點的xml地圖鏈接 'api' => 'http://data.zz.baidu.com/urls?site=http://m.madamerex.com&token=111111111'// 這里修改為你在百度站長獲取到的推送接口 ), array( 'url' => 'http://m.madamerex.com/sitemap2.xml',// 這里修改你站點的xml地圖鏈接 'api' => 'http://data.zz.baidu.com/urls?site=http://m.madamerex.com&token=222222222'// 這里修改為你在百度站長獲取到的推送接口 ), ); /** 多個站點只需在這里面新增數(shù)組 **/ 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條數(shù)據(jù),所以超過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/>'; } } ?>
不管上面幾種寫法,但需要推送給百度;推送百度也有兩種方式:
第一種:寶塔計劃任務(wù)--添加計劃任務(wù)---訪問URL
最主要的就是url地址,別寫錯了即可,如下圖我的所示;
第二種:寶塔新建計劃任務(wù)---任務(wù)類型----shell腳本
腳本內(nèi)容:php /www/你的網(wǎng)站目錄/Baidu_Push.php
比如老梁的“php /www/m.madamerex.com/Baidu_Push.php”
搞好以后,直接點一下執(zhí)行,測試一下,成功的如下:
{"remain": 今日剩余數(shù),"success": 推送成功數(shù)}
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!