XAMPP 配置域名只需三步,改对三个文件即可生效
在 XAMPP 本地开发环境中配置自定义域名,本质上是让 Apache 虚拟主机(VirtualHost)识别你指定的域名,并让操作系统将该域名解析到本机回环地址 127.0.0.1,完整流程只需修改 httpd.conf、httpd-vhosts.conf 和系统 hosts 文件这三个关键文件,全程约 5 分钟,配置完成后,你可以用 http://yourdomain.com 直接访问本地项目,告别 localhost/项目名 的冗长路径,这对 Laravel、ThinkPHP 等依赖路由根路径的框架尤为重要。
理解配置原理:为什么需要三个文件
在动手操作之前,先厘清请求的完整链路,这能帮你避免 90% 的排错时间:
- hosts 文件:充当“本地 DNS”,当你在浏览器输入域名时,系统优先查询该文件,将域名指向 127.0.0.1,请求才会到达本机的 Apache。
- httpd.conf:Apache 的主配置文件,默认情况下虚拟主机功能是关闭的,需要在这里取消注释以启用
httpd-vhosts.conf。 - httpd-vhosts.conf:定义“哪个域名对应哪个项目目录”,Apache 根据请求头中的 Host 字段,将流量分发到对应的站点根目录。
核心要点:三个文件缺一不可,且修改顺序有讲究先开总开关,再配具体规则,最后做本地解析。
详细配置步骤:从零到访问成功
第一步:启用虚拟主机模块
- 打开 XAMPP 安装目录下的
apache/conf/httpd.conf(通常路径为C:xamppapacheconfhttpd.conf)。 - 搜索
httpd-vhosts.conf,找到以下行并删除行首的 注释符号:
#Include conf/extra/httpd-vhosts.conf
改为:
Include conf/extra/httpd-vhosts.conf
保存文件,Apache 已允许加载虚拟主机配置文件,但还未定义任何规则。
第二步:配置虚拟主机规则
打开 apache/conf/extra/httpd-vhosts.conf,在文件末尾追加以下代码:
<VirtualHost :80> DocumentRoot "C:/xampp/htdocs/myproject" ServerName myproject.test <Directory "C:/xampp/htdocs/myproject"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
参数说明:
DocumentRoot:你的项目在硬盘中的绝对路径,务必使用正斜杠 ,反斜杠会导致路径解析失败。ServerName:你想使用的本地域名,建议使用.test或.local后缀,避免与真实线上域名冲突。<Directory>块:必须显式声明Require all granted,否则 Apache 默认拒绝访问,你会看到 403 Forbidden 错误。
第三步:修改 hosts 文件实现本地解析
- 以管理员身份打开记事本,然后通过“文件 > 打开”访问
C:WindowsSystem32driversetchosts。 - 在文件末尾追加一行:
0.0.1 myproject.test
- 保存文件。无需重启系统,但需要刷新 DNS 缓存(Windows 执行
ipconfig /flushdns,macOS 执行dscacheutil -flushcache)。
第四步:重启 Apache 并验证
在 XAMPP 控制面板中,点击 Apache 的 Stop 再点击 Start,确保配置加载,浏览器访问 http://myproject.test,若能看到项目首页,说明配置成功。
常见问题排查与解决方案
配置后访问出现 403 Forbidden
原因:<Directory> 块中未授权访问,或 DocumentRoot 路径层级过深导致 Apache 无权限遍历父级目录。
解决方案:在 httpd-vhosts.conf 中,除了给项目目录授权外,还需给项目的所有父级目录逐层授权,例如项目在 C:/xampp/htdocs/myproject,则需额外添加:
<Directory "C:/xampp/htdocs">
Require all granted
</Directory>
修改 hosts 后域名仍然跳转到 localhost
原因:浏览器或系统缓存未刷新,或 hosts 文件存在语法错误(如使用了 注释掉了行)。
解决方案:先执行 ipconfig /displaydns 查看 DNS 解析结果,若仍指向旧地址,执行 ipconfig /flushdns 强制刷新,同时检查 hosts 文件末尾是否有空行,部分系统要求最后一行必须以换行符结尾。
Apache 无法启动,报错端口 80 被占用

原因:IIS、Skype 或其他 Web 服务占用了 80 端口。
解决方案:修改 httpd.conf 中的监听端口,将 Listen 80 改为 Listen 8080,并同步修改虚拟主机配置为 <VirtualHost :8080>,访问时使用 http://myproject.test:8080。
进阶优化:多站点管理与 HTTPS 本地化
多站点并行配置
在 httpd-vhosts.conf 中重复添加多个 <VirtualHost> 块,每个块指定不同的 ServerName 和 DocumentRoot 即可。注意:第一个 VirtualHost 会作为默认站点,建议将最常用的项目放在首位,或将一个块配置为:
<VirtualHost :80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
</VirtualHost>
这样访问 localhost 时仍能回到默认目录,避免意外跳转到其他项目。
本地 HTTPS 配置
XAMPP 自带 makecert.bat 脚本可生成自签名证书,执行 C:xamppapachemakecert.bat,按提示输入域名,然后在虚拟主机配置中追加:
<VirtualHost :443>
DocumentRoot "C:/xampp/htdocs/myproject"
ServerName myproject.test
SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>
浏览器会提示证书不受信任,点击“高级 > 继续访问”即可,这能让你在本地提前验证 HTTPS 混合内容、Cookie 安全属性等线上问题。
经验案例:从本地到云端的平滑迁移
我们在用 酷番云 部署一个客户项目时,客户最初在 XAMPP 环境中使用了自定义域名 clientportal.dev。迁移到云服务器时,由于代码中硬编码了大量该域名的绝对路径,导致资源全部 404,这个案例很有代表性,值得开发者注意。
我们的解决方案分三步走:
- 第一步:在酷番云控制台将域名
clientportal.dev的 A 记录解析到服务器 IP,并在 Nginx 或 Apache 中配置相同的 ServerName 和 DocumentRoot 映射。 - 第二步:在本地 XAMPP 的
hosts文件中,将该域名解析改为指向云服务器 IP,实现无缝切换本地代码无需任何改动即可直接请求云端 API。 -

第三步:待所有测试通过后,再将代码中的硬编码域名批量替换为正式域名,利用酷番云提供的对象存储做静态资源托管,大幅降低服务器带宽压力。
核心经验:在本地配置域名时,务必使用与线上一致的完整域名结构(如 api.clientportal.dev 而非 clientportal.dev/api),避免在代码中混用相对路径与绝对路径,这样在迁移时,只需改动 hosts 指向和服务器虚拟主机配置,代码零改动即可完成环境切换。
相关问答模块
问:配置域名后,为什么其他设备(如手机)无法访问我的本地项目?
答:因为你配置的 hosts 解析只在当前电脑生效,若需局域网内其他设备访问,有两种方式:
- 方式一:在手机 hosts 文件中手动添加你电脑的局域网 IP 和域名映射(Android 需 Root,iOS 需越狱,操作门槛较高)。
- 方式二:修改虚拟主机配置中的端口为
0.0.0:80(默认即监听所有网卡),然后在其他设备浏览器中直接访问http://你的局域网IP:端口,但这种方式无法使用自定义域名,只能通过 IP 访问。
更专业的做法是使用内网穿透工具,或在本地搭建 DNS 服务器,但对大多数开发场景来说,方式二已足够。
问:我修改了 httpd-vhosts.conf 并重启 Apache,但所有域名都访问到了同一个项目,为什么?
答:这是因为 Apache 在配置中选取了第一个匹配的 VirtualHost 作为默认站点,如果你访问的域名在虚拟主机中没有对应的 ServerName 匹配项,Apache 会回退到第一个 VirtualHost 配置,解决办法是:
- 确保每个域名都有唯一的
ServerName且拼写正确。 - 将默认的
localhost配置块放在文件首位,作为兜底方案。 - 检查是否在
httpd.conf中重复引入了httpd-vhosts.conf,重复加载会导致配置覆盖,建议只保留一处Include语句。
互动引导:你在配置 XAMPP 虚拟主机时,是否遇到过其他疑难杂症?欢迎在评论区留言,我会逐一回复,如果本文对你有所帮助,可以收藏备用,方便在下次新项目启动时快速查阅。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/736171.html

