You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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模块的正确操作(解决无效问题)

你用这个模块没效果,大概率是漏了关键步骤,按下面来:

  1. 装完模块启用后,进配置 > 系统 > 错误页面(路径/admin/config/system/error-page)
  2. 给401、500、502这些错误码,选你已经建好的自定义页面(下拉列表里挑)
  3. 重点:确保你选的页面对匿名用户开放权限——401、500这类错误很多时候是匿名状态下触发的,要是页面设成仅登录可见,肯定显示默认页
  4. 保存配置后必须清Drupal缓存
  5. 额外提醒:502、503这类服务器级错误,要在Web服务器里配置指向模块的错误页路径,比如Nginx里加:
error_page 502 /error-page/502;

常见排查点

  • 先确认自定义页面本身能正常访问,路径没写错
  • 改完配置或模块设置后,一定要清缓存
  • 查服务器错误日志,看看有没有页面被拦截的记录
  • 401错误页绝对不能要求登录权限,不然会陷入循环

内容的提问来源于stack exchange,提问作者Mahmoud Sayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:32:47