命令最后显示 Deployment complete,打开新主题页面却有一批 CSS 404。这里的“成功”只代表你要求部署的组合成功了,不代表当前页面使用的主题、语言和 area 包含在命令里。
从404 URL反推缺的是哪一组产物
把 URL 拆成 static version、frontend/adminhtml、Vendor/theme、locale 和文件路径。然后到发布产物里按同样层级找文件。不要直接搜索整个 pub/static,因为旧版本目录或 symlink 可能让你找到一份页面根本不会访问的文件。
bin/magento theme:uninstall --help
bin/magento setup:static-content:deploy -f zh_Hans en_US --area frontend --theme Vendor/theme
上面的部署参数只是示例。先用当前商店 locale 和实际主题代码替换。新增主题必须有正确的 registration.php、theme.xml 以及父主题声明,后台选择的 Design Configuration 作用域也要对应当前 store view。
多节点发布时,命令可能跑在用户看不到的磁盘上
如果每个 Web 节点有独立 pub/static,只在发布机执行成功不够。确认产物被打包并分发到所有节点,静态资源 CDN 的源站也读取同一版本。请求偶发 200/404 通常就是节点内容不一致。
检查静态签名。HTML 引用了新的 version 路径,但 CDN 或 Nginx 仍映射旧 release 时,文件实际存在也会 404。对照页面源代码版本号、部署后的 deployed_version.txt 和当前 symlink。
别用777掩盖生成和读取用户不一致
部署用户需要写入生成目录,Web 用户需要读取。确认 owner、group、umask 与发布流程一致。若 LESS 编译或某个源文件失败,查看完整命令输出,不要只看最后一行。
修复后请求具体 CSS URL 并检查 Content-Type,再刷新一个使用父主题的页面和一个使用新主题的页面。最后清 CDN 的精确路径。能够访问文件只是第一步,样式内容属于正确 release、所有节点一致,才算部署完成。

