Drupal 9自定义全类型错误页面方法咨询及error_page模块问题求助
Drupal 9 全类型错误页面自定义配置指南
一、原生配置(无需额外模块)
1. 修改settings.php指定错误页面
直接在sites/default/settings.php里添加代码,给不同错误码绑定自定义页面路径:
// 401 未授权错误 $config['system.site']['page.401'] = '/custom-401-page'; // 500 服务器内部错误 $config['system.site']['page.500'] = '/custom-500-page'; // 502 网关错误 $config['system.site']['page.502'] = '/custom-502-page';
注意事项:
- 先在Drupal里建好对应路径的页面(比如用「基本页面」内容类型创建)
- 502这类服务器级错误,光Drupal配置不够,还要在Nginx/Apache里设置指向这个页面,因为这类错误可能在Drupal处理前就被服务器拦截了。
2. 用自定义模块路由覆盖(更灵活)
如果需要定制化程度更高的错误页,可通过自定义模块的路由文件覆盖默认错误路由:
在你的自定义模块的yourmodule.routing.yml中添加:
system.401: path: '/custom-401' defaults: _controller: '\Drupal\yourmodule\Controller\CustomErrorController::handle401' _title: '未授权访问' requirements: _access: 'TRUE'
然后写对应的控制器类返回自定义内容即可。
二、Error Page模块的正确操作(解决无效问题)
你用这个模块没效果,大概率是漏了关键步骤,按下面来:
- 装完模块启用后,进配置 > 系统 > 错误页面(路径
/admin/config/system/error-page) - 给401、500、502这些错误码,选你已经建好的自定义页面(下拉列表里挑)
- 重点:确保你选的页面对匿名用户开放权限——401、500这类错误很多时候是匿名状态下触发的,要是页面设成仅登录可见,肯定显示默认页
- 保存配置后必须清Drupal缓存
- 额外提醒:502、503这类服务器级错误,要在Web服务器里配置指向模块的错误页路径,比如Nginx里加:
error_page 502 /error-page/502;
常见排查点
- 先确认自定义页面本身能正常访问,路径没写错
- 改完配置或模块设置后,一定要清缓存
- 查服务器错误日志,看看有没有页面被拦截的记录
- 401错误页绝对不能要求登录权限,不然会陷入循环
内容的提问来源于stack exchange,提问作者Mahmoud Sayed
相关产品推荐
相关产品推荐

