Files
SEONexus/docs/1269-SEONexus-老模板第一阶段回灌执行文档.md

563 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1269-SEONexus 老模板第一阶段回灌执行文档
## 关联文档
- 协作与交接总规则:
[1270-SEONexus-Codex多版本协作交接总文档](/www/wwwroot/diff-maccms/docs/1270-SEONexus-Codex多版本协作交接总文档.md)
## 目标
这份文档只覆盖老模板的第一阶段回灌,原则是:
- 不改老模板大骨架
- 不依赖后台逐站编辑
- 先统一抓取入口、观测链、规范输出
- 先看蜘蛛访问和抓取变化
适用前提:
- 老模板共 5 套
- 域名会随机绑定其中一套模板
- 当前不准备把 `videoGpt1` 的整套结构层直接迁过去
---
## 为什么第一阶段要“直接改代码”
当前站点运行时链路是:
1. `DomainModel.t_id`
决定域名使用哪套视图模板
2. `SiteContext`
根据 `t_id` 读取模板路径
3. 模板本身再结合站点自己的 `t_cfg / d_seo_cfg` 输出页面
这意味着:
- 同一套老模板代码,被多个域名共用
- 第一阶段如果只是统一抓取入口、sitemap、canonical、观测能力
- 最稳的方式就是直接改这套老模板代码本身
不建议第一阶段依赖后台逐站编辑,因为后台编辑会触碰:
- `t_id`
- `t_cfg`
- `d_seo_cfg`
这些字段都可能改变老模板站点当前行为。
---
## 第一阶段要做什么
只做以下 4 层:
1. 抓取入口层
2. 输出规范层
3. 观测层
4. 静态资源发布层
明确先不做:
- 首页结构重排
- 列表卡片重构
- 评论区整体换骨架
- 深页整体布局替换
- 逐站后台批量套 SEO 策略包
---
## 第一步:选 1 套老模板做试点
不要 5 套一起动。
优先选择这类模板:
- 结构相对规整
- 已有基础抓取,但还没形成明显深抓
- 线上有一定流量,但不是最核心起量模板
- `robots / sitemap / canonical / footer` 这些基础层容易统一
暂时不要选:
- 起量最高的模板
- 历史补丁最多的模板
- 路径规则最杂的模板
---
## 第二步:先统一抓取入口层
### 2.1 统一 `robots.txt`
要求:
- 老模板必须稳定输出 `robots.txt`
- `robots.txt` 里必须声明百度 sitemap
- 百度不能被引到无效入口
建议统一成:
- `Sitemap: https://当前域名/rss/baidu.xml`
检查项:
- `robots.txt` 是否返回 `200`
- 内容里是否已有 `Sitemap:` 声明
- 是否仍然指向旧的死入口
### 2.2 统一 `rss/baidu.xml`
要求:
- 老模板必须稳定输出百度可用的 XML
- 优先输出详情页入口
- 链接协议统一 `https://`
检查项:
- `rss/baidu.xml` 是否返回 `200`
- 是否有真实 `<item><link>...` 内容
- 链接是否已经是最终规范地址
### 2.3 给 `sitemap_index.xml` 做兜底
老模板如果历史上已有:
- `/sitemap_index.xml`
不要直接让它继续 `404`
建议:
- 如果旧入口仍有历史外链或蜘蛛命中
- 让它兜底回落到当前实际可用的 sitemap 输出
目的:
- 减少历史路径继续浪费抓取机会
---
## 第三步:统一输出规范层
### 3.1 统一 canonical
检查项:
- 首页 canonical
- 分类页 canonical
- 详情页 canonical
- 播放页 canonical
目标:
- 都指向最终规范地址
- 尽量统一 `https://`
### 3.2 统一主要链接协议
重点看:
- sitemap 输出
- 页面 head 里的 canonical / og:url
- 页面内主要入口链接
目标:
- 减少 `http -> https` 跳转消耗
- 让百度尽量直接拿到最终 URL
### 3.3 统一 footer / sitemap 暴露入口
检查项:
- footer 里是否有百度 sitemap 或 XML 地图入口
- 是否还暴露旧死入口
目标:
- 对外暴露路径统一
- 不再继续给蜘蛛错误入口
---
## 第四步:接入观测层
这一步和模板结构解耦,但必须同步做。
要求:
- 前端站群 Nginx 已输出蜘蛛日志
- `spiderlog-agent` 已在前端机定时推送
- 后台蜘蛛抓取概览能观察到该模板站点的百度行为
重点只看:
- `baiduspider`
- `home`
- `robots`
- `sitemap`
- `category`
- `detail`
- `play`
第一阶段的观测目标不是“马上深抓”,而是先确认:
1. 百度是否稳定进入首页
2. 是否开始命中 `robots`
3. 是否开始命中 `sitemap`
4. 是否开始出现 `category`
---
## 第五步:统一静态资源发布层
老模板第一阶段也建议统一吃当前这套:
- 自动重编
- `STATIC_FILE_VERSION` 强制刷新兜底
使用原则:
- 平时样式/脚本变更依赖自动重编
- 只有前端站群 / CDN / 浏览器仍命中旧静态文件时,再手动提高 `STATIC_FILE_VERSION`
---
## 阶段观察记录
### 2026-04-15 蜘蛛抓取观察结论
本轮重点观察的是:
- 深页兼容修复
- 前端站群统一动态回源
- `rss/baidu.xml` 深链恢复
观察口径:
- 只看 `baiduspider`
- 重点只看:
- `home`
- `category`
- `detail`
- `play`
#### 结论
当前可以确认:
1. 修复方向是对的
2. 已出现真实成功样本
3. 但还没有扩大成全站稳定放量
也就是:
- 不是“修了没效果”
- 而是“已经开始出现正反馈,但还在观察窗口”
#### 关键成功样本
### 2026-04-16 深页残余 500 修复结论
本轮新增确认的不是入口层问题,而是深页随机兜底分支里的实现问题。
#### 新发现的问题
以下残余深页在外网直测时会返回 `500`
- `jingxifa.com /video-detail/mo-ri-yi-jia-qin-172009`
- `sjzyunyang.com /video-detail/a-te-yu-pei-pei-185677`
错误页正文一致,核心报错为:
- `the match filter must be an expression in an object`
#### 根因
问题位于:
- [VideoService.php](/www/wwwroot/diff-maccms/SEONexus/code/app/services/VideoService.php)
当原始 `v_id` 查不到真实视频时,系统会进入随机兜底逻辑:
1. 先尝试读取随机绑定
2. 未命中时走 Mongo `aggregate + sample`
3. 旧实现会在无筛选条件时传入:
- `['$match' => []]`
4. 该写法会触发 Mongo 聚合报错,从而把原来的 `301 -> 404` 残余坏链升级成:
- `301 -> 500`
#### 已做修复
当前已调整为:
- 只有在存在筛选条件时才注入 `$match`
- 无筛选条件时直接走 `$sample`
也就是:
- 不再把空数组作为 `$match` 表达式传给 Mongo
#### 修复后回测结果
以下链接已重新回测为 `200`
- `https://jingxifa.com/video-detail/mo-ri-yi-jia-qin-172009`
- `https://sjzyunyang.com/video-detail/a-te-yu-pei-pei-185677`
- `https://www.lgyz.net/voddetail/mo-shi-chao-neng-li-zhe-dong-tai-man-hua-69869`
- `https://www.lgyz.net/vodplay/bi-she-tang-yuan-bi-yi-zheng-fu-jin-di-yi-ji-53027-youzhi-8`
- `https://www.lgyz.net/voddetail/69869`
- `https://www.lgyz.net/vodplay/53027-youzhi-8`
并且本地兜底探针日志已出现真实命中:
- `requested_v_id = 172009 -> candidate_v_id = 119106`
- `requested_v_id = 185677 -> candidate_v_id = 50302`
这说明:
- 随机兜底逻辑已经真正执行成功
- 不再停在 Mongo 异常层
- 深页残余坏链继续从 `500``200` 收敛
#### 当前阶段判断
截至 `2026-04-16` 当前窗口,可以把这轮优化效果概括为:
1. 深页兼容入口已生效
2. 多站点已出现 `301 -> 200`
3. 随机兜底分支残余 `500` 主因已修掉
4. `www.lgyz.net` 这类此前仍偏弱的站点,当前外网回测也已恢复到 `200`
后续继续重点观察:
- `baiduspider` 是否重新放量回打 `detail / play`
- 新命中的深页是否继续保持 `200`
- 是否还会出现新的局部 `500` 或数据异常型落点
#### 2026-04-16 14:00 最新补充观察
截至当前最新一轮:
- `2026-04-16 14:00:02`
还没有出现更晚的抓取汇总文件。
这一轮里,最重要的新样本是:
- `sjzyunyang.com /video-bofang/zhe-zhi-172193-default-1`
- `page_type = play`
- 状态链为:
- `301`
- `200 (MISS)`
- `200 (HIT)`
这说明:
1. 百度在今天这轮里仍然继续命中新 `play` 深页
2. 系统不仅能把它接住,而且第一次已经真实回源生成成功
3. 后续立刻进入缓存命中,说明链路已经不是偶发通过
当前可以把这条样本理解为:
- 不是旧坏链修复后的被动回测
- 而是今天新命中的播放页也已经开始成功落地
因此,截至当前窗口,对这轮优化更准确的判断是:
- 深页兼容层有效
- 随机兜底层有效
- 新命中的 `play` 深页也开始持续出现 `301 -> 200`
##### `jingxifa.com`
`2026-04-15 17:40:03` 这一轮,百度命中:
- `/video-bofang/hao-bu-liu-qing-185887-default-1`
结果出现:
- `301 -> 200`
这说明:
- `play` 深页历史兼容开始生效
- 不再只表现为 `301 -> 404`
##### `www.vikau.com`
`2026-04-15 18:40:02` 这一轮,百度命中:
- `/voddetail/ma-xiang-lou-zhi-zao-meng-xian-sheng-47065`
结果出现:
- `301 -> 200`
这说明:
- `detail` 深页兼容也开始出现正向落地样本
#### 仍需继续观察的站点
以下站点在本轮观察窗口内,仍主要看到失败样本:
1. `www.lgyz.net`
2. `sjzyunyang.com`
3. `www.codohealth.com`
4. `gxhongzhuang.com`
这些站点的问题表现仍以:
- `301 -> 404`
为主,但失败样本主要集中在修复后的早期窗口,后续还需继续观察是否会像 `jingxifa.com` 一样转为成功样本。
#### 当前阶段判断
当前应将本轮结果理解为:
- 深页兼容修复已开始起效
- 但百度还没有重新形成稳定深抓
因此下一阶段的重点不是立即继续大改,而是:
1. 继续观察百度是否重新命中更多 `detail/play`
2. 继续记录哪些站从 `301 -> 404` 转成 `301 -> 200`
3. 将还未转正的域名继续列为重点观察对象
#### 观察建议
下一轮继续观察时,优先盯:
1. `jingxifa.com`
2. `www.vikau.com`
3. `www.lgyz.net`
4. `sjzyunyang.com`
目的:
- 确认成功样本是否持续出现
- 确认失败样本是否继续减少
这样第一阶段如果需要修老模板样式,不会卡在缓存上。
---
## 第六步:明确哪些不要碰
第一阶段明确不碰这些:
### 6.1 不要用后台逐站编辑改模板绑定
避免碰:
- `t_id`
- `t_cfg`
原因:
- `t_id` 会直接决定该站用哪套视图模板
- `t_cfg` 会影响该站冻结模板配置和 URL 模板映射
### 6.2 不要先批量套 `d_seo_cfg`
原因:
- 第一阶段先做基础设施层
- 不要让老模板先承受太多 SEO 输出行为变化
### 6.3 不要先改结构层
包括:
- 首页模块结构
- 列表卡片结构
- 评论区整体结构
- 全站导航结构
---
## 第七步:验收标准
第一阶段不看“感觉”,只看这 4 组信号。
### 7.1 百度入口命中
后台重点看:
- `home`
- `robots`
- `sitemap`
### 7.2 百度入口状态码
希望看到:
- `200`
尽量减少:
- `301`
- `404`
- `444`
### 7.3 是否开始出现 `category`
这是第一阶段最关键的推进信号。
如果 `category` 开始出现,说明:
- 百度已经不只是停在首页和入口层
### 7.4 静态资源是否可控
验证:
- 改样式能自动重编生效
- 必要时提升 `STATIC_FILE_VERSION` 能强制刷新
---
## 第八步:建议观察周期
试点模板完成第一阶段后,建议观察:
- `3-5` 天抓取变化
- `7` 天收录信号变化
如果信号对,再复制到其余老模板。
如果这一步还没看到明显入口改善,不要急着推进第二阶段内容增强。
---
## 第一阶段完成后的下一步
只有在第一阶段稳定后,才建议进入第二阶段:
- 详情页事实池轻接入
- 描述增强
- 播放页导语增强
- FAQ / 评论导语轻增强
第二阶段仍然建议:
- 先 1 套模板试点
- 不 5 套一起上
---
## 一句话版本
老模板第一阶段不是“升级成 gpt 模板”,而是:
- 先统一抓取入口
- 先统一输出规范
- 先统一观测能力
- 先统一静态资源发布能力
先把底座拉齐,再看第二阶段内容增强。