XAMPP 配置虚拟主机是本地开发环境模拟多站点运营的必备技能,无需额外安装软件,仅需修改 Apache 的 httpd-vhosts.conf 文件并同步系统 hosts,即可让不同域名指向不同项目目录,实现开发与生产环境的高度一致,掌握这一方法,能显著提升多项目并行开发的效率,并避免因路径混乱导致的代码错误。
什么是虚拟主机与为何需要配置
虚拟主机(Virtual Host)是一种让单一服务器同时运行多个网站的技术,在 XAMPP 中,默认只有一个根目录(通常是 htdocs),所有项目都堆叠在一起,通过子目录访问既不优雅,也难以模拟真实域名,配置虚拟主机后,你可以用 www.project1.local 访问第一个项目,用 www.project2.local 访问第二个项目,每个项目拥有独立的域名、独立的根目录,更贴近线上部署结构。
配置前的准备工作
- 确保 XAMPP 已正确安装,Apache 服务运行正常。
- 确认你的项目文件夹已放置在合适位置,
D:ProjectsProject1、D:ProjectsProject2。 - 以管理员权限打开文本编辑器(如 Notepad++),因为后续需要修改系统文件。
核心配置步骤(基于 Apache 2.4 + Windows)
开启虚拟主机模块
找到 XAMPP 安装目录下的 apacheconfhttpd.conf,搜索以下行:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
去掉前面的 号,保存文件,这一步是告诉 Apache 加载虚拟主机配置文件。
配置 httpd-vhosts.conf
打开 apacheconfextrahttpd-vhosts.conf,在文件末尾添加如下内容:
<VirtualHost :80>
DocumentRoot "D:/Projects/Project1"
ServerName www.project1.local

<Directory "D:/Projects/Project1">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost :80>
DocumentRoot "D:/Projects/Project2"
ServerName www.project2.local
<Directory "D:/Projects/Project2">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
关键点:DocumentRoot 一定要使用绝对路径,路径中的斜杠可以是正斜杠或双反斜杠。Require all granted 确保 Apache 2.4 以上版本允许访问该目录,如果你需要支持 SSL,再复制一份并改为 :443,并添加 SSLEngine on 等配置。
修改系统 hosts 文件
以管理员身份打开 C:WindowsSystem32driversetchosts,在末尾添加:
0.0.1 www.project1.local
127.0.0.1 www.project2.local
这样浏览器才能将域名解析到本地。hosts 文件无法保存,请检查文件属性是否为只读,或使用编辑器以管理员权限打开。
重启 Apache 服务
在 XAMPP 控制面板中停止再启动 Apache,或通过 apachebinhttpd.exe -k restart 命令重启,此时在浏览器中输入 http://www.project1.local,应能看到对应项目的首页。
常见问题与解决方案
- 403 Forbidden 错误:通常是因为
Directory配置中缺少Require all granted,或用户无权限访问该目录,请检查路径是否有效,并确认文件夹安全性设置。 - 无法解析域名:确认 hosts 文件中的 IP 是
0.0.1,且域名没有拼写错误,有时浏览器缓存会导致旧解析,可尝试清除 DNS 缓存(ipconfig /flushdns)。 - 端口被占用

:80 端口被其他程序(如 IIS、Skype)占用,可在
httpd.conf中修改Listen 80为其他端口(如Listen 8080),然后通过http://www.project1.local:8080访问。
酷番云经验案例:从本地到生产的一键迁移
笔者在使用酷番云云服务器时,发现其部署环境与 XAMPP 虚拟主机配置模式高度兼容。常见做法是:先在本地 XAMPP 中配置好所有虚拟主机,开发完成后,将项目文件打包上传至酷番云服务器,然后在服务器上利用 Apache 或 Nginx 复制相同的虚拟主机配置,仅需修改 ServerName 为真实域名,并指向对应的云存储路径。 酷番云提供的“一键部署镜像”功能,甚至可以预装 LAMP 环境并预留虚拟主机配置文件模板,使本地到线上的迁移时间缩短至 10 分钟以内,这种“本地虚拟主机 -> 云端镜像部署”的流程,避免了因环境差异导致的 bug,也便于团队协作时的版本管理。
进阶优化:多版本 PHP 与虚拟主机绑定
XAMPP 本身支持多 PHP 版本,但虚拟主机默认共用同一 PHP 版本,若需让不同站点使用不同 PHP 版本,可在 VirtualHost 内添加:
<VirtualHost :80>
...
<FilesMatch .php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</VirtualHost>
并将对应的 PHP-FPM 服务绑定到不同端口,这在高版本 XAMPP 中可通过内置的 PHP 版本切换工具实现,但手动配置能让你更深入理解运行机制,特别适合对性能有严格要求的开发者。
相关问答模块
配置虚拟主机后,为什么访问 localhost 会变成第一个虚拟主机的项目?
答: 这是正常现象,因为 Apache 默认会匹配第一个虚拟主机作为“默认主机”,如果你希望

localhost 仍然指向 XAMPP 的默认 htdocs 目录,需要在 httpd-vhosts.conf 的最前面添加一个专门为 localhost 配置的虚拟主机,
<VirtualHost :80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
<Directory "C:/xampp/htdocs">
Require all granted
</Directory>
</VirtualHost>
这样 localhost 就会独立于其他虚拟主机,保持原样。
我想让虚拟主机支持 HTTPS,应该怎么做?
答: 首先确保 XAMPP 的 SSL 模块已启用(httpd.conf 中 Include conf/extra/httpd-ssl.conf 未被注释),然后在 httpd-vhosts.conf 中为每个域名添加一个 :443 的虚拟主机,并指定证书路径,最简单的做法是使用 XAMPP 自带的 自签名证书(位于 apacheconfssl.crt 和 ssl.key),配置示例如下:
<VirtualHost :443>
DocumentRoot "D:/Projects/Project1"
ServerName www.project1.local
SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
<Directory "D:/Projects/Project1">
Require all granted
</Directory>
</VirtualHost>
注意:自签名证书仅适合本地开发,生产环境应使用酷番云等云服务商提供的免费或付费 SSL 证书,配置完成后,重启 Apache 即可通过 https://www.project1.local 访问。
互动区
如果你在配置过程中遇到任何问题,或者有更高效的多站点管理技巧,欢迎在评论区留言分享,你的经验可能会帮助到其他正在跨越本地开发与线上部署鸿沟的开发者。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/689644.html


评论列表(1条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于版本的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!