sitemap 生成与提交实战:让搜索引擎快速收录新页面

6 ℃ 0 条
内容摘要页面迟迟不被收录,多半是爬虫发现路径有限。sitemap 是显式提交给搜索引擎的 URL 清单,能补上站内链接的盲区。本文讲清 XML 结构与体积限制、PHP 动态生成写法、robots.txt 声明、百度与谷歌提交入口,以及常见失效原因排查。
sitemap 生成与提交实战:让搜索引擎快速收录新页面

sitemap 生成与提交实战

页面迟迟不被收录,多因爬虫沿站内链接爬行,层级过深或缺少入口的页面被长期遗漏。sitemap 把希望收录的 URL 集中告知搜索引擎,下面给出可落地做法。

一、先弄清 sitemap 解决什么问题

1. 爬虫发现页面的路径有限

百度 Baiduspider、Googlebot 主要依赖站内链接爬行。孤立页面、深层分页、前端异步渲染的链接很难被稳定发现;站点越大抓取配额越分散,新页面排队越久。sitemap 补上不依赖站内链接的入口。

2. 真正有效的字段只有 lastmod

sitemap 协议支持 loc、lastmod、changefreq、priority 四个字段。Google 已明确忽略 changefreq 与 priority,百度只做部分参考。真正影响抓取的是 lastmod:真实修改时间能让爬虫判断哪些页面值得优先重抓,从而提升网站收录效率。

二、生成一份符合规范的 sitemap

1. XML 结构与体积限制

根节点是 urlset 并声明 sitemaps.org 命名空间;每个 URL 对应一个 url 节点,loc 必填且必须是含协议与域名的绝对地址。单文件上限 50000 条 URL、未压缩 50MB,编码 UTF-8。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.example.com/front/57.html</loc>
    <lastmod>2026-11-04</lastmod>
  </url>
</urlset>

2. 内容站点的动态生成写法

PHP 站点无需手工维护文件,遍历已发布文章表输出即可,注意只输出可访问页面并做 XML 转义。

$rows = $pdo->query('SELECT id, updatetime FROM article WHERE isshow = 1')->fetchAll();
foreach ($rows as $r) {
    printf("<url><loc>%s/%d.html</loc><lastmod>%s</lastmod></url>\n",
        'https://www.example.com', $r['id'], date('Y-m-d', $r['updatetime']));
}

文章数超过 50000 时按分片拆分,再建索引文件:根节点换成 sitemapindex,用 sitemap 子节点列出各分片地址,爬虫会逐片抓取。

三、提交与验证

1. robots.txt 声明与提交入口

在 robots.txt 末尾加一行 Sitemap: https://www.example.com/sitemap.xml 让爬虫定位文件,并确认反爬规则没屏蔽该路径。提交入口:百度搜索资源平台「普通收录」和 Google Search Console「站点地图」分别填入地址。

2. 验证节点与常见失效原因

自查很简单:浏览器访问 sitemap 地址,返回的必须是 XML 而非 HTML。常见失效原因:loc 写成相对地址无法解析;文件返回 404;URL 带参数造成重复收录;服务端把它交给前端路由返回 HTML 入口页;lastmod 写成未来时间被判不可信。

关键配置提示

  • 只提交返回 200 且可索引的页面,排除 404、跳转页与带 noindex 标记的页面。
  • 文章更新后同步刷新 lastmod,不要写死固定日期,否则爬虫会逐步降低重抓频率。
  • sitemap 是内链与 robots.txt 的补充而非替代,孤岛页面仍需加入站内导航。

发表评论 (已有0条评论)

快来评论,快来抢沙发吧~