必须三步全对:改httpd.conf启用虚拟主机、改httpd-vhosts.conf定义域名与路径并配置Directory权限、改hosts文件做本地解析;漏任一步均导致404或跳回localhost。

能配,但必须三步全对:改 httpd.conf 启用虚拟主机、改 httpd-vhosts.conf 定义域名与路径、改系统 hosts 文件做本地解析。漏任何一步,浏览器都会 404 或直接跳回 localhost。
必须先启用 httpd-vhosts.conf 加载
很多人改完 httpd-vhosts.conf 没反应,根本原因是 Apache 根本没读它。打开 XAMPP\apache\conf\httpd.conf,搜索:
Include conf/extra/httpd-vhosts.conf
确保这行前面没有 #;如果有,删掉。保存后重启 Apache —— 这不是可选项,是启动虚拟主机的开关。
常见错误现象:
- 所有域名(包括
localhost)都指向第一个VirtualHost的DocumentRoot - 改了
httpd-vhosts.conf但访问test.local仍显示 XAMPP 默认页
httpd-vhosts.conf 中的 VirtualHost 必须带完整权限控制
只写 DocumentRoot 和 ServerName 是不够的。Apache 2.4+ 默认拒绝所有目录访问,必须显式放行。正确结构示例:
<virtualhost>
DocumentRoot "D:/xampp/htdocs/myapp"
ServerName api.dev.local
<directory>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</directory></virtualhost>
关键点:
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
-
DocumentRoot必须是绝对路径,结尾不加斜杠 -
<directory></directory>路径必须和DocumentRoot完全一致(大小写、斜杠方向都要对) - 别用
Allow from all—— 这是 Apache 2.2 语法,XAMPP 通常带的是 2.4,会报Invalid command 'Allow' - 如果项目含 PHP,
AllowOverride All才能让.htaccess生效
Windows hosts 文件必须用管理员权限保存
路径是 C:\Windows\System32\drivers\etc\hosts,但直接双击编辑常因权限不足导致保存失败,看似改了实则没写入。正确做法:
- 用记事本或 VS Code「以管理员身份运行」,再通过文件 → 打开选中该
hosts文件 - 在末尾添加两行(注意空格,不是 Tab):
127.0.0.1 frontend.dev.local 127.0.0.1 api.dev.local
验证是否生效:
- 命令行执行
ping frontend.dev.local,应返回Reply from 127.0.0.1 - 若提示“找不到主机”,说明
hosts没生效,大概率是没用管理员权限保存 - 改完 hosts 不需要重启 Apache,但浏览器可能缓存 DNS,建议清空 DNS 缓存:
ipconfig /flushdns
二级域名配置最容易被忽略的兼容性细节
Chrome 和 Edge 从 2022 年起默认禁止使用 .dev、.app 等公共后缀作本地域名,会强制跳 HTTPS 并报错。所以:
- 别用
myapp.dev,改用myapp.test、myapp.local或myapp.localhost -
.localhost是 IETF 标准保留域名,无需证书且所有浏览器都支持纯 HTTP - 如果用了
.dev却打不开,看地址栏是否自动变成https://myapp.dev—— 这就是 HSTS 强制升级导致的 - 多个二级域名共存时,
ServerAlias可追加别名,比如:ServerAlias www.api.dev.local api.dev.local,但主域名仍以ServerName为准
真正卡住人的往往不是语法,而是 hosts 没写对、httpd.conf 没解注、或者权限没给够 —— 这三处检查完,95% 的二级域名问题就解决了。










