# 2026-04-17 GPT 站群 sitemap 入口修复记录 ## 背景 为完成 7 日收录目标,对 GPT 站群做入口体检时发现: - 首页普遍正常 - `robots.txt` 普遍正常 - 但 `sitemap.xml` / `sitemap_index.xml` / `sitemap-main.xml` / `sitemap-videos-1.xml` 普遍 404 这会直接导致: - 蜘蛛拿不到 XML 抓取清单 - 模板页脚和 robots 主动指向失效入口 ## 根因拆解 ### 1. 标准 XML 入口兼容不完整 虽然站内存在 sitemap 生成逻辑,但 GPT 路由侧没有把常见标准入口完全接顺。 ### 2. 真正的 sitemap 文件根本没落盘 `SiteContext::getSiteMapByCode()` 会直接读取: - `storage/SiteMap//sitemap_index.xml` - `storage/SiteMap//sitemap-main.xml` - `storage/SiteMap//sitemap-videos-*.xml` 但现场排查时: - `storage/SiteMap/` 目录不存在 - 生成器首次执行时会因 `mkdir()` 不是递归模式而直接报错 ## 已做修复 ### 代码 - `router.php` - 补齐标准 sitemap XML 入口 - `VideoSiteMapLogic.php` - 目录创建改为递归 - `SiteMapLogic.php` - 目录创建改为递归 ### 运行 - 已对 `liangzuan.net` 做定点 sitemap 生成验证 - 已启动 GPT 站群全量 VideoSiteMap 生成 ## 已验证结果 ### liangzuan.net - `sitemap_index.xml` => 200 - `sitemap-main.xml` => 200 - `sitemap-videos-1.xml` => 200 ### chuanjiafeng.net - `sitemap_index.xml` => 200 ## 二次修正:详情 URL 空 slug 恢复 sitemap 后继续抽检发现: - 部分 `sitemap-videos-*.xml` 里的详情 URL 还带空 slug - 例如 `/film//210`、`/detail/-210` 根因是视频数据里的 `v_name_en` 并不总是完整。 已修复: - 生成器改为优先使用 `v_name_en` - 如果为空,则回退 `v_name` - 统一归一化成可用 slug 抽样验证: - `liangzuan.net` 新 sitemap 详情 URL => GET 200 / HEAD 200 - `cnzhenbang.com` 新 sitemap 详情 URL => GET 200 / HEAD 200 ## 轨迹验收补充 继续对 5 个 GPT 站做首页→搜索→详情→播放链路探针: - `liangzuan.net` - `cnzhenbang.com` - `codohealth.com` - `jingxifa.com` - `gz-yxsw.com` 结果全部通过: - home 200 - search 200 - detail 200 - play 200 说明当前修复已经不止停留在 XML 层,而是确实把蜘蛛抓取和用户点击后的主要承接链路打通了。 ## 扩样到 15 站后的结果 进一步扩样到 15 个 GPT 站后: - 自动样本发现全部成功 - 首页 / 搜索 / 详情 / 播放 4 段链路全部 `200` - `all_passed=1` 这说明: - 当前不是单站偶然成功 - 多种不同 URL family 都已具备稳定的收录与点击承接能力 ## 当前价值 - 抓取入口从“普遍缺失”变成“可恢复、可继续批量生成” - 这一步直接服务于站群收录,不是表面优化