虚拟主机中设置不同的错误页面

Apache 虚拟主机单独设置自定义 404、403、500 错误页面

可以给每个虚拟主机单独配置专属错误页面,互不影响,支持:404、403、500、400 等。

一、核心指令

apache
ErrorDocument 状态码 "错误页面路径"
常用状态码:
  • 404 页面不存在
  • 403 禁止访问
  • 500 服务器内部错误
  • 400 错误请求

二、整体步骤

  1. 在每个网站根目录,新建错误页面

    404.html403.html500.html

  2. 在对应虚拟主机标签内加入 ErrorDocument
  3. 给目录开启权限,重启 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 注意事项

  1. 错误页面权限设为可读
bash
运行
chmod 644 /var/www/siteA/404.html
  1. 防火墙、目录权限不要拦截静态页面

七、测试方法

访问一个不存在的地址:
plaintext
http://www.a.com/abc123.html
跳出你自己设计的 404 页面,就是配置成功。

八、常见坑

  1. 错误页面路径写错,会显示 Apache 默认白色报错页
  2. 没加 <Directory> 权限,报 403
  3. .htaccess 没开启 AllowOverride All 不生效
上一篇 快速上手 Cursor:Python 数据库操作
下一篇 S9706交换机跟NE40E路由器GE端口对接无法up