百度雖未開放標準 Sitemap 提交,但可透過站長平台「開放適配」推送更新資料。本文提供 ThinkPHP 實作的每日增量 Sitemap 生成器,自動抓取最新內容並輸出符合規範的 XML。
changefreq、prioritysitemap.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 . ' always 0.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;
}
0 2 * * * /usr/bin/php /path/to/sitemap.phphttps://www.example.com/sitemap.xmlrobots.txt 聲明:Sitemap: https://www.example.com/sitemap.xml