根本原因是WampServer 3.4.0默认注释了Include conf/extra/httpd-vhosts.conf且<Directory>块缺失Require all granted,导致虚拟主机配置未加载或被拒绝访问。

重装 WampServer 3.4.0 后,之前配置的虚拟目录(VirtualHost)无法访问,页面直接 404 或跳转到默认首页——根本原因不是配置丢了,而是 Apache 默认关闭了 vhost_alias 模块,且 httpd-vhosts.conf 文件未被主配置主动加载。
确认 httpd-vhosts.conf 是否被 Apache 加载
WampServer 3.4.0 默认注释掉了加载虚拟主机配置的行,即使你把配置写进 D:wamp64inpachepache2.4.58confextrahttpd-vhosts.conf(路径依实际 Apache 版本略有不同),它也不会生效。
- 打开
D:wamp64inpachepache2.4.58confhttpd.conf - 搜索
httpd-vhosts.conf,找到这行:#Include conf/extra/httpd-vhosts.conf - 去掉开头的
#,改为:Include conf/extra/httpd-vhosts.conf - 保存后,必须右键托盘图标 → Restart All Services(仅重启 Apache 不够,MySQL 也会被顺带重载)
检查 VirtualHost 配置中 DocumentRoot 路径权限
WampServer 3.4.0 默认启用了 Apache 2.4 的严格访问控制,<Directory> 块里没写 Require all granted 就会拒绝所有请求,表现为 403 Forbidden 或静默 404(取决于日志级别)。
- 确保每个
<VirtualHost>内都配了对应<Directory "D:/myproject">块 -
<Directory>块内必须包含:Require all granted(不是Require all denied,也不是旧版的Allow from all) - 路径用正斜杠
/或双反斜杠\,避免单反斜杠被解析为转义字符 - 示例片段:
<VirtualHost *:80><br> ServerName myapp.test<br> DocumentRoot "D:/myproject"<br> <Directory "D:/myproject"><br> Require all granted<br> AllowOverride All<br> </Directory><br></VirtualHost>
验证 hosts 文件是否映射到 127.0.0.1
WampServer 本身不处理 DNS,myapp.test 这类自定义域名必须靠系统 hosts 文件硬绑定,重装后这个文件不会自动恢复。
立即学习“PHP免费学习笔记(深入)”;
- 用管理员权限打开
C:WindowsSystem32driversetchosts - 添加一行:
127.0.0.1 myapp.test(注意无空格、无www.前缀,除非你在ServerName里也写了) - 改完不用重启系统,但浏览器要清 DNS 缓存:命令行执行
ipconfig /flushdns - 测试是否生效:命令行运行
ping myapp.test,应返回127.0.0.1
Apache 日志里看不到错误?先开 ErrorLog 并设 LogLevel
很多配置失败时界面没报错,是因为 Apache 默认只记录严重错误。不打开详细日志,你根本不知道 DocumentRoot 路径是否存在、模块是否加载失败、还是语法写错了。
- 在你的
<VirtualHost>块里加上:ErrorLog "D:/wamp64/logs/myapp_error.log" - 同时在
httpd.conf顶部附近找LogLevel行,改成:LogLevel warn(或临时设为debug,但会产生大量日志) - 重启服务后,访问一次出问题的地址,立刻去看
myapp_error.log—— 最常见的就是File does not exist(路径错)或Permission denied(权限没开)
重装后最容易忽略的是 httpd.conf 里那行被注释掉的 Include,以及 <Directory> 块里缺失的 Require all granted。这两个点不手动补上,其他所有配置都白搭。



















