Apache 虚拟主机单独设置自定义 404、403、500 错误页面
可以给每个虚拟主机单独配置专属错误页面,互不影响,支持:404、403、500、400 等。
一、核心指令
apache
ErrorDocument 状态码 "错误页面路径"
常用状态码:
- 404 页面不存在
- 403 禁止访问
- 500 服务器内部错误
- 400 错误请求
二、整体步骤
- 在每个网站根目录,新建错误页面
404.html、403.html、500.html - 在对应虚拟主机标签内加入
ErrorDocument - 给目录开启权限,重启 Apache
三、完整配置示例(多站点各自独立错误页)
1. 准备目录结构
站点 A:
D:/xampp/htdocs/siteA
里面放:
plaintext
404.html
403.html
500.html
站点 B:
D:/xampp/htdocs/siteB
也放一套自己的错误页面,各自样式不一样。
2. 虚拟主机配置(重点)
apache
# 站点A 80端口,自定义错误页
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot "D:/xampp/htdocs/siteA"
# 自定义错误页面
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
<Directory "D:/xampp/htdocs/siteA">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 站点B 8080端口,独立错误页
<VirtualHost *:8080>
ServerName www.b.com
DocumentRoot "D:/xampp/htdocs/siteB"
# 自己一套错误页面
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
<Directory "D:/xampp/htdocs/siteB">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
写在<VirtualHost>内部,就只对当前网站生效,不会互相干扰。
四、两种写法任选
写法 1:相对路径(推荐)
apache
ErrorDocument 404 /404.html
直接放在网站根目录,最省事。
写法 2:绝对 URL
apache
ErrorDocument 404 https://www.a.com/404.html
五、用 .htaccess 单独配置(不用改主配置)
如果不想改
httpd-vhosts.conf,可以在网站根目录新建 .htaccess:apache
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
前提:虚拟主机里开启
apache
AllowOverride All
六、Linux 注意事项
- 错误页面权限设为可读
bash
运行
chmod 644 /var/www/siteA/404.html
- 防火墙、目录权限不要拦截静态页面
七、测试方法
访问一个不存在的地址:
plaintext
http://www.a.com/abc123.html
跳出你自己设计的 404 页面,就是配置成功。
八、常见坑
- 错误页面路径写错,会显示 Apache 默认白色报错页
- 没加
<Directory>权限,报 403 .htaccess没开启AllowOverride All不生效