fn_b/docs/maintenance/EDITORIAL_INDEXNOW.md

34 lines
5.3 KiB
Markdown
Raw Permalink 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.

# 编辑文章 IndexNow
用户2026-10-31要求接入教程发布后的自动推送。新增或实际内容改变的编辑文章在发布事务写入IndexNow待处理状态,缓存刷新完成后提交当前有效URL。目标为IndexNow官方API,复用本站既有key及根目录验证文件,不生成/轮换密钥,不改旧资源接收器。
- `config/editorial.php` 的 `indexnow_enabled`:默认仅production开启,可用`EDITORIAL_INDEXNOW_ENABLED=false`关闭。local不会发出通知,测试使用Http fake。
- `PublicationEffects`保存`effects.indexnow`,包括状态、次数、HTTP状态和下一次重试时间;不保存key、响应正文或异常消息。只有200/202记done;202表示收到并待验证key。提交被接收不等于搜索引擎已经抓取或收录,见[官方协议](https://www.indexnow.org/documentation)。
- `editorial:indexnow-retry`挂接原Laravel调度,每5分钟检查一次,单次最多10个到期回执,防重叠;退避从5分钟递增,最大24小时。定时任务运行在FNA业务服务器,以原nginx身份执行,白色机仅SSH跳板。
- 已done的通知不重复调用;同一发布UUID重放不重发文章。网络结果未知或提交后进程崩溃可能重复通知同一URL,按至少一次投递处理,不能承诺第三方只收到一次。每次重试都重新确认文章仍公开、栏目启用且可索引。
- 内容未变、已撤下、不再允许索引时跳过;旧版本中没有IndexNow状态的历史发布回执不自动补推。暂时禁用不会丢弃已pending状态。
- 仅推送同一站点的规范文章地址;app.url、editorial.base_url、app.site_code必须一致,不跟随重定向,不从文章输入指定外部推送目标。
## 2026-10-31已部署与验证
功能提交`574812438338755b160453c4a574557365903506`已Git推送并部署正式cfn,独立分支`codex/editorial-indexnow-publish-20261031`,基线`d981a2aa4fa21abe4512ddd287a2f51f87b11197`。同名旧候选分支另有包含sitemap改动的并行提交415b5f8,保留未覆盖;本任务只部署IndexNow范围,没有捆绑其他SEO工作。
专项4项测试/52断言通过:新增/更新通知、同UUID去重、无变化跳过、429退避后202成功、旧回执不补推、禁用环境/域名错配拒发、撤下后停止重试。本地相关业务回归合计36项/344断言通过;其中共享工作区的sitemap测试未作为本次部署范围。
正式站现有188篇文章的核心内容与日期、所有旧编辑发布回执保持;生成标签模板哈希和data.ms并行目录保留。新重试命令以nginx实际运行,空队列返回processed=0/pending=0,已登记每5分钟调度;未为演练制造失败队列,也未宣称已观察到一笔真实失败的自动恢复。公网编辑API仍关闭,首页HTTP200。
2026-10-31 14:20:55北京时间,通过本机SSH→白色机→业务服务器,由新组件对现有`/a/system-proxy-vs-tun.html`执行一次真实通知验收,HTTP200,密钥文件HTTP200且内容匹配;未改正文、未重新发布、未改旧回执、未批量补推。只证明通知被接收,不代表已收录。已完成服务器侧验收,未做线上页面验收。精确证据见[回执](EDITORIAL_INDEXNOW_2026-10-31.json)。
私有恢复点:VPS-003 `/root/backups/cfn-indexnow-20261031/`,包含Git bundle、原HEAD/工作区状态、标签模板、文章核心字段与旧回执快照、真实提交事件和部署记录。回滚可检出基线,保留已有effects状态和内容;单独停推可设`EDITORIAL_INDEXNOW_ENABLED=false`,不要删除pending回执。普通发布继续通过[白色机发布封装](EDITORIAL_RELEASE.md)。
## 两个教程栏目sitemap已部署(2026-10-31)
基于并行IndexNow正式文档提交`ace6d74a18988697340ebcd15e2b79a4dee0e697`,只发布本批7个栏目/测试/文档文件,功能提交`252e0c38cb85d0c1331063b1019a2bb13c27ac8a`已推送`codex/tutorial-sitemap-20261031`并检出正式cfn。保留57481243的通知实现,不重复部署旧候选415b5f8,也不覆盖其并行验收记录。
本地34项/310断言通过。正式sitemap从25项变27项,精确增加`/client`与`/advanced`,旧集合无移除;首页、两栏目和system-proxy-vs-tun详情HTTP200,两栏目index/follow及自引用canonical通过。188篇正文核心、既有发布回执、生成标签模板哈希及data.ms并行目录保持。重试命令以nginx执行返回processed=0/pending=0,原项目调度存在,密钥文件HTTP200且内容匹配。
切换时曾因2秒PHP OPcache检查窗口出现新模板与旧控制器混用,验收脚本立即回滚。最终通过Unix FastCGI socket仅失效本批文件缓存,临时私有脚本用后删除;未重启共享PHP-FPM、未改其配置。原两次候选回滚后,接续并行IndexNow新基线完成本次限定发布。
本批未再次发送真实通知、不补交历史文章;上一节的真实HTTP200验收继续有效。已完成服务器侧验收,未做线上页面验收。脱敏验收见[栏目回执](TUTORIAL_SITEMAP_2026-10-31.json)。恢复点:VPS-003 `/root/backups/cfn-tutorial-sitemap-20261031/`,包含原HEAD/status、Git bundle、模板、前后运行摘要和opcode失效回执。仅回滚本批时检回ace6d74a并定点失效PHP缓存,保留新通知实现、内容及回执。