apache不加载httpd-vhosts.conf就一定失败,因xampp默认注释该文件,必须取消httpd.conf中include行的注释、重启服务并验证语法,否则所有虚拟主机配置均无效。

Apache 不加载 httpd-vhosts.conf 就一定失败
XAMPP 默认根本不会读取 httpd-vhosts.conf,哪怕你写得再对也没用。必须手动打开 XAMPPpacheconfhttpd.conf,找到这行:
Include conf/extra/httpd-vhosts.conf
删掉开头的 # 取消注释。如果这行被删了或拼错,配置文件压根不生效——访问任何自定义域名都会 404 或跳转到 XAMPP 默认页。
改完必须重启 Apache:在控制面板先点 Stop 再点 Start,别只点 Restart,它有时跳过配置重载。
httpd-vhosts.conf 中路径和权限写错直接 403
常见错误是路径斜杠方向不对或漏掉 Require all granted。Windows 下路径写成 "C:
mpphtdocsmyapp" 会启动失败;必须用正斜杠 "C:/xampp/htdocs/myapp" 或双反斜杠 "C:\xampp\htdocs\myapp"。
<directory></directory> 块里必须包含:
-
Require all granted(Apache 2.4+ 强制要求,缺了就是 403 Forbidden) -
AllowOverride All(否则 Laravel、WordPress 等依赖.htaccess的项目路由失效) -
Options FollowSymLinks(不然符号链接无法解析)
示例正确片段:
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
<virtualhost>
DocumentRoot "D:/xampp/htdocs/myproject"
ServerName myproject.test
<directory>
Options FollowSymLinks
AllowOverride All
Require all granted
</directory></virtualhost>
hosts 文件改了但域名不生效?不是缓存就是格式问题
Windows 下编辑 C:WindowsSystem32driversetchosts 必须用管理员权限打开编辑器(比如右键记事本 → “以管理员身份运行”),否则保存失败。
hosts 文件格式极其严格:
- 每行只能有一个 IP + 一个域名,不能有空格分隔,要用
TAB或至少一个空格 - 不能有 UTF-8 BOM 头(用 Notepad++ 选“编码 → 转为 ANSI”)
- 加完后执行
ipconfig /flushdns清 DNS 缓存,否则浏览器可能还在用旧记录 - 别忘了加
www.别名,否则输www.myproject.test会 404
正确写法:
127.0.0.1 myproject.test 127.0.0.1 www.myproject.test
localhost 访问变 404 或跳到你的新站点?顺序错了
httpd-vhosts.conf 是按顺序匹配的。如果你的新 <virtualhost></virtualhost> 块写在最前面,所有未显式匹配的请求(包括直接输 localhost)都会落到它头上——结果就是 XAMPP 默认页消失,本地开发环境“失联”。
解决办法只有一个:把默认 localhost 配置放在最前面。XAMPP 自带的这个块通常被注释掉了,你要手动取消注释或补上:
<virtualhost _default_:80>
DocumentRoot "D:/xampp/htdocs"
<directory>
Require all granted
</directory></virtualhost>
然后再在它后面追加你的自定义站点。顺序不能颠倒,否则就不是多站点,而是“单站点接管全部流量”。
真正容易被忽略的是:DocumentRoot 和 <directory></directory> 路径必须完全一致,且不能含中文、空格或盘符大小写混用——哪怕 Windows 文件系统不敏感,PHP 的 realpath() 或 Composer 加载器也可能出错。










