feat: sync latest GPT SEO routing and docs
This commit is contained in:
@@ -163,3 +163,344 @@
|
||||
3. 排障先看响应头,不要先怀疑代码
|
||||
4. `sogou` 恢复已拿到真实深页 `200` 样本
|
||||
5. 日志摘要读取已经换字段,不能再只看 `by_bot`
|
||||
|
||||
## 8. 详情页 slug-only 404 修复
|
||||
|
||||
`2026-04-17` 已补一轮详情页历史坏链接兜底,重点针对:
|
||||
|
||||
1. `/detail/pinyin-xxx`
|
||||
2. `/detail/xxx`
|
||||
3. 没有 `id`、只有 slug 的旧外链或旧 sitemap 残留
|
||||
|
||||
当前修复口径:
|
||||
|
||||
1. 路由层补放行,不再让这类 URL 直接死在路由 404
|
||||
2. 服务层会先做 slug 归一化:
|
||||
- 例如把 `pinyin-se-ji-shi-kong-yuan-sheng-ban` 继续尝试成 `se-ji-shi-kong-yuan-sheng-ban`
|
||||
3. 如果库里仍查不到对应 slug:
|
||||
- 不直接 404
|
||||
- 按域名做稳定随机绑定,后续同 slug 重复访问会尽量落到同一个视频
|
||||
|
||||
这条规则的目标不是“技术上兼容一下”,而是:
|
||||
|
||||
1. 先把历史坏入口从 404 池里移出来
|
||||
2. 降低蜘蛛撞到硬 404 的概率
|
||||
3. 给后续 7 日收录和首页词冲量留入口
|
||||
## 2026-04-17 线上补修:`liangzuan.net` 域名恢复、无 id 详情兜底、HEAD 兼容修复
|
||||
|
||||
### 现象
|
||||
|
||||
- `liangzuan.net` 整站一度出现首页、分类、详情、播放、搜索全部 404。
|
||||
- 用户重点反馈这类 URL 不允许再 404:
|
||||
- `https://www.liangzuan.net/detail/pinyin-se-ji-shi-kong-yuan-sheng-ban`
|
||||
- 同时线上探测发现一个隐蔽问题:
|
||||
- 浏览器 `GET` 可以打开的深层详情页,`HEAD` 请求仍然返回 404。
|
||||
- 这会导致监控、探测器、部分抓取链路把页面误判为失效。
|
||||
|
||||
### 根因
|
||||
|
||||
#### 1. 站点域名配置丢失
|
||||
|
||||
- 数据库 `domain` 表中,`liangzuan.net` 记录已经消失。
|
||||
- 这不是模板渲染问题,而是域名上下文直接丢了,导致整站路由命中后仍无法正确解析站点配置。
|
||||
|
||||
#### 2. 站点上下文仍走旧域名解析方式
|
||||
|
||||
- `SiteContext` 里部分逻辑还在用旧的:
|
||||
- `rootDomain()`
|
||||
- `DomainModel::getDomainOnCacheByDomain(...)`
|
||||
- 对 `www`、裸域、运行时 host 的兼容不够稳。
|
||||
|
||||
#### 3. GPT 模板路由只注册了 `GET`
|
||||
|
||||
- 详情页、播放页、历史兼容深链都能被浏览器正常访问。
|
||||
- 但 `HEAD` 请求没有命中路由,所以会直接落到 404。
|
||||
|
||||
### 已完成修复
|
||||
|
||||
#### 1. 恢复 `liangzuan.net` 域名记录
|
||||
|
||||
- 基于历史 bootstrap 包重新注册域名。
|
||||
- 重新绑定模板 `videoGpt1`。
|
||||
- 重新应用该域名的 SEO bootstrap 配置。
|
||||
|
||||
结果:
|
||||
|
||||
- 站点首页重新恢复 `200`。
|
||||
- 域名上下文重新可用。
|
||||
|
||||
#### 2. 修复 `SiteContext` 域名解析
|
||||
|
||||
文件:
|
||||
|
||||
- `/www/wwwroot/diff-maccms/SEONexus/code/app/services/SiteContext.php`
|
||||
|
||||
调整:
|
||||
|
||||
- `getViewConfig()` 和 `getTemplate()` 改为优先使用 `DomainModel::resolveDomainContextByHost(...)`
|
||||
- 对当前请求 host 做运行时解析
|
||||
- 旧缓存解析方式保留为兜底
|
||||
|
||||
效果:
|
||||
|
||||
- 裸域、`www`、运行时 host 命中更稳
|
||||
- 不再因为旧解析链导致模板/站点配置取错
|
||||
|
||||
#### 3. 修复“无 id 的详情页”兜底策略
|
||||
|
||||
文件:
|
||||
|
||||
- `/www/wwwroot/diff-maccms/SEONexus/code/app/services/VideoService.php`
|
||||
- `/www/wwwroot/diff-maccms/SEONexus/code/app/home/config/router.php`
|
||||
|
||||
调整:
|
||||
|
||||
- 详情路由支持仅 slug 访问
|
||||
- 支持 `pinyin-` 前缀 slug 归一化
|
||||
- 当 URL 不带 id、数据库没有直接匹配记录时,进入稳定兜底绑定
|
||||
- 避免再因 `requestedVId = 0` 写入错误绑定
|
||||
|
||||
效果:
|
||||
|
||||
- `detail/pinyin-...` 这类旧深链不再直接 404
|
||||
- 即使缺少 id,也会落到可展示的详情内容
|
||||
|
||||
#### 4. 修复 GPT 模板深链 `HEAD` 返回 404
|
||||
|
||||
文件:
|
||||
|
||||
- `/www/wwwroot/diff-maccms/SEONexus/code/app/home/config/router.php`
|
||||
|
||||
调整:
|
||||
|
||||
- 在 `videoGpt1` 分支新增统一注册器:
|
||||
- `Route::rule(..., 'GET|HEAD')`
|
||||
- 公共路由与冻结 family 路由统一支持 `GET` 和 `HEAD`
|
||||
- 历史兼容深链注册器也一起继承该行为
|
||||
|
||||
效果:
|
||||
|
||||
- 之前 `GET=200 / HEAD=404` 的详情深链,现在两者都为 `200`
|
||||
|
||||
### 线上复测结果
|
||||
|
||||
#### 1. 无 id 详情页
|
||||
|
||||
- `GET https://www.liangzuan.net/detail/pinyin-se-ji-shi-kong-yuan-sheng-ban`
|
||||
- 已返回 `200`
|
||||
|
||||
#### 2. 常规详情页
|
||||
|
||||
- `GET https://www.liangzuan.net/film/sheng-dan-bu-du-xing-meng-fei-si-lian-qu/154124`
|
||||
- 已返回 `200`
|
||||
|
||||
#### 3. 深链 `HEAD` 探测
|
||||
|
||||
- `HEAD https://www.liangzuan.net/detail/pinyin-se-ji-shi-kong-yuan-sheng-ban`
|
||||
- 已返回 `200`
|
||||
|
||||
- `HEAD https://www.liangzuan.net/film/sheng-dan-bu-du-xing-meng-fei-si-lian-qu/154124`
|
||||
- 已返回 `200`
|
||||
|
||||
### 对 7 日收录目标的直接价值
|
||||
|
||||
- 站点不再因为域名配置丢失而整站失活
|
||||
- 旧深链、无 id 深链、历史兼容详情页不再轻易 404
|
||||
- 抓取探针和监控不会再把可访问详情页误判为失效页
|
||||
- 这一步属于收录链路里的基础设施修复,已经把“入口级拦路虎”清掉了
|
||||
|
||||
### 下一阶段建议主线
|
||||
|
||||
1. 批量扫描 GPT 模板所有详情/播放/分类深链,清理剩余 404 模式。
|
||||
2. 针对 `/detail/pinyin-*`、`/film/*`、`/play/*` 输出结构化 URL 巡检报表。
|
||||
3. 补做站群级 sitemap、robots、内链入口一致性检查,优先服务 7 日收录目标。
|
||||
|
||||
## 2026-04-17 站群收录入口补修:Sitemap 统一恢复
|
||||
|
||||
### 扫描发现
|
||||
|
||||
- GPT 站群首页和 `robots.txt` 普遍可访问。
|
||||
- 但多站点 `sitemap.xml`、`sitemap_index.xml`、`sitemap-main.xml`、`sitemap-videos-1.xml` 统一返回 404。
|
||||
- 模板页脚和 `robots.txt` 实际都在输出:
|
||||
- `/sitemap_index.xml`
|
||||
- 这意味着蜘蛛会被主动引导到 404 的 XML 入口,直接拖累 7 日收录目标。
|
||||
|
||||
### 深层根因
|
||||
|
||||
#### 1. 标准 sitemap 入口缺少显式兼容
|
||||
|
||||
文件:
|
||||
|
||||
- `/www/wwwroot/diff-maccms/SEONexus/code/app/home/config/router.php`
|
||||
|
||||
处理:
|
||||
|
||||
- 补了以下标准入口兼容:
|
||||
- `/sitemap.xml`
|
||||
- `/sitemap_index.xml`
|
||||
- `/sitemap-main.xml`
|
||||
- `/sitemap-videos-:page.xml`
|
||||
|
||||
#### 2. 生成目录缺失导致 sitemap 任务直接失败
|
||||
|
||||
文件:
|
||||
|
||||
- `/www/wwwroot/diff-maccms/SEONexus/code/app/task/logic/VideoSiteMapLogic.php`
|
||||
- `/www/wwwroot/diff-maccms/SEONexus/code/app/task/logic/SiteMapLogic.php`
|
||||
|
||||
问题:
|
||||
|
||||
- `storage/SiteMap/` 目录当时不存在
|
||||
- 逻辑里仅 `mkdir($strDomainDir)`,不会递归创建父目录
|
||||
- 所以首次生成会直接报错,整个 XML 文件链路断掉
|
||||
|
||||
修复:
|
||||
|
||||
- 改为 `mkdir($strDomainDir, 0777, true)`
|
||||
|
||||
### 已完成验证
|
||||
|
||||
#### liangzuan.net
|
||||
|
||||
- `https://www.liangzuan.net/sitemap_index.xml` => 200
|
||||
- `https://www.liangzuan.net/sitemap-main.xml` => 200
|
||||
- `https://www.liangzuan.net/sitemap-videos-1.xml` => 200
|
||||
|
||||
#### chuanjiafeng.net
|
||||
|
||||
- `https://www.chuanjiafeng.net/sitemap_index.xml` => 200
|
||||
|
||||
### 当前执行状态
|
||||
|
||||
- 已启动 GPT 站群全量 `VideoSiteMap` 生成任务
|
||||
- 任务正在逐域名落盘:
|
||||
- `storage/SiteMap/<domain>/sitemap_index.xml`
|
||||
- `storage/SiteMap/<domain>/sitemap-main.xml`
|
||||
- `storage/SiteMap/<domain>/sitemap-videos-*.xml`
|
||||
- `storage/SiteMap/<domain>/video-list-*.json`
|
||||
|
||||
### 对 7 日收录目标的价值
|
||||
|
||||
- 站群不再把蜘蛛导向失效的 XML 入口
|
||||
- 每个域名开始具备可提交、可抓取、可扩展的视频 XML 分页
|
||||
- 这一步是“收录入口层”的关键修复,优先级非常高
|
||||
|
||||
### 二次修正:sitemap 详情 URL 空 slug 问题
|
||||
|
||||
在恢复 XML 后继续抽检时,又发现一类会伤收录质量的问题:
|
||||
|
||||
- 部分 `sitemap-videos-1.xml` 中详情链接出现空 slug
|
||||
- 例如:
|
||||
- `/film//210`
|
||||
- `/detail/-210`
|
||||
|
||||
根因:
|
||||
|
||||
- `VideoSiteMapLogic` 直接用 `v_name_en` 生成详情 URL
|
||||
- 但部分视频数据的 `v_name_en` 为空
|
||||
|
||||
修复:
|
||||
|
||||
- 在 `VideoSiteMapLogic` 内新增 `normalizeVideoSlug(...)`
|
||||
- 优先使用 `v_name_en`
|
||||
- 若为空,则回退到 `v_name`
|
||||
- 再做稳定 slug 归一化,保证至少输出可抓取的详情路径
|
||||
|
||||
修复后抽样结果:
|
||||
|
||||
- `https://www.liangzuan.net/film/wei-xian-de-fei-pang/210` => GET 200 / HEAD 200
|
||||
- `https://www.cnzhenbang.com/detail/wei-xian-de-fei-pang-210` => GET 200 / HEAD 200
|
||||
- `https://www.liangzuan.net/film/mo-li-mei/213` => GET 200 / HEAD 200
|
||||
- `https://www.cnzhenbang.com/detail/mo-li-mei-213` => GET 200 / HEAD 200
|
||||
|
||||
### 轨迹探针验收:5 个 GPT 站首页→搜索→详情→播放全通过
|
||||
|
||||
已使用自动样本发现 + 轨迹探针,对以下 5 个站做真实链路验收:
|
||||
|
||||
- `liangzuan.net`
|
||||
- `cnzhenbang.com`
|
||||
- `codohealth.com`
|
||||
- `jingxifa.com`
|
||||
- `gz-yxsw.com`
|
||||
|
||||
结果:
|
||||
|
||||
- 首页:全部 `200`
|
||||
- 搜索:全部 `200`
|
||||
- 详情:全部 `200`
|
||||
- 播放:全部 `200`
|
||||
- `all_passed = 1`
|
||||
|
||||
这说明当前 GPT 站群至少在抽样层面,已经不是“只有 sitemap 文件可用”,而是“收录入口 -> 搜索承接 -> 详情页 -> 播放页”这一条真实访问链路可用。
|
||||
|
||||
### 扩样验收:15 个 GPT 站真实链路全通过
|
||||
|
||||
在 5 个样板站通过后,继续扩样到 15 个 GPT 域名:
|
||||
|
||||
- `liangzuan.net`
|
||||
- `cnzhenbang.com`
|
||||
- `codohealth.com`
|
||||
- `jingxifa.com`
|
||||
- `gz-yxsw.com`
|
||||
- `glae.cc`
|
||||
- `gxhongzhuang.com`
|
||||
- `jpjdxs.com`
|
||||
- `jxxgygy.com`
|
||||
- `lcdchq.com`
|
||||
- `leici1940.com`
|
||||
- `lgyz.net`
|
||||
- `oronorent.com`
|
||||
- `pcslcl.com`
|
||||
- `sdxtwnc.com`
|
||||
|
||||
结果:
|
||||
|
||||
- 自动样本发现全部 `sample_status=passed`
|
||||
- 15 站首页全部 `200`
|
||||
- 15 站搜索页全部 `200`
|
||||
- 15 站详情页全部 `200`
|
||||
- 15 站播放页全部 `200`
|
||||
- 15 站 `all_passed=1`
|
||||
|
||||
说明:
|
||||
|
||||
- 当前 GPT 站群的主链路并不是零星恢复,而是已经具备批量稳定性
|
||||
- URL family 虽然各不相同,但都已经通过真实轨迹验收
|
||||
|
||||
### 搜索页 H1 二次收口
|
||||
|
||||
在搜索链路复查时,又发现一类“可访问但不够强 SEO”的问题:
|
||||
|
||||
- 部分搜索页虽然已返回 `200`
|
||||
- 但 `h1` 只输出裸关键词,或输出“相关内容 / 查询词 / 结果页”这类弱意图标题
|
||||
- 这会削弱搜索页对关键词与搜索意图的直接承接,不利于收录页稳定识别
|
||||
|
||||
本轮已统一修正 `videoGpt1` 搜索头模板:
|
||||
|
||||
- `app/home/view/videoGpt1/module/search/search_header_simple.html`
|
||||
- `app/home/view/videoGpt1/module/search/search_header_seo.html`
|
||||
- `app/home/view/videoGpt1/module/search/search_header_rich.html`
|
||||
- `app/home/view/videoGpt1/module/search/search_header_centered.html`
|
||||
|
||||
修正原则:
|
||||
|
||||
- 搜索页 `h1` 不再只显示裸关键词
|
||||
- 搜索页 `h1` 不再只显示“搜索结果 / 查询词 / 站内搜索 / 相关内容”这类空壳文案
|
||||
- 统一改为“关键词 + 搜索结果 / 搜索意图词”的可索引表达
|
||||
|
||||
线上 `?__nocache=1` 抽样结果:
|
||||
|
||||
- `https://www.liangzuan.net/get/index?keyword=liangzuan.net&__nocache=1`
|
||||
- `h1 => “liangzuan.net” 搜索结果`
|
||||
- `https://www.cnzhenbang.com/query?keyword=菜鸟臻榜&__nocache=1`
|
||||
- `h1 => 菜鸟臻榜 搜索结果`
|
||||
- `https://www.jingxifa.com/get-index?keyword=京淅发影院&__nocache=1`
|
||||
- `h1 => 京淅发影院 搜索结果`
|
||||
|
||||
附带确认:
|
||||
|
||||
- 各域名搜索入口并不统一,不能用单一 `/search?keyword=` 判断线上是否异常
|
||||
- 当前已确认示例:
|
||||
- `liangzuan.net => /get/index?keyword=...`
|
||||
- `cnzhenbang.com => /query?keyword=...`
|
||||
- `jingxifa.com => /get-index?keyword=...`
|
||||
|
||||
Reference in New Issue
Block a user