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

PHP SitemapGenerator 類快速生成網站地圖

     編輯:PHP 綜合知識

SitemapGenerator 類使用示例

這是一個輕量級的 PHP 類,用於生成符合 Sitemap 協議 的 XML 文件,並自動更新 robots.txt 和提交搜索引擎。

基本用法

<?php
require_once 'SitemapGenerator.php';

$sitemap = new SitemapGenerator("https://www.example.com");

// 添加 URL:地址、最後修改時間、更新頻率、優先級
$sitemap->addUrl("https://www.example.com/page1", date('c'), 'daily', '1.0');
$sitemap->addUrl("https://www.example.com/page2", date('c'), 'weekly', '0.8');
$sitemap->addUrl("https://www.example.com/page3", date('c'), 'monthly', '0.5');

// 生成並寫入文件
$sitemap->createSitemap();
$sitemap->writeSitemap(); // 生成 sitemap.xml

// 更新 robots.txt 引用 sitemap
$sitemap->updateRobots();

// 主動提交給搜索引擎(Google、Bing 等)
$sitemap->submitSitemap();
?>

方法說明

方法參數說明
__construct$baseUrl網站根 URL,必須包含協議(http/https)
addUrl$loc, $lastmod, $changefreq, $priority添加單個 URL,參數對應 sitemap 協議字段
createSitemap無生成內存中的 XML 結構
writeSitemap[$filename]寫入文件,默認 sitemap.xml
updateRobots無在 robots.txt 末尾添加 Sitemap: 指令
submitSitemap無向 Google、Bing 發送 ping 請求

進階用法:批量添加與分片

<?php
// 從數據庫批量獲取 URL
$urls = $db->query("SELECT url, updated_at FROM articles WHERE status=1");

$sitemap = new SitemapGenerator("https://www.example.com");
foreach ($urls as $row) {
    $sitemap->addUrl(
        $row['url'],
        date('c', strtotime($row['updated_at'])),
        'weekly',
        '0.6'
    );
}

// 大站點需分片:每個 sitemap 文件不超過 50,000 條 URL
// 可實現 SitemapIndexGenerator 管理多個分片文件
?>

注意事項

  • 單個 sitemap.xml 不超過 50,000 條 URL,文件大小不超過 50MB(未壓縮)。
  • lastmod 必須符合 W3C Datetime 格式(如 2024-01-15T10:30:00+08:00),date('c') 正好符合。
  • changefreq 可選值:always, hourly, daily, weekly, monthly, yearly, never。
  • priority 範圍 0.0~1.0,首頁通常設為 1.0。
  • 提交搜索引擎需服務器能訪問外網,且 sitemap.xml 可公開訪問。

配合定時任務(Cron)定期運行此腳本,能保持搜索引擎對網站內容的及時收錄。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved