XAMPP新建虚拟主机后访问异常:mySite.test失效且localhost被替换
虚拟主机配置异常排查(XAMPP本地环境)
配置背景
尝试为本地测试环境创建新虚拟主机,网站文件存于htdocs/mysite目录,已完成以下配置:
Apache虚拟主机配置(httpd-vhosts.conf)
<VirtualHost *:80> DocumentRoot "C:/xampp/htdocs/mySite" ServerName mySite.test ServerAlias *.mySite.test </VirtualHost> <VirtualHost *:443> DocumentRoot "C:/xampp/htdocs/mySite" ServerName mySite.test ServerAlias *.mySite.test SSLEngine on SSLCertificateFile "crt/mySite.test/server.crt" SSLCertificateKeyFile "crt/mySite.test/server.key" </VirtualHost>
hosts文件配置
127.0.0.1 mySite.test
异常现象
- 访问
mySite.test无法找到页面 - 访问
mySite.test.localhost可正常打开站点 - 原
localhost无法正常访问,访问localhost/dashboard会跳转到mySite站点
问题根源及解决方案
1. 缺失默认localhost虚拟主机配置
Apache加载虚拟主机配置后,会优先匹配第一个符合条件的主机条目。你的配置没有保留默认的localhost主机规则,导致所有未匹配到的请求(包括localhost)都被第一个虚拟主机(mySite.test)接管,这就是localhost跳转异常的核心原因。
修复操作:
在httpd-vhosts.conf最顶部添加默认localhost的虚拟主机配置:
<VirtualHost *:80> DocumentRoot "C:/xampp/htdocs" ServerName localhost ServerAlias localhost </VirtualHost> <VirtualHost *:443> DocumentRoot "C:/xampp/htdocs" ServerName localhost ServerAlias localhost SSLEngine on # 使用XAMPP自带SSL证书,路径对应Apache配置目录 SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key" </VirtualHost>
2. 验证DocumentRoot路径与权限
- 确认
C:/xampp/htdocs/mySite目录实际存在,尽量保持配置中的目录名与实际目录名大小写一致(Windows系统虽不敏感,但统一可避免潜在问题)。 - 确保Apache对该目录有读取权限,XAMPP默认权限无需调整,若手动修改过目录权限需重置为默认。
3. 确认httpd-vhosts.conf已启用
检查Apache主配置文件httpd.conf,确保以下行的注释已取消:
# Include conf/extra/httpd-vhosts.conf
去掉行首的#,保证虚拟主机配置文件被正确加载。
4. 清除浏览器缓存测试
浏览器可能缓存了旧的DNS记录或跳转规则,使用隐私窗口访问mySite.test,或手动清除缓存后再测试。
5. 修正SSL证书路径(针对HTTPS访问)
若访问HTTPS协议的mySite.test,需确认证书路径为绝对路径(或相对于Apache配置目录的相对路径),示例:
SSLCertificateFile "C:/xampp/apache/crt/mySite.test/server.crt" SSLCertificateKeyFile "C:/xampp/apache/crt/mySite.test/server.key"
完成以上调整后,重启Apache服务,再次测试所有访问场景即可恢复正常。
内容的提问来源于stack exchange,提问作者J.B.J.
相关产品推荐
相关产品推荐

