已经改了 pub/errors/default/503.phtml,开启维护模式却看到异常堆栈,这通常是因为站点还在 developer mode。开发模式优先暴露异常,和生产环境展示维护页的行为不同。

先确认当前模式和维护状态

php bin/magento deploy:mode:show
php bin/magento maintenance:status

自定义错误皮肤放在:

pub/errors/mytheme/503.phtml
pub/errors/mytheme/css/styles.css

并创建 pub/errors/local.xml:

<?xml version="1.0"?>
<config>
    <skin>mytheme</skin>
</config>

在生产模式下再验证503响应

php bin/magento deploy:mode:set production
php bin/magento maintenance:enable
curl -I https://shop.example.com/

应返回 503,并显示自定义页面。不要只在浏览器看,因为 CDN 可能缓存旧的 500/503 页面。还要测试白名单 IP:

php bin/magento maintenance:allow-ips 203.0.113.10

白名单来源如果经过代理,Magento 看到的客户端 IP 可能不是你的公网 IP,需要同时核对可信代理和转发头。验证完成后执行 maintenance:disable,再确认首页恢复 200。