Windows虚拟机中PHP网站将localhost改为自定义域名不生效如何解决
排查步骤
1. 校验hosts配置生效情况
- 确认修改的hosts文件位置正确:若在虚拟机内部访问,修改虚拟机内的hosts;若在Windows宿主系统访问,需修改Windows宿主的hosts(路径为
C:\Windows\System32\drivers\etc\hosts,修改需要管理员权限) - 若为宿主访问虚拟机的场景,hosts内的映射IP不能填127.0.0.1,需要填写虚拟机的内网IP
- 验证hosts生效:打开对应系统的命令行,执行
ping website-name,检查返回的IP是否和你配置的映射IP一致
2. 校验Apache配置合法性
- 确认httpd.conf中vhosts启用规则无注释:检查
Include conf/extra/httpd-vhosts.conf这一行前面没有#注释符 - 验证配置语法:进入Apache的bin目录,执行
httpd -t,只有返回Syntax OK才代表配置语法正确,否则会提示具体错误行和原因 - 确认vhost配置参数正确,参考配置如下:
<VirtualHost *:80> DocumentRoot "你的PHP项目根目录绝对路径" ServerName website-name <Directory "你的PHP项目根目录绝对路径"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
重点检查:端口是否和Apache实际监听端口一致、目录路径是否正确、是否配置了Require all granted权限规则(Apache2.4+未配置会返回403)
- 检查端口占用:执行
netstat -ano | findstr "80"(Windows)或netstat -tunlp | grep 80(Linux虚拟机),确认80端口被Apache进程占用,没有被IIS、Nginx等其他服务抢占
3. 排查网络访问限制
- 若为宿主访问虚拟机的场景,先临时关闭虚拟机防火墙测试,确认是否是防火墙拦截了80端口访问;同时确认虚拟机网络模式为桥接/NAT,宿主和虚拟机网络互通
- 若vhost配置了非80端口(如8080),访问时需要携带端口,格式为
http://website-name:8080
4. 清理缓存验证
使用浏览器无痕模式访问,或提前清除浏览器DNS缓存,避免旧缓存导致访问失败
内容的提问来源于stack exchange,提问作者Robin clave
相关产品推荐
相关产品推荐

