sitemap.xml不能写在html文件里,必须是独立的utf-8纯xml文件,路径为/sitemap.xml,返回200状态码和application/xml mime类型;须为完整https绝对url,须符合iso 8601格式,单文件最多5万条url且不超过50mb。

sitemap.xml 不能写在 HTML 文件里
直接往 index.html 或任何 HTML 页面中插入 <urlset></urlset>、<loc></loc> 这类标签,浏览器会当成普通文本渲染,搜索引擎爬虫根本不会解析——它只认路径为 /sitemap.xml 的独立 HTTP 响应。常见错误包括:
• 把 XML 内容塞进 <textarea></textarea> 或注释里
• 用 JS 拼字符串再 innerHTML 到某个 <div>
<br>• 生成一个叫 <code>sitemap.html 的文件却以为它能当 XML 地图用
这些操作产生的都不是搜索引擎可识别的 sitemap。
手动写 sitemap.xml 的硬性格式要求
必须是纯 UTF-8 编码的 XML 文本文件,无 BOM 头,HTTP 响应头需含 Content-Type: application/xml,且返回状态码为 200。基础结构如下:
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://example.com/</loc><lastmod>2026-06-04</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url></urlset>
关键点:
• <loc></loc> 必须是完整、可访问的 HTTPS 绝对 URL,不能是 /about 或 ./blog
• <lastmod></lastmod> 格式严格为 ISO 8601(如 2026-06-04 或 2026-06-04T15:20:00+00:00),未来时间会被忽略
• 单文件最多 5 万个 <url></url>,未压缩体积不能超 50MB
• 不要手敲:哪怕只有 5 个页面,漏闭合标签、编码错误或时间格式偏差都会导致 Google Search Console 报错
PHP 网站动态生成 sitemap.xml 的实际做法
不推荐用 sitemap.php 实时输出 XML(每次请求都查库、拼串、设 header),而应走“定时生成静态文件”路线:
- 写一个
generate_sitemap.php脚本,从数据库或目录扫描有效 URL,用file_put_contents()输出到根目录的sitemap.xml - 通过 Linux
cron每日凌晨执行:php /path/to/generate_sitemap.php - 配合
.htaccess伪静态规则,确保访问/sitemap.xml直接返回该静态文件,而非 404 或跳转 - 务必检查生成后的文件:用浏览器打开
https://yoursite.com/sitemap.xml,源码必须是纯 XML,不能含或 PHP 错误提示
提交前必须验证的三件事
上传后立刻确认,否则 Search Console 显示“无效 sitemap”就白忙了:
- 能否直接 GET 访问
https://yoursite.com/sitemap.xml并返回 HTTP 200 状态码 - 响应头中是否含
Content-Type: application/xml(不是text/html) - 文件内容是否为合法 XML 结构、中文不乱码、所有
<url></url>都有闭合、<loc></loc>全部可 curl -I 验证返回 200
最容易被忽略的是 BOM 头和相对路径——哪怕只有一个字节的 BOM,Google 就会静默失败;任何一个 <loc></loc> 是 404,整个文件可能被降权处理。











