Apache错误页面重定向需按状态码分别配置ErrorDocument指令,路径须为根目录相对路径且文件≥512字节;优先在虚拟主机中设置,配合ServerTokens Prod、ServerSignature Off和expose_php=Off隐藏敏感信息;错误页须返回正确状态码并提供友好内容。

在 Linux 的 Apache 中配置灵活的错误页面重定向策略,核心是结合 ErrorDocument 指令与服务器上下文(主配置、虚拟主机、.htaccess)的合理使用,并兼顾状态码语义、路径规范和用户体验。不是简单写一行就完事,关键在于“灵活”——即按需区分错误类型、统一风格、避免泄露信息、适配不同部署结构。
按错误类型分别指定自定义页面
Apache 支持为每种 HTTP 状态码单独设置响应页面,推荐覆盖常见错误:400、403、404、500 是必须项,401 和 503 可按需补充。页面路径必须是相对于网站根目录的相对路径(不能带协议或域名),否则可能返回 302 或 200 状态,破坏 SEO 和调试逻辑。
- ErrorDocument 400 /errors/400.html
- ErrorDocument 403 /errors/403.html
- ErrorDocument 404 /errors/404.html
- ErrorDocument 500 /errors/500.html
注意:自定义 HTML 文件大小需 ≥512 字节,否则部分浏览器(如 Chrome)会忽略并显示内置错误页。
在合适的位置写入配置
配置位置决定生效范围,优先级从高到低为:.htaccess → 虚拟主机块 → 主配置文件。生产环境建议优先在虚拟主机配置中设置(如 /etc/apache2/sites-enabled/000-default.conf 或 /etc/httpd/conf.d/vhost.conf),避免依赖 .htaccess(需开启 AllowOverride All 且有性能开销)。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 若用 .htaccess:确保所在目录启用重写与错误文档支持(
AllowOverride Options=All或至少含FileInfo) - 若改主配置或 vhost:修改后必须执行
sudo systemctl reload apache2(Debian/Ubuntu)或sudo systemctl reload httpd(CentOS/RHEL)
隐藏敏感信息,提升安全性
默认错误页会暴露 Apache 版本、PHP 版本甚至操作系统,构成信息泄露风险。需同步关闭 banner 和签名:
- 在主配置中添加:ServerTokens Prod 和 ServerSignature Off
- 在
php.ini中设:expose_php = Off
这样即使用户访问不存在路径,也不会显示 Apache/2.4.63 (Ubuntu) PHP/8.2.12 这类信息。
让错误页真正“友好”而非跳转
不要用 Redirect 或 RewriteRule 把 404 强制跳首页——这会让搜索引擎误判内容存在,损害收录;也不要用 JS 跳转掩盖真实状态码。正确做法是:
- 错误页本身返回对应 HTTP 状态码(如 404.html 页面响应头必须是
HTTP/1.1 404 Not Found) - 页面内提供清晰提示 + 返回首页链接 + 搜索框(可选)+ 友好插画
- 确保错误页 CSS/JS 资源能正常加载(路径用绝对路径或根相对路径,如
/css/style.css)
测试是否生效:用 curl -I 访问一个不存在路径,检查响应头中的 Status 是否为 404,且 Content-Type 包含 text/html。

















