dede 百度主动推送

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 DEDE建站 正文

什么是百度主动推送?

在讲解如何配置之前,我们先简单理解一下它的概念和好处。

dede 百度主动推送
(图片来源网络,侵删)
  • 传统方式:网站发布新内容后,需要等待百度蜘蛛(Spider)通过网站的sitemap或外部链接来“爬取”和“发现”,然后收录,这个过程可能需要数天甚至数周。
  • 主动推送:当你发布新内容后,主动将新页面的URL列表通过API接口实时“推送”给百度,这相当于告诉百度:“喂,我这儿有新内容,快来抓取!”

主动推送的好处:

  1. 加快收录速度:最直接的好处,能让百度秒级发现你的新内容,大大缩短收录周期。
  2. 提高收录率:对于一些比较深或者不常被蜘蛛访问的页面,主动推送可以确保它们被百度看到,从而提高整体收录率。
  3. 优化SEO效果被快速收录,就能更早地参与关键词排名,抢占流量先机。

准备工作:获取百度推送接口的推送Token

在配置DedeCMS之前,你必须在百度搜索资源平台获取你的专属推送接口地址和Token。

  1. 登录百度搜索资源平台https://ziyuan.baidu.com/
  2. 选择你的站点:在左侧菜单栏找到并点击“站点管理”,选择你要配置的网站。
  3. 找到链接提交:在左侧菜单栏的“站点属性”下,点击“链接提交”。
  4. 获取推送接口:在“链接提交”页面,你会看到多种提交方式,选择并展开 “API提交”
  5. 复制Token:在这里你会看到一个类似 http://data.zz.baidu.com/urls?site=你的域名&token=你的密钥 的链接。请务必复制这个完整的链接,其中的 你的密钥 就是你的推送Token,后面配置时会用到。

在DedeCMS中配置主动推送

配置的核心思路是:在文章发布或更新的瞬间,自动触发一个函数,将当前文章的URL通过API推送给百度。

这里我们主要介绍两种方法:推荐方法一(安全可靠)方法二(简单直接)

dede 百度主动推送
(图片来源网络,侵删)

修改 article_add.php 文件(推荐)

这个方法是在文章成功保存到数据库后,立即执行推送逻辑,非常稳定。

操作步骤:

  1. 找到文件:通过FTP或主机管理面板,登录你的网站,找到并下载 /dede/article_add.php 文件。(操作前请务必备份原文件!)

  2. 修改文件:用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开 article_add.php 文件。

    dede 百度主动推送
    (图片来源网络,侵删)
  3. 添加推送代码:在文件末尾,找到 //更新位置 或者 //返回成功信息 之类的代码段,在 ?> 之前,添加以下PHP代码。

    // ==========================================================
    // 百度主动推送功能 开始
    // ==========================================================
    $baiduPushApi = 'http://data.zz.baidu.com/urls?site=你的域名&token=你的密钥'; // <-- 第1步:替换成你自己的API地址
    $arcurl = $cfg_cmsurl.'/'.$articleurl; // 获取当前文章的完整URL
    // 使用curl推送
    $ch = curl_init();
    $options = array(
        CURLOPT_URL => $baiduPushApi,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => $arcurl,
        CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
    );
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);
    curl_close($ch);
    // 可以在这里记录推送日志,方便排查问题
    // file_put_contents(dirname(__FILE__).'/baidu_push.log', date('Y-m-d H:i:s') . " - Pushed: " . $arcurl . " - Result: " . $result . "\n", FILE_APPEND);
    // ==========================================================
    // 百度主动推送功能 结束
    // ==========================================================

    代码说明:

    • $baiduPushApi务必将这里的值替换成你在百度资源平台复制的那个完整API链接
    • $arcurl:自动获取刚刚发布的文章的URL。
    • curl:使用PHP的cURL库向百度API发送POST请求,推送URL。
    • 日志部分(被注释掉):如果你想记录每次推送的情况,可以取消注释这行代码,它会创建一个 baidu_push.log 文件在 article_add.php 同级目录下,方便你检查是否成功推送。
  4. 上传文件:将修改好的 article_add.php 文件上传回服务器的原位置,覆盖旧文件。

  5. 测试:登录DedeCMS后台,发布一篇新文章,发布成功后,可以去你的百度搜索资源平台的“收录与提交” -> “链接提交”页面,查看“实时推送”的数据,如果数据有变化,说明配置成功了!


修改 inc_archives_functions.php 文件(同时支持新增和更新)

这个方法修改的是文章处理的公共函数文件,可以实现“发布”和“更新”文章时都进行推送。

操作步骤:

  1. 找到文件:下载 /dede/inc_archives_functions.php 文件。(操作前请务必备份原文件!)

  2. 修改文件:打开 inc_archives_functions.php 文件。

  3. 添加推送代码:在文件末尾,?> 之前,添加以下PHP代码。

    // ==========================================================
    // 百度主动推送功能函数 开始
    // ==========================================================
    function baiduActivePush($arcurl) {
        $baiduPushApi = 'http://data.zz.baidu.com/urls?site=你的域名&token=你的密钥'; // <-- 第1步:替换成你自己的API地址
        if (empty($arcurl)) {
            return false;
        }
        $ch = curl_init();
        $options = array(
            CURLOPT_URL => $baiduPushApi,
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => $arcurl,
            CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
        );
        curl_setopt_array($ch, $options);
        $result = curl_exec($ch);
        curl_close($ch);
        // file_put_contents(dirname(__FILE__).'/baidu_push_func.log', date('Y-m-d H:i:s') . " - Pushed: " . $arcurl . " - Result: " . $result . "\n", FILE_APPEND);
        return $result;
    }
    // ==========================================================
    // 百度主动推送功能函数 结束
    // ==========================================================
  4. 调用函数

    • 在“发布”文章时推送:在 inc_archives_functions.php 文件中,找到 InsertArchives() 函数,在这个函数的最后(通常在 return $arcid; 之前),添加一行:
      // 发布文章后推送
      baiduActivePush($cfg_cmsurl.'/'.$articleurl);
    • 在“更新”文章时推送:在 inc_archives_functions.php 文件中,找到 UpdateArchives() 函数,同样,在这个函数的最后,添加一行:
      // 更新文章后推送
      baiduActivePush($cfg_cmsurl.'/'.$articleurl);
  5. 上传文件:将修改好的 inc_archives_functions.php 文件上传回服务器。

  6. 测试:分别测试发布一篇新文章和更新一篇旧文章,然后去百度资源平台查看推送数据。


验证与常见问题

  1. 如何验证是否成功?

    • 方法一:在百度搜索资源平台的“链接提交” -> “实时推送”页面,查看推送成功条数。
    • 方法二:如果你开启了日志功能,检查服务器上生成的日志文件(如 baidu_push.log),看里面是否有记录。
    • 方法三:用 var_dump($result); 在推送代码后打印出百度API返回的结果,百度成功返回 {"success":123} 这样的JSON字符串。
  2. 常见问题排查

    • 问题cURL extension not loadedfunction curl_init() not found
      • 原因:你的PHP环境没有开启cURL扩展。
      • 解决:联系你的主机服务商,开启PHP的cURL功能。
    • 问题file_put_contents failed to open stream: Permission denied
      • 原因:服务器上没有日志文件的写入权限。
      • 解决:将日志文件所在的目录(如 dede/)权限设置为 755777777有安全风险,请谨慎使用)。
    • 问题:推送后百度资源平台没有数据。
      • 原因
        1. API地址或Token填写错误。
        2. 文件路径或代码语法错误。
        3. PHP版本过低,不支持某些语法。
      • 解决:仔细检查代码,特别是API地址是否完整正确,可以尝试在代码中加入 echo $result; 来打印返回结果,帮助判断。

补充:其他推送方式

除了主动推送,百度还支持其他两种方式,可以组合使用以达到最佳效果:

  1. 自动推送:在你的网站页面中嵌入一段JS代码,当用户访问页面时,自动将URL推送给百度,这需要修改你的网站模板文件(如 head.htm)。

    • 获取代码:在百度资源平台的“自动推送”页面可以拿到JS代码。
    • 实现:将JS代码粘贴到所有模板页面的 <head></head> 标签之间。
  2. sitemap提交:生成一个包含你网站所有重要URL的XML文件(sitemap),然后提交给百度。

    • DedeCMS有现成的sitemap生成插件,可以在后台一键生成并提交。
    • 优点:适合一次性提交大量URL,特别是对于旧文章的收录。

主动推送(最快) + 自动推送(实时) + Sitemap(全面) 是最佳的SEO提交策略,对于DedeCMS,优先配置好主动推送,这是提升新内容收录效率最有效的一步。

-- 展开阅读全文 --
头像
织梦标签如何单个栏目调用?
« 上一篇 03-01
dede导航栏下拉菜单如何制作?
下一篇 » 03-01

相关文章

取消
微信二维码
支付宝二维码

目录[+]