xampp启用虚拟主机需四步:一、取消httpd.conf中include conf/extra/httpd-vhosts.conf注释;二、在httpd-vhosts.conf中为每个virtualhost添加匹配documentroot的directory授权块;三、在hosts文件中用127.0.0.1映射域名;四、配置首个virtualhost为localhost兜底项,并用httpd -t验证语法。

XAMPP 默认不启用虚拟主机,直接配 httpd-vhosts.conf 没用 —— 这是 90% 多域名失败的根源。
必须取消 httpd.conf 中的 Include conf/extra/httpd-vhosts.conf 注释
Apache 启动时不会自动加载 httpd-vhosts.conf,除非你在 httpd.conf 里显式启用它。打开 XAMPP\apache\conf\httpd.conf,搜索:
#Include conf/extra/httpd-vhosts.conf
删掉开头的 #,变成:
Include conf/extra/httpd-vhosts.conf
- 漏掉这步,所有
<virtualhost></virtualhost>配置全被忽略,请求一律落到htdocs根目录 - 同时检查
ServerName行是否被意外改成了非标准端口(如localhost:8080),否则 Apache 启动会报错退出 - 修改后无需重启系统,但必须重启 Apache 才生效
httpd-vhosts.conf 里每个 <virtualhost></virtualhost> 必须带 <directory></directory> 权限块
仅写 DocumentRoot 和 ServerName 不够,Apache 2.4+ 默认拒绝访问,必须显式授权。正确结构是:
<virtualhost>
ServerName blog.test
DocumentRoot "C:/xampp/htdocs/blog"
<directory>
Require all granted
AllowOverride All
</directory></virtualhost>
-
DocumentRoot必须是绝对路径,结尾不能有斜杠(C:/xampp/htdocs/blog/❌) -
<directory></directory>路径要和DocumentRoot完全一致,大小写敏感(Windows 下虽不严格,但养成习惯防跨平台出错) - 没加
<directory></directory>或写错路径,浏览器会返回403 Forbidden
hosts 文件必须映射到 127.0.0.1,且不能用 localhost
浏览器不认识 blog.test 这类自定义域名,靠系统 hosts 文件做本地解析。用管理员权限打开:
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
C:\Windows\System32\drivers\etc\hosts
在末尾追加(每行一个,IP 固定写 127.0.0.1):
127.0.0.1 blog.test 127.0.0.1 api.local 127.0.0.1 admin.dev
- 写成
localhost blog.test或::1 blog.test(IPv6)会导致解析失败 - 改完不用重启系统,但浏览器 DNS 缓存可能残留,建议用无痕窗口或执行
ipconfig /flushdns - 如果多个项目共用同一 IP,
hosts里只写 IP + 域名,不写端口、协议、路径
第一个 <virtualhost></virtualhost> 是兜底项,localhost 访问也会匹配它
Apache 按顺序匹配 <virtualhost></virtualhost>,未命中任何 ServerName 的请求(比如直接输 http://localhost)会落到第一个块。如果你只配了:
<virtualhost>
ServerName blog.test
DocumentRoot "C:/xampp/htdocs/blog"
<directory ...>...</directory></virtualhost>
那么 http://localhost 也会打开 blog 项目,而不是默认 htdocs 页面。
- 想保留
localhost访问原始htdocs,必须显式加一个兜底块: <virtualhost> ServerName localhost DocumentRoot "C:/xampp/htdocs" <directory> Require all granted AllowOverride All </directory></virtualhost>- 这个块建议放在
httpd-vhosts.conf最顶部或最底部,避免被中间规则覆盖
最容易被忽略的是:改完所有配置后,别急着刷浏览器 —— 先在 apache\bin 目录下运行 httpd -t,看到 Syntax OK 再重启 Apache。任何语法错误都会导致服务启动失败,而 XAMPP 控制面板只显示“Start”按钮变灰,不提示具体哪一行错了。










