当前位置:首页 > PHP

php 实现sitemap

2026-01-29 11:45:56PHP

生成静态 Sitemap 文件

使用 PHP 动态生成 XML 格式的 Sitemap,适合内容较少的网站。

<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

// 示例 URL 数据(可替换为数据库查询)
$urls = [
    ['loc' => 'https://example.com/', 'lastmod' => '2023-10-01', 'priority' => '1.0'],
    ['loc' => 'https://example.com/about', 'lastmod' => '2023-09-15', 'priority' => '0.8']
];

foreach ($urls as $url) {
    echo '<url>';
    echo '<loc>' . htmlspecialchars($url['loc']) . '</loc>';
    echo '<lastmod>' . $url['lastmod'] . '</lastmod>';
    echo '<priority>' . $url['priority'] . '</priority>';
    echo '</url>';
}

echo '</urlset>';
?>

将代码保存为 sitemap.php,通过访问该文件直接输出 XML。

动态生成分页 Sitemap

适用于大型网站,将 Sitemap 分多文件存储,并通过索引文件管理。

php 实现sitemap

主索引文件(sitemap-index.php)

<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

// 假设有 3 个分页 Sitemap
for ($i = 1; $i <= 3; $i++) {
    echo '<sitemap>';
    echo '<loc>https://example.com/sitemap-' . $i . '.xml</loc>';
    echo '<lastmod>' . date('Y-m-d') . '</lastmod>';
    echo '</sitemap>';
}

echo '</sitemapindex>';
?>

分页 Sitemap 示例(sitemap-1.php)

php 实现sitemap

<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

// 从数据库或其他数据源获取分页数据
$urls = [
    ['loc' => 'https://example.com/page1', 'lastmod' => '2023-10-01'],
    ['loc' => 'https://example.com/page2', 'lastmod' => '2023-09-20']
];

foreach ($urls as $url) {
    echo '<url>';
    echo '<loc>' . htmlspecialchars($url['loc']) . '</loc>';
    echo '<lastmod>' . $url['lastmod'] . '</lastmod>';
    echo '</url>';
}

echo '</urlset>';
?>

自动更新 Sitemap

通过定时任务(如 Cron)或内容更新时触发,重新生成 Sitemap 文件。

<?php
function generateSitemap() {
    $xml = '<?xml version="1.0" encoding="UTF-8"?>';
    $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

    // 从数据库获取所有公开的 URL
    $urls = fetchUrlsFromDatabase(); // 自定义函数

    foreach ($urls as $url) {
        $xml .= '<url>';
        $xml .= '<loc>' . htmlspecialchars($url['loc']) . '</loc>';
        $xml .= '<lastmod>' . $url['lastmod'] . '</lastmod>';
        $xml .= '</url>';
    }

    $xml .= '</urlset>';

    // 保存为静态文件
    file_put_contents('sitemap.xml', $xml);
}

// 调用函数生成
generateSitemap();
?>

提交 Sitemap 到搜索引擎

生成后,将 Sitemap 提交到 Google Search Console 或 Bing Webmaster Tools。

  1. sitemap.xml 放置在网站根目录。
  2. 通过搜索引擎的提交工具手动提交,或在 robots.txt 中添加:
    Sitemap: https://example.com/sitemap.xml

注意事项

  • 文件命名:通常使用 sitemap.xml 或分页命名如 sitemap-1.xml
  • 压缩支持:可生成 sitemap.xml.gz 减少带宽消耗。
  • 频率限制:避免频繁更新,通常每日或每周一次即可。

标签: phpsitemap
分享给朋友:

相关文章

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现https

php实现https

PHP 实现 HTTPS 请求 在 PHP 中实现 HTTPS 请求,可以通过多种方式完成,包括使用内置函数、cURL 扩展或第三方库。以下是几种常见的方法: 使用 file_get_content…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…

php实现进度条

php实现进度条

PHP 实现进度条的方法 使用 HTML 和 CSS 结合 PHP 实现进度条 在 PHP 中,进度条通常通过 HTML 和 CSS 实现,PHP 负责计算进度并更新前端显示。 <div st…