fn_b/docs/maintenance/EDITORIAL_INDEXNOW.md

5.8 KiB
Raw Permalink Blame History

编辑文章 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。提交被接收不等于搜索引擎已经抓取或收录,见官方协议。
  • editorial:indexnow-retry挂接原Laravel调度,每5分钟检查一次,单次最多10个到期回执,防重叠;退避从5分钟递增,最大24小时。定时任务运行在FNA业务服务器,以原nginx身份执行,白色机仅SSH跳板。
  • 已done的通知不重复调用;同一发布UUID重放不重发文章。网络结果未知或提交后进程崩溃可能重复通知同一URL,按至少一次投递处理,不能承诺第三方只收到一次。每次重试都重新确认文章仍公开、栏目启用且可索引。
  • 内容未变、已撤下、不再允许索引时跳过;旧版本中没有IndexNow状态的历史发布回执不自动补推。暂时禁用不会丢弃已pending状态。
  • 仅推送同一站点的规范文章及其相关有效栏目地址;app.url、editorial.base_url、app.site_code必须一致,不跟随重定向,不从文章输入指定外部推送目标。

SEO整体升级后的现行合同

2026-10-31随 7c11ca77 保留原编辑发布回执,并在实质更新通知中追加所属栏目/父栏目;日更资源改为通知稳定首页和栏目,新增持久出站队列及业务服务器重试,取消旧接收器无差别直推快照。首页及9个栏目真实通知返回200,旧回执不变。完整实现、边界及恢复点统一见SEO实施记录;下面较早发布记录仅描述各自批次。

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且内容匹配;未改正文、未重新发布、未改旧回执、未批量补推。只证明通知被接收,不代表已收录。已完成服务器侧验收,未做线上页面验收。精确证据见回执。

私有恢复点:VPS-003 /root/backups/cfn-indexnow-20261031/,包含Git bundle、原HEAD/工作区状态、标签模板、文章核心字段与旧回执快照、真实提交事件和部署记录。回滚可检出基线,保留已有effects状态和内容;单独停推可设EDITORIAL_INDEXNOW_ENABLED=false,不要删除pending回执。普通发布继续通过白色机发布封装。

两个教程栏目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验收继续有效。已完成服务器侧验收,未做线上页面验收。脱敏验收见栏目回执。恢复点:VPS-003 /root/backups/cfn-tutorial-sitemap-20261031/,包含原HEAD/status、Git bundle、模板、前后运行摘要和opcode失效回执。仅回滚本批时检回ace6d74a并定点失效PHP缓存,保留新通知实现、内容及回执。