# 1276-SEONexus 主 Codex 检查清单补充修正 - 2026-04-17 ## 目的 这份文档用于补充修正 `1272` 到 `1275` 之间一个很关键的判断差异: - `SiteStyle::buildSeoMeta()` 确实存在 canonical 兜底逻辑 - 但对当前重点观察的 `videoGpt1` 视频模板来说,它未必是前台实际 canonical 的主输出来源 这会直接影响主 Codex 的排查顺序。 ## 本轮补充结论 一句话总结: > 当前 `videoGpt1` 下,真正更值得优先核对的不是 `SiteStyle::buildSeoMeta()`,而是模板里实际写死的 canonical host 口径,以及 sitemap 里统一写成 `https://www.` 的 host 口径是否冲突。 ## 一、为什么这是一个重要修正 ### 1. `SiteStyle::buildSeoMeta()` 不是当前视频模板最直接的 canonical 输出源 虽然代码里有: - [SiteStyle.php](/www/wwwroot/VideoSource2/code/app/common/helper/SiteStyle.php:1831) 而且里面存在: - `play` 页 canonical 推断 - `guessDetailUrlFromVideo()` 硬编码 `/voddetail/...` 但这次继续对模板后发现,`videoGpt1` 的视频模板实际是自己输出 canonical。 ### 2. `videoGpt1` 详情页模板实际 canonical 文件: - [getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoInfo.html:39) 当前实际写法: ```html ``` 这说明: - 详情页 canonical 不是由 `SiteStyle::buildSeoMeta()` 直接输出 - 它走的是模板标签 `{site:vurl ...}`,也就是更贴近当前路由/URL 生成体系 ### 3. `videoGpt1` 播放页模板实际 canonical 文件: - [getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) 当前实际写法: ```html ``` 并且: - `$strPlayCanonicalUrl` 来自 `VideoService::getVideoPlayUrl()` - 不是回详情页 - 而是当前播放页自身 URL 这说明: - 当前 `videoGpt1` 播放页 canonical 逻辑,与 `SiteStyle::buildSeoMeta()` 里“play canonical -> detail”的兜底设想并不一致 ## 二、这会带来什么新的主线判断 ### 1. 当前更大的风险,不是 `voddetail` 硬编码本身 对 `videoGpt1` 视频页来说,更值得优先核对的是: - canonical host 到底是 `https://domain` 还是 - `https://www.domain` 因为当前模板里写的是: - `https://{$DomainModel->d_domain}` 而 sitemap 生成逻辑里大量写的是: - `https://www.{$DomainModel->d_domain}` 这两条线如果同时存在,就会直接制造: - 首页 `/|301` - 深页 host 规范化 `301` ### 2. 当前“模板 canonical”和“sitemap canonical host”口径明显可能不一致 模板侧: - 详情页 canonical:`https://{$DomainModel->d_domain}...` - 播放页 canonical:`https://{$DomainModel->d_domain}...` - 首页 canonical:`https://{$DomainModel->d_domain}/` 可以参考: - [index.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/index/index.html:99) - [getCategory.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategory.html:34) - [getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:15) sitemap 侧: - [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) - [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:158) 都在大量拼: - `https://www.{$DomainModel->d_domain}...` 这意味着: - 如果站点真实最终规范 host 不是 `www` - 那么 sitemap 就在持续喂给蜘蛛一批要再跳一次的 URL ## 三、对 `1275` 的执行顺序修正 ### 第一优先级仍然不变 还是先看: 1. 深页兼容入口 2. canonical 3. sitemap host ### 但 canonical 这条线的落点要修正 主 Codex 在 `videoGpt1` 下应该优先看: - 视频模板里真实输出的 canonical 而不是先把精力放在: - `SiteStyle::buildSeoMeta()` 的 `voddetail` 兜底 因为从当前代码看,后者更像兜底工具,不像视频模板主输出源。 ## 四、现在最可能优先改的 3 个点 ### 1. 统一 canonical 和 sitemap 的 host 口径 这是当前最像“能直接减少 `/|301` 与 host 301”的点。 ### 2. 核对播放页 canonical 是否应该保留在播放页自身 当前播放页模板 canonical 指向播放页自己,不是详情页。 这条线值得主 Codex 明确判断: - 当前策略是不是故意的 - 是否符合当前 SEO 设计目标 - 是否会放大 `play|301` 或索引策略混乱 ### 3. 继续压缩历史兼容入口 因为日志里仍然高频出现: - `video-info` - `video-play` - `video-show` - `vodbf` ## 五、给主 Codex 的一句话修正 > `videoGpt1` 当前最值得先查的 canonical 问题,不是 `SiteStyle` 里那段 `/voddetail` 兜底,而是模板实际输出的 `https://{$DomainModel->d_domain}` 和 sitemap 统一输出的 `https://www.{$DomainModel->d_domain}` 之间,是否正在持续制造 host 级 301。