CMS 页面可以打开编辑,标题和内容也能正常输入,但点击保存后直接看到 404。这个 404 可能由 Magento 路由返回,也可能是 WAF 为隐藏拦截原因而伪装的响应;两者的处理方向完全不同。

先保存请求证据

在 Network 中找到保存 POST,记录 Request URL、状态码、响应头、响应体开头、请求体大小和服务器 request ID。若响应是完整 Magento 404 页面,优先查后台 secret key、Form Key 与路由;若响应头带 CDN/WAF 标记或是一段简短拦截页,去查边缘安全日志。

用内容二分法找 WAF 规则

复制页面到测试记录,先只保留一段普通文本。如果能保存,再逐块加入原 HTML。<script>、内联事件、SQL 关键词、iframe、长 base64 图片和某些模板指令容易触发安全规则。二分法能找到最小触发片段,但不要为了通过而关闭整站 WAF;应对后台保存路径和已认证管理员制定精确例外。

请求体大小也可能表现成异常页面

页面内直接粘贴 base64 图片会迅速增大 POST。比较 CDN、Nginx/Apache、PHP 的 body/upload 限制与后台实际请求大小。413 被自定义错误页改写为 404 时,浏览器只看最终状态容易误判。

php -i | egrep 'post_max_size|max_input_vars|max_execution_time'
tail -n 100 var/log/exception.log
tail -n 100 var/log/system.log

URL Key 冲突通常有业务提示

相同 store view 下 identifier 冲突、空值或非法格式,多数会返回表单错误,而非真正 404。仍应检查 CMS Page 的 identifier、store assignment 和 URL rewrite 扩展。不要删除另一页面来试错,先确认它是否正在提供线上内容。

Form Key 与后台会话

编辑页面打开太久、Cookie 域不一致或负载均衡 Session 漂移,提交时 Form Key 可能失效。正常应回到登录或显示无效 key,但定制后台可能改写。用新开的编辑页立即保存最小内容;若成功,再查会话寿命与节点共享。

修复后分别保存短文本、长 HTML、包含允许模板指令的页面,并检查前台 URL、store view 和缓存刷新。目标不是让 POST 返回 200,而是页面记录正确更新且 WAF 仍保护其他入口。

别忽略后端 Secret Key

Magento 后台 URL 的 key 与当前管理员会话绑定。扩展若把保存 action 写成固定 URL、JavaScript 长时间缓存旧 action,或反向代理去掉路径片段,POST 会落到无效路由。比较表单 action 与点击时请求 URL,并确认没有跨域跳转。修复后重新登录获取新 key,不能把 URL key 验证整体关闭。

如果只有某个管理员角色失败,还应对比 CMS 保存 ACL 与变量/Widget 权限。内容里允许的 Magento directive 受权限白名单影响,拒绝时应返回明确错误;不要通过给所有编辑者完整管理员权限来绕过。