发布完成后 HTML 能返回,但 CSS、JS 一片 404。连续执行几次 static-content:deploy 有时短暂恢复,下一次切 release 又坏。这里通常不是命令少跑一次,而是生成目录、Web 根目录与静态版本没对齐。
从一个具体 404 反推文件路径
不要先删整个目录。记录完整 URL、locale、area 和版本号,然后在当前 release 查对应文件:
find pub/static -path '*frontend*' -name 'styles-m.css' -o -name 'requirejs-config.js'
ls -la pub/static pub/static/_cache文件不存在,查命令是否包含正确语言、主题与 area;文件存在但 nginx 404,查 root、符号链接、容器挂载和权限。
静态签名会让文件存在仍然 404
HTML 若来自旧 FPC/CDN,而静态目录已经切到新 release,就会请求不存在的旧版本。应先完成新静态产物,再原子切换 release,并在合适时点刷新页面缓存。
多节点要确认每个节点都生成,或构建产物通过共享存储分发。只在一台机器手工 deploy,一半流量仍会 404。
生产不要边访问边生成
构建阶段应固定模式、依赖、主题和语言;发布阶段只做原子切换。权限由部署用户与 Web 用户组策略统一,不要用 chmod 777。
用 curl 分别请求 HTML 与引用资源,连续命中不同节点并观察 CDN。所有节点在切换前后都返回同一版本 200,链路才算稳定。

