织梦怎么提交百度必应推送

DedeCMS教程主动推送收录加速

为什么要做推送

搜索引擎发现新页面主要靠蜘蛛爬虫被动抓取,对于新站或更新不频繁的站点,新发布的内容可能要等几天甚至更久才被收录。主动推送是把新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不限每日更新
不要对同一URL重复推送。频繁推送已收录的旧URL不仅浪费额度,还可能被搜索引擎判定为作弊行为降低信任。推送只针对新发布或重大更新的内容。

验证推送是否成功

推送代码执行后,可以将返回结果记录到日志文件中,方便排查问题。百度接口成功返回 {"remain":剩余次数,"success":推送成功数},IndexNow成功返回HTTP 200状态码。如果推送失败,检查服务器是否支持curl扩展、密钥文件是否可访问、URL格式是否正确。

后续运营建议

把推送机制跑通后,建议结合sitemap提交、robots.txt配置形成完整的收录体系。日常关注百度搜索资源平台的「索引量」和必应Webmaster Tools的抓取报告,根据收录速度调整推送策略。对于重点栏目内容,可以在发布后辅以手动sitemap提交,让搜索引擎更快完成抓取与建库。推送只是加速手段,内容质量才是决定收录与排名的根本。