Apache虚拟主机配置需三步齐备:启用httpd-vhosts.conf、正确设置VirtualHost路径与域名、修改hosts文件映射;缺一不可,否则403/404错误频发。

确认 Apache 的 httpd-vhosts.conf 已启用
XAMPP 默认不加载虚拟主机配置,必须手动开启。打开 XAMPPpacheconfhttpd.conf,找到这一行并取消注释(删掉前面的 #):
Include conf/extra/httpd-vhosts.conf
如果这行被注释或缺失,httpd-vhosts.conf 中的配置根本不会生效,后续所有操作都白搭。
改完记得重启 Apache —— 直接点 XAMPP 控制面板里的 Stop 再 Start,别只靠“Restart”按钮,有时它会跳过配置重载。
在 httpd-vhosts.conf 中添加自定义虚拟主机条目
编辑 XAMPPpacheconfextrahttpd-vhosts.conf,在文件末尾追加一个 块。关键点不是“照抄模板”,而是匹配你的真实路径和域名:
-
DocumentRoot必须指向你项目所在的实际目录,比如"C:/xampp/htdocs/myproject";路径中用正斜杠/或双反斜杠\,单反斜杠会导致 Apache 启动失败 -
ServerName填你要访问的域名,如myapp.local;它只是标识符,不自动解析 DNS -
ServerAlias可选,比如加个www.myapp.local,避免用户输 www 时 404 - 务必保留默认的
_default_:80或localhost条目在最前面,否则所有未匹配的请求(包括直接输localhost)都会落到你的新虚拟主机上,导致本地开发环境“失联”
示例片段:
<virtualhost>
DocumentRoot "C:/xampp/htdocs/myproject"
ServerName myapp.local
ServerAlias www.myapp.local
<directory>
Require all granted
</directory></virtualhost>
修改系统 hosts 文件完成域名本地解析
Windows 下编辑 C:WindowsSystem32driversetchosts(需管理员权限保存),Linux/macOS 下是 /etc/hosts。添加一行:
127.0.0.1 myapp.local
注意:
- 不能有
http://或端口号,只写 IP + 域名 - 同一行不能多个域名,每个域名单独一行
- 改完 hosts 不需要重启任何服务,但浏览器缓存可能延迟生效,可尝试
ipconfig /flushdns(Windows)或sudo dscacheutil -flushcache(macOS) - 如果用
.dev或.app这类现代 TLD,Chrome/Edge 会强制 HTTPS 重定向,建议统一用.local或.test(后者是 IETF 官方推荐的测试域名)
验证配置并排查常见 403/404 错误
启动 Apache 后,在浏览器访问 http://myapp.local。出错时优先看 Apache 错误日志:XAMPPpachelogserror.log,比浏览器提示更准。
典型问题和对应动作:
-
403 Forbidden:大概率是块里缺Require all granted,或路径权限没放开;XAMPP 2.4+ 版本不再认Allow from all -
404 Not Found:检查DocumentRoot路径是否拼错、大小写是否一致(Windows 不敏感但养成习惯)、目录是否存在且含index.html或index.php - 页面空白或下载 PHP 文件:PHP 模块没启用,回
httpd.conf确认LoadModule php_module modules/libphp.so(Linux/macOS)或LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"(Windows)已取消注释 - 修改后 Apache 启动失败:运行
XAMPPpacheinhttpd.exe -t(命令行下)验证配置语法,它会明确告诉你哪一行出错
虚拟主机本身不难,难的是三处配置(httpd.conf → httpd-vhosts.conf → hosts)必须全部对齐,漏一环就白配。尤其是新手常忽略 hosts 文件权限或 Apache 配置未重载,反复刷新浏览器前,先看 error.log。










