织梦怎么提交百度必应推送
为什么要做推送
搜索引擎发现新页面主要靠蜘蛛爬虫被动抓取,对于新站或更新不频繁的站点,新发布的内容可能要等几天甚至更久才被收录。主动推送是把新URL通过API直接提交给搜索引擎,相当于「主动告诉」百度和必应这里有新内容,能显著缩短收录周期。织梦DedeCMS发布文章后,可以通过集成推送接口实现自动提交。
一、百度主动推送配置
1. 获取推送接口地址
登录百度搜索资源平台,进入「普通收录」-「API提交」,页面会显示一个推送接口地址,格式如下:
http://data.zz.baidu.com/urls?site=www.example.com&token=你的密钥
其中 token 是百度分配的唯一密钥,需要妥善保管。
2. 织梦集成推送代码
在织梦发布文章的接口文件中添加推送逻辑。编辑 /dede/article_add.php(发布文章处理文件),在文章保存成功后插入以下代码:
// 百度主动推送
$urls=array(
'https://www.example.com'.$artUrl,
);
$api='http://data.zz.baidu.com/urls?site=www.example.com&token=你的密钥';
$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);
curl_close($ch);
/dede/article_edit.php,在更新成功后加入同样逻辑即可。二、必应IndexNow推送配置
必应、Yandex等搜索引擎共同支持IndexNow协议,推送方式更简单。IndexNow只需要提交URL列表,不需要像百度那样分平台。
1. 生成密钥文件
生成一个随机字符串作为密钥(如32位),在网站根目录创建一个文本文件,文件名就是密钥,内容也填写该密钥。例如密钥为 a1b2c3...,则创建 https://www.example.com/a1b2c3....txt,文件内容为该密钥字符串。
2. 提交推送请求
在织梦发布文章处添加IndexNow推送代码:
// IndexNow推送
$key='a1b2c3你的密钥';
$urls=array(
'https://www.example.com'.$artUrl,
);
$data=json_encode(array(
'host'=> 'www.example.com',
'key'=> $key,
'keyLocation'=> 'https://www.example.com/'.$key.'.txt',
'urlList'=> $urls,
));
$ch=curl_init('https://api.indexnow.org/IndexNow');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_exec($ch);
curl_close($ch);
三、封装通用推送函数
为避免代码重复,建议把百度和必应推送封装成一个函数,放在 /include/extend.func.php 中:
function pushUrls($url){
$urls=array($url);
// 百度推送
$baiduApi='http://data.zz.baidu.com/urls?site=www.example.com&token=密钥';
$ch=curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL=> $baiduApi,
CURLOPT_POST=> true,
CURLOPT_RETURNTRANSFER=> true,
CURLOPT_POSTFIELDS=> implode("\n", $urls),
CURLOPT_HTTPHEADER=> array('Content-Type: text/plain'),
));
curl_exec($ch);
curl_close($ch);
// IndexNow推送
$postData=json_encode(array(
'host'=> 'www.example.com',
'key'=> '你的密钥',
'urlList'=> $urls,
));
$ch2=curl_init('https://api.indexnow.org/IndexNow');
curl_setopt_array($ch2, array(
CURLOPT_POST=> true,
CURLOPT_POSTFIELDS=> $postData,
CURLOPT_RETURNTRANSFER=> true,
CURLOPT_HTTPHEADER=> array('Content-Type: application/json'),
));
curl_exec($ch2);
curl_close($ch2);
}
然后在发布和编辑文章处调用 pushUrls($artUrl) 即可一次推送两个平台。
推送频率与限制
| 平台 | 每日额度 | 建议频率 |
|---|---|---|
| 百度API推送 | 根据站点评级,普通站数千条 | 发布即推 |
| IndexNow | 无明确上限 | 发布即推 |
| 百度sitemap | 不限 | 每日更新 |
验证推送是否成功
推送代码执行后,可以将返回结果记录到日志文件中,方便排查问题。百度接口成功返回 {"remain":剩余次数,"success":推送成功数},IndexNow成功返回HTTP 200状态码。如果推送失败,检查服务器是否支持curl扩展、密钥文件是否可访问、URL格式是否正确。
后续运营建议
把推送机制跑通后,建议结合sitemap提交、robots.txt配置形成完整的收录体系。日常关注百度搜索资源平台的「索引量」和必应Webmaster Tools的抓取报告,根据收录速度调整推送策略。对于重点栏目内容,可以在发布后辅以手动sitemap提交,让搜索引擎更快完成抓取与建库。推送只是加速手段,内容质量才是决定收录与排名的根本。