xampp 8.2.12 默认不加载虚拟主机配置,必须取消httpd.conf中#include conf/extra/httpd-vhosts.conf的注释并重启apache;同时需正确配置hosts文件、documentroot路径(正斜杠且无结尾斜杠)、路径严格一致,并删除默认示例块避免兜底匹配。

XAMPP 8.2.12 能直接用虚拟主机跑多个 PHP 项目,但必须手动启用 httpd-vhosts.conf,否则所有请求都落到 htdocs,自定义域名根本不会生效。
为什么改了 httpd-vhosts.conf 却还是访问不到自定义域名
最常见原因是 httpd.conf 里那行 #Include conf/extra/httpd-vhosts.conf 还被注释着。XAMPP 8.2.12 默认不加载虚拟主机配置,哪怕你把 httpd-vhosts.conf 写得再全也没用。
必须打开 XAMPPpacheconfhttpd.conf,找到这行并删掉开头的 #:
Include conf/extra/httpd-vhosts.conf
改完后别急着重启:先在 XAMPP 控制面板点 Apache → Config → Apache (httpd.conf),确认没改错 Listen 和 ServerName —— 比如 ServerName localhost:80 被误写成 localhost:8080,Apache 直接启动失败。
httpd-vhosts.conf 里 DocumentRoot 的路径陷阱
Windows 下路径要用正斜杠 / 或双反斜杠 \,单反斜杠 会导致 Apache 启动报错或 403 Forbidden。
-
DocumentRoot "C:/xampp/htdocs/blog"✅(推荐) -
DocumentRoot "C:\xampp\htdocs\blog"✅ -
DocumentRoot "C: mpphtdocslog"❌(解析失败)
另外:DocumentRoot 结尾不能带斜杠,"C:/xampp/htdocs/blog/" 是错的;<directory></directory> 块里的路径也必须和 DocumentRoot 完全一致,包括大小写(Windows 虽不区分,但 Apache 配置严格匹配)。
hosts 文件写法与浏览器缓存干扰
系统 hosts 文件必须用管理员权限编辑,路径是 C:WindowsSystem32driversetchosts。添加规则时注意:
- 每行一个映射,IP 固定写
127.0.0.1,不要写localhost - 域名后不要加
/或端口,比如127.0.0.1 blog.test✅,127.0.0.1 blog.test:80❌ - 保存后浏览器可能缓存 DNS,建议用无痕窗口测试,或执行
ipconfig /flushdns刷新本地 DNS 缓存
如果输 blog.test 显示“无法访问此网站”,先检查 hosts 是否保存成功(用记事本另存为时编码选 ANSI 或 UTF-8 无 BOM),再确认 Apache 配置语法是否通过:httpd -t 在命令行运行,返回 Syntax OK 才算过关。
多项目共存时第一个 <virtualhost></virtualhost> 是兜底项
Apache 按顺序匹配 <virtualhost></virtualhost>,没匹配上的请求会进第一个块。如果你只配了 blog.test 和 api.local,但访问 foo.dev 却打开了 blog.test 的页面,说明第一个 <virtualhost></virtualhost> 的 ServerName 是空的或通配,它把所有未声明的域名都收了。
解决办法:把最常用或最基础的项目放在第一个,或者显式设一个空兜底项,比如:
<virtualhost>
ServerName _default_
DocumentRoot "C:/xampp/htdocs"
<directory>
Require all granted
</directory></virtualhost>
这样其他项目才不会被意外劫持。XAMPP 8.2.12 的默认 httpd-vhosts.conf 里自带一个示例块,记得把它删掉或注释掉,否则它就是那个隐形兜底项。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











