首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

百度站點地圖自動生成:ThinkPHP 實作每日增量更新

     編輯:PHP 相關知識

百度雖未開放標準 Sitemap 提交,但可透過站長平台「開放適配」推送更新資料。本文提供 ThinkPHP 實作的每日增量 Sitemap 生成器,自動抓取最新內容並輸出符合規範的 XML。

核心邏輯

  • 查詢過去 24 小時與 7 天內發布的內容
  • 依優先級設定 changefreq、priority
  • 生成 sitemap.xml 至網站根目錄

完整實作程式碼

function sitemapxml() {
    $today = date("Y-m-d");
    $yesterday = strtotime("-1 day");
    $lastweek = strtotime("-1 week");

    // 查詢最新資料 (假設使用 ThinkPHP M() 模型)
    $yesterdayArr = M()->query("SELECT * FROM pre_content WHERE status=1 AND create_time > {$yesterday}");
    $lastweekArr  = M()->query("SELECT * FROM pre_content WHERE status=1 AND create_time > {$lastweek}");

    $baseUrl = "https://www.example.com/content/";
    $data_array = [];

    // 昨日資料:高頻更新、優先級 0.6
    foreach ($yesterdayArr as $k => $v) {
        $data_array[$k]['loc'] = $baseUrl . $v['id'];
        $data_array[$k]['lastmod'] = $today;
        $data_array[$k]['changefreq'] = 'daily';
        $data_array[$k]['priority'] = '0.6';
        $data_array[$k]['data'] = '';
    }

    // 組裝 XML
    $content = '' . PHP_EOL;
    $content .= 'https://www.example.com' . $today . 'always0.9' . PHP_EOL;

    foreach ($data_array as $data) {
        $content .= create_item($data);
    }
    $content .= '';

    // 寫入檔案
    $fp = fopen('sitemap.xml', 'w+');
    fwrite($fp, $content);
    fclose($fp);
}

function create_item($data) {
    $item = "\n";
    $item .= "{$data['loc']}\n";
    $item .= "{$data['lastmod']}\n";
    $item .= "{$data['changefreq']}\n";
    $item .= "{$data['priority']}\n";
    $item .= "{$data['data']}\n";
    $item .= "\n";
    return $item;
}

部署建議

  1. 建立定時任務 (Crontab) 每日凌晨執行:0 2 * * * /usr/bin/php /path/to/sitemap.php
  2. 在百度站長平台提交 https://www.example.com/sitemap.xml
  3. 配合 robots.txt 聲明:Sitemap: https://www.example.com/sitemap.xml

擴充方向

  • 支援圖片、影片、新聞等專用 Sitemap 擴充標籤
  • 大型網站採用 Sitemap Index 分割多個檔案
  • 整合推送 API 即時通知搜尋引擎
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved