# 1275-SEONexus 主 Codex 可执行检查清单 - 2026-04-17 ## 目的 这份文档用于把 `1271` 到 `1274` 的分析,压缩成主 Codex 可以直接开干的检查清单。 目标不是重复分析结论,而是明确: 1. 先看哪几个文件 2. 每个文件要判断什么 3. 哪些问题优先级最高 ## 当前建议的排查顺序 ### 1. 先查深页兼容入口是否仍然过宽 优先级:`P0` 文件: - [router.php](/www/wwwroot/VideoSource2/code/app/home/config/router.php:209) 重点看: - `legacyCompatRoutes` 里注册了多少历史 `detail/play` 入口 - 哪些入口现在仍然在日志里高频出现 - 哪些入口只是历史遗留,但已经几乎没有真实命中 当前直接对应的高频路径: - `/voddetail/...` - `/vodplay/...` - `/video-info/...` - `/video-play/...` - `/video-show/...` - `/vodbf/...` 要回答的问题: - 这些兼容入口是否都还必须保留 - 是否存在“先接住再跳一次”的非必要链路 - 是否可以把部分兼容入口进一步统一到更少的规范路径 判断标准: - 如果某类旧入口仍然是百度高频命中来源,就不能贸然删 - 但如果它只是为了兼容而兼容,且跳转链过长,就应优先考虑压缩 ## 2. 再查 canonical 是否仍然和当前 family 脱节 优先级:`P0` 文件: - [SiteStyle.php](/www/wwwroot/VideoSource2/code/app/common/helper/SiteStyle.php:1803) - [SiteStyle.php](/www/wwwroot/VideoSource2/code/app/common/helper/SiteStyle.php:1831) - [SiteStyle.php](/www/wwwroot/VideoSource2/code/app/common/helper/SiteStyle.php:1868) 重点看: - `detectPageType()` 目前只识别 `voddetail/*` 和 `vodplay/*` - `guessDetailUrlFromVideo()` 仍硬编码回 `/voddetail/...` - `buildSeoMeta()` 的 canonical 生成没有明显读取当前站点 family 要回答的问题: - 当前模板 canonical 是否仍然默认指向 `voddetail` - 如果某站主输出不是 `voddetail`,canonical 会不会和真实输出路径冲突 - `play` 页 canonical 回 `detail` 时,是否一定回到了正确 family 下的 detail URL 判断标准: - 如果 canonical 指向的不是当前规范输出 URL,这就是高优先级修复点 - 这条线和 `yagyjt.com`、`www.ningxiaowei.com` 的深页 `301` 很可能直接相关 ## 3. 再查 sitemap 是否持续硬编码 `https://www.` 优先级:`P0` 文件: - [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:196) - [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) - [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:157) - [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:177) - [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:193) 重点看: - 视频 sitemap 虽然已经开始读 `url_family['detail']['pattern']` - 但最终 host 仍然是 `https://www.` + domain - 小说 sitemap / 分类 / 章节相关输出同样大量直接拼 `https://www.` 要回答的问题: - 当前真实规范 host 到底是不是 `www` - 如果不是,sitemap 是否正在持续制造 `/|301` 和 host 规范化跳转 - sitemap 与 canonical、站内链接是否在同一 host 口径下 判断标准: - 只要 sitemap 输出 host 和真实规范 host 不一致,这就是首页与深页 `301` 的高风险来源 ## 4. 评估 fallback 机制是在“止血”还是在“制造语义偏差” 优先级:`P1` 文件: - [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:821) - [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:905) - [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:1021) 重点看: - `getVideoByVId()` 查不到时会进入 `resolveFallbackVideoByRequest()` - fallback 会写入 host 维度的本地绑定文件 - 可能把旧 `v_id` 回落到随机或排序兜底视频 要回答的问题: - 这条链当前到底拯救了多少原本会 404 的深链 - 回落后的页面内容是否和原始 URL 语义足够接近 - 是否需要限制 fallback 的适用范围,例如只对某些入口生效 判断标准: - 如果 fallback 只是减少硬 404,它有价值 - 但如果它让错误 deep link 长期稳定落到无关视频,这会引入新的 SEO 误导风险 ## 5. `444` 不优先在 PHP 里深挖,先确认前置层 优先级:`P1` 文件: - [SiteContext.php](/www/wwwroot/VideoSource2/code/app/services/SiteContext.php:560) 当前已知判断: - 应用层主动拦截主要抛的是 `404` - `isSpider()` 已对白名单蜘蛛放行 - 当前仓库里没有明显应用层 `444` 返回逻辑 要回答的问题: - `444` 是否来自 nginx / waf / 路径探测拦截 - 当前 `444` 是否已经波及: - `/` - `robots.txt` - `sitemap*.xml` - `detail` - `play` 判断标准: - 如果 `444` 只集中在 `.rar/.zip/.txt/zb_system` 这类路径,先视为安全噪音 - 如果开始进入首页、sitemap、深页主路径,再提升为 `P0` ## 当前最值得优先验证的 5 个判断 ### 1. `yagyjt.com` 的深页 `301` 是否主要来自 canonical / family 不一致 因为: - 它已经是明确深抓正样本 - 但 `detail|301` / `play|301` 仍接近 `200` ### 2. `www.ningxiaowei.com` 的 `video-info / video-play` 是否只是兼容入口过多 因为: - 这批路径仍然高频出现 - 很适合作为“内容层兼容是否还能继续收口”的观察站 ### 3. sitemap 输出 host 是否和真实规范 host 一致 因为: - 这条线会同时影响首页 `/|301` - 也会影响深页入口持续规范化跳转 ### 4. fallback 绑定文件是否正在稳定扩大“错误 deep link -> 可访问页面”的覆盖 因为: - 这可能解释 `404` 的大幅下降 - 同时也可能埋下语义偏差风险 ### 5. `444` 是否已经误伤真实搜索蜘蛛主路径 因为: - 目前看更像前置层安全噪音 - 但这个结论需要持续观察,不应直接定死 ## 建议的执行节奏 ### 第一轮 - 只读检查 `router.php` - 只读检查 `SiteStyle.php` - 只读检查 `VideoSiteMapLogic.php` / `SiteMapLogic.php` 目标: - 先确认深页主输出、兼容入口、canonical、sitemap host 是否在同一规范口径 ### 第二轮 - 再看 `VideoService` fallback 目标: - 判断 `404` 的下降里有多少是“真实修复” - 有多少是“应用层兜底” ### 第三轮 - 再去联动前置层查 `444` 目标: - 确认 `444` 是安全噪音,还是已经开始误伤 SEO 主路径 ## 给主 Codex 的一句话 > 如果只能先看 3 个地方,就先看 `router.php` 的历史深页兼容、`SiteStyle.php` 的 canonical 构建、以及 `VideoSiteMapLogic/SiteMapLogic` 的 `https://www.` host 拼接;这三条线最有可能直接对应当前仍未收口的深页 `301` 和首页 `/|301`。