启用虚拟主机需三步:一、取消httpd.conf中#Include conf/extra/httpd-vhosts.conf的注释;二、在httpd-vhosts.conf中正确配置,确保DocumentRoot为绝对路径且无尾斜杠、ServerName与hosts映射一致;三、在Windows hosts文件添加127.0.0.1 域名映射,最后用httpd -t验证语法。

修改 httpd.conf 启用虚拟主机支持
默认 XAMPP 的 Apache 并未启用 vhosts 配置,必须手动打开。否则无论怎么配 httpd-vhosts.conf,请求都会落到默认站点。
打开 XAMPP\apache\conf\httpd.conf,找到这行:
#Include conf/extra/httpd-vhosts.conf
删掉开头的 # 取消注释。这一步漏掉是多站点失效最常见原因。
同时确认 Listen 和 ServerName 没被意外改错,比如 ServerName localhost:80 被写成 localhost:8080 会导致 Apache 启动失败。
在 httpd-vhosts.conf 中定义多个
编辑 XAMPP\apache\conf\extra\httpd-vhosts.conf,每个项目对应一个 块。关键不是“加几个”,而是路径、域名、端口三者对齐。
必须注意:
-
DocumentRoot必须是绝对路径,且结尾不加斜杠(如C:/xampp/htdocs/myproject,不是C:/xampp/htdocs/myproject/) -
ServerName填你打算用的域名(如blog.test),但该域名必须在系统hosts文件里映射到127.0.0.1 - 第一个
块会成为“兜底站点”,所有未匹配的请求都进这里,建议把它设为最常用的项目或留空页
示例片段:
<virtualhost>
ServerName blog.test
DocumentRoot "C:/xampp/htdocs/blog"
<directory>
Require all granted
</directory></virtualhost>
把自定义域名写进 Windows hosts 文件
浏览器不会自动解析 blog.test 这种非公网域名,必须靠本地 hosts 文件做映射。跳过这步,输入网址只会显示“无法访问此网站”。
用管理员权限打开:C:\Windows\System32\drivers\etc\hosts,在末尾追加:
127.0.0.1 blog.test 127.0.0.1 api.local 127.0.0.1 admin.dev
每行一个域名,IP 固定写 127.0.0.1(不要写 localhost)。改完保存,无需重启系统,但浏览器缓存可能需要清一下或换无痕窗口测试。
重启 Apache 并验证配置语法
改完所有配置后,别急着刷新浏览器。先检查 Apache 配置是否合法,否则服务启动失败,XAMPP 控制面板里 Start 按钮会瞬间变灰。
打开 XAMPP 控制面板 → 点击 Config → Apache (httpd.conf) → 底部选 Go to Application Directory → 进入 apache\bin 目录 → 双击运行 httpd.exe。如果黑窗一闪退出,说明配置有误;如果停留并打印日志,说明语法通过。
更稳妥的方式是命令行执行:httpd -t(返回 Syntax OK 才算过关)。常见报错包括路径含中文、引号是全角、 缺少 Require all granted(Apache 2.4+ 必须显式授权)。
真正容易被忽略的是:不同项目的 DocumentRoot 目录权限要实际存在,且 Apache 进程有读取权限;如果用了 .htaccess,还要确认 AllowOverride All 已开启。










