前几天百度公开课说了,api推送的优先级比较高,所以在没有快速收录的情况下,api提交必须要有,那么织梦要如何实现api主动推送呢?
具体步骤:
<?PHP require_once (include/common.inc.PHP); require_once include/arc.partview.class.PHP; require_once('include/charset.func.PHP'); $year = date(Y); $month = date(m); $day = date(d); $dayBegin = mktime(0,0,0,$month,$day,$year);//当天开始时间戳 $dayEnd = mktime(23,59,59,$month,$day,$year);//当天结束时间戳 $query = SELECT arch.id,types.typedir FROM dede_arctype as types inner join dede_archives as arch on types.id=arch.typeid where pubdate<.$dayEnd. AND pubdate>.$dayBegin.;//dede_archives dede_arctype 如果dede前缀未动可不进行修改,如果修改了,将表头修改为自己的实际表头 //echo $query; $urls=; $dsql->Execute('arch.id,types.typedir',$query); while($row = $dsql->GetArray('arch.id,types.typedir')) { $urls.=http://www.haogebiji.com.str_replace({cmspath},,$row['typedir'])./.$row[id]..html.,; //将上边域名换成换成你的网址 } $urls=substr($urls,0,-1); $urls = explode(,,$urls); $api = 'http://data.zz.baidu.com/urls?site='; // 换成自己的网站主动推送api $ch = curl_init(); $options = array( CURLOPT_URL => $api, 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; ?>
2、上面代码中第12行,大家需要根据自己的实际情况来替换文件中dede_archives以及dede_arctype的前缀,dede默认的数据库前缀为dede。
如果不记得自己的数据库前缀,可以打开数据库查看。这个dede就是数据库前缀。
4、第27行添加主动推送api。
api获取方法:百度站长平台—资源提交—普通收录—资源提交—api提交,就能看到接口调用地址。
5、上传tuisong.PHP文件。存放在任意目录都可以,为了安全起见,最好不要放在根目录。
打开浏览器,如:http://域名/某目录/tuisong.PHP,即可开始api推送。
如果显示:当今天有更新文章,则会成功推送链接并返回成功推送提升,如:{“remain”:499998,”success”:2}。其中,”remain”:499998指当天剩余的可推送499998条url,”success”:2指成功推送的2条url。
或显示:其他结果均为未推送成功!请检测修改文件是否正确!如返回错误:{“error”:400,”message”:”empty content”}则表示当天未更新文章或数据库前缀错误导致未获取到链接。
实现定时推送
这个需要借助宝塔,在宝塔中添加定时任务,代替人工浏览,达到自动推送的目的。建议在晚上执行推送任务,避免白天服务器压力过大,影响正常用户访问网站。
第二天记得查看任务列表右侧的【日志】信息,确定是否执行成功。
或者也可以查看【资源提交】-【普通收录】-【数据反馈】中,查看api推送数据。