头号原因是httpd-vhosts.conf未被加载,需取消httpd.conf中“#include conf/extra/httpd-vhosts.conf”的注释并重启apache;其次需配置hosts文件映射域名到127.0.0.1,且documentroot路径须正确、权限需设为require all granted。

httpd-vhosts.conf 没被 Apache 加载
这是虚拟域名不生效的头号原因。XAMPP 默认注释掉了加载语句,Include conf/extra/httpd-vhosts.conf 这一行开头带 #,Apache 根本不会读取你改的配置。
打开 XAMPP\apache\conf\httpd.conf,搜索 httpd-vhosts.conf,找到这行:#Include conf/extra/httpd-vhosts.conf
删掉开头的 #,保存文件。
必须重启 Apache(不是刷新页面),否则修改无效。XAMPP 控制面板里点 “Stop” 再点 “Start”,或用命令行运行 apache_stop.bat 和 apache_start.bat 查看实时报错更可靠。
hosts 文件没配或配错
浏览器发请求前根本不知道 myproject.test 指向哪台机器——Apache 配得再对也没用,DNS 层就卡住了。
Windows 编辑 C:\Windows\System32\drivers\etc\hosts(需管理员权限);macOS/Linux 编辑 /etc/hosts(需 sudo)。
在文件末尾加一行:127.0.0.1 myproject.test
注意:不能用 .local(macOS 自动拦截)、纯数字(如 192.168.1.10)、或未加协议的 localhost(它可能被系统重定向到 IPv6 的 ::1)。
改完 hosts 不用重启 Apache,但建议清空浏览器 DNS 缓存:chrome://net-internals/#dns → 点 “Clear host cache”。也可以用 ping myproject.test 验证是否解析为 127.0.0.1。
httpd-vhosts.conf 里存在冲突的 ServerName
如果你在 httpd-vhosts.conf 顶部或中间保留了默认的 #ServerName localhost:80 或类似注释行,某些 Apache 版本会误解析它,导致所有虚拟主机匹配失败,全部回退到默认 htdocs。
检查整个 httpd-vhosts.conf 文件,删掉或注释掉任何孤立的 ServerName 行(尤其是没包在 <virtualhost></virtualhost> 块里的)。只保留每个 <virtualhost></virtualhost> 块内部的 ServerName 和 ServerAlias。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
多个虚拟主机共存时,确保它们的 ServerName 互不相同;如果想让一个站点响应多个域名,用 ServerAlias,比如:ServerName myproject.testServerAlias www.myproject.test dev.myproject.test
DocumentRoot 路径或权限配置错误
路径写错、斜杠方向不对、末尾多加斜杠、目录不存在、或 <directory></directory> 权限没开,都会直接导致 403 Forbidden 或 404 Not Found,看起来像“配置失效”。
DocumentRoot 必须是绝对路径,且统一用正斜杠:DocumentRoot "C:/xampp/htdocs/myproject"(不是 C:\xampp\htdocs\myproject)
<directory></directory> 块中的路径必须与 DocumentRoot 完全一致,结尾不加斜杠:<directory></directory>
该目录下至少要有 index.html 或 index.php,否则 Apache 可能拒绝列出内容(除非显式启用 Indexes)。
权限指令必须包含:Require all grantedAllowOverride All(尤其 Laravel、ThinkPHP 等框架依赖 .htaccess)
Windows 下特别注意:路径中不能出现中文、空格或特殊符号;若项目在子目录(如 htdocs/myproject/public),<directory></directory> 块必须指向这个子目录,而非父目录。
最常被忽略的是:改完配置后没验证语法。启动 Apache 前,先运行 httpd -t(XAMPP 中可执行 apache_start.bat,它会自动调用 httpd -t 并输出错误行号)。一个拼错的引号、少写的 >、或错位的缩进,都足以让整段虚拟主机配置静默失效。










