Files
SEONexus/docs/2026-04-17-当前阶段总结.md
2026-04-18 01:31:44 +08:00

15 KiB
Raw Blame History

2026-04-17 当前阶段总结

这份文档用于把本轮关于前端 nginx、搜索页缓存、安全排障、国内蜘蛛恢复的关键结论压缩成一页。

适用场景:

  1. 你想快速回顾“现在到底定下了什么”
  2. 新的 Codex 会话需要 1 分钟接手
  3. 需要把这轮结论转发给同事或运维

一句话结论

当前这轮工作已经从“问题排查”进入“规则固化 + 证据补强”阶段:

  1. 前端 nginx 长期规则已经定型
  2. 搜索页双入口兼容已经确认必要
  3. ?__nocache=1 已作为标准排障入口固定下来
  4. sogou 恢复已拿到真实深页 200 样本,不再只是推测

1. 前端 nginx 当前正式规则

当前正式上线入口:

长期规则:

  1. 搜索页:
    • /get-index
    • /get/index
    • cache key 带 $args
  2. 详情页 / 播放页 / 分类页 / 榜单页:
    • cache key 不带 $args
  3. 所有动态页:
    • 支持 ?__nocache=1
  4. 排障优先看:
    • X-Cache-Status
    • X-Cache-Mode
    • X-Managed-Spider

2. 为什么搜索页必须双入口兼容

已经确认:

  1. www.jpjdxs.com
    • 搜索入口:/get-index
  2. www.jingxifa.com
    • 搜索入口:/get-index
  3. www.hyjssb.com
    • 搜索入口:/get/index

同时还通过规则探测确认:

  1. /get-index?wd=test
    • 会走 X-Cache-Mode: with-args
  2. /get/index?wd=test
    • 如果不单独兼容,仍可能落回 path-only

因此:

  1. 双兼容不是冗余项
  2. 是站群真实路由差异决定的必要项

3. 当前最实用的排障规则

以后再遇到“代码像没生效”“页面像串页”“蜘蛛像异常”时,统一按这个顺序:

  1. 先看 X-Cache-Status
  2. 再看 X-Cache-Mode
  3. 再看 X-Managed-Spider
  4. 若仍怀疑前端缓存顶旧 HTML
    • ?__nocache=1
  5. 如果 ?__nocache=1 正常,而普通访问异常,优先清前端缓存

4. 受管蜘蛛映射当前正确读法

当前需要特别注意:

  1. managed_spiders.map.conf.example
  2. 受管蜘蛛映射-最优方案.txt

更接近“样例”和“推荐结构”,不是线上实时快照。

所以以后判断某蜘蛛当前是否已纳入 managed spider不要只看样例文件。

正确优先级:

  1. 先看线上真实响应头 X-Managed-Spider
  2. 再看线上真实 managed_spiders.map.conf
  3. 最后才参考样例文件

5. 国内蜘蛛当前阶段判断

baiduspider

  1. 恢复结论仍成立
  2. 但单个时间窗样本有时很少
  3. 不要用某一个小窗口直接否定百度恢复

sogou

当前已不宜再简单说成“还是 403 为主”。

2026-04-17T17:30:02+08:00 这个窗口里:

  1. 总请求数:10
  2. 200: 9
  3. 404: 1

命中的 200 深页样本包括:

  1. www.jingxifa.com /video-detail/cheng-shi-jian-ke-190614
  2. www.vikau.com /vodplay/xiu-zhen-zhe-zhi-fu-qin-de-cai-fu-110943-maotai-36
  3. www.cnzhenbang.com /category/dong-man
  4. www.hyjssb.com /movie/.../154180

唯一 404 仍是 hyjssb 旧路径残留,不代表当前真实路由异常。

因此当前更准确的说法是:

  1. sogou 已经进入恢复初期
  2. 已拿到真实首页、分类、详情、播放 200 样本
  3. 历史旧 403 仍然会拖累整体统计观感

bytespider

  1. 已出现 200 样本
  2. 但当前主要还是 robots / 首页层
  3. 还没到像 sogou 那样有明显多站深页恢复

6. 最新日志读取口径

当前 domain-spider-crawl 的 summary 结构已经变更。

旧口径常用字段:

  1. by_bot

新口径应优先看:

  1. bot_buckets
  2. summary_status_buckets
  3. summary_records

所以如果后续看到:

  1. by_bot 为空
  2. latest 看起来像没国内蜘蛛

不要立刻下结论。

先确认:

  1. 是否是 summary 字段结构变了
  2. 是否需要结合最近几个 run 一起看

7. 当前阶段最稳的结论

如果只保留 5 句,当前最稳的是:

  1. 正式上线模板优先用 站点伪静态-最终发布版.txt
  2. 搜索页必须兼容 /get-index/get/index
  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 路由统一支持 GETHEAD
  • 历史兼容深链注册器也一起继承该行为

效果:

  • 之前 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.xmlsitemap_index.xmlsitemap-main.xmlsitemap-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=...