在XAMPP中配置域名,本质是修改Apache的虚拟主机配置文件并同步Windows的hosts文件,将本地项目绑定到自定义域名(如myproject.local),整个过程约需5分钟,无需额外安装任何插件。
很多人在本地开发时,面对长长的localhost/项目名路径总会觉得别扭,尤其当项目多了以后,不仅难以区分,还容易在调试Cookie、跨域接口时踩坑,给XAMPP配上专属域名,就像给每个项目发了一张独立门牌号,访问时既清晰又专业,下面这套配置方法,我在Windows和macOS上都验证过,按步骤操作基本不会出问题。
配置前需要准备什么
先确认你的XAMPP安装目录,Windows默认在C:xampp,macOS通常在/Applications/XAMPP/xamppfiles,配置过程需要修改三个文件:httpd-vhosts.conf、httpd.conf和系统hosts文件,建议先用文本编辑器打开httpd-vhosts.conf看一眼,确认Apache是否已经启用了虚拟主机模块。
检查Apache虚拟主机模块是否开启
打开httpd.conf,搜索“Include conf/extra/httpd-vhosts.conf”这一行,确认前面没有分号,如果有分号,删掉它并保存,这一步是配置域名的前提,很多新手卡住就是因为忘了取消注释,修改后需要重启Apache才能生效。
第一步:修改hosts文件,让域名指向本地
hosts文件的作用是把域名解析到指定IP,这里0.0.1代表本机,以Windows 10/11为例,路径是C:WindowsSystem32driversetchosts,用记事本以管理员身份打开,在文件末尾添加一行:
0.0.1 myproject.local
如果你还想配置多个域名,就继续往下加,每行一个域名,macOS用户打开终端执行sudo nano /etc/hosts,同样添加这一行,保存后,可以在命令行里执行ping myproject.local,如果看到0.0.1的回复,说明hosts生效了。
为什么域名后缀推荐用.local
业内比较常见的做法是使用.local或.test作为本地开发域名后缀。.com之类的真实后缀容易和线上域名混淆,而且浏览器可能强制跳转HTTPS。.local不会被公网DNS解析,只在本机有效,安全性更高,如果你的项目需要模拟真实环境,也可以用dev.myproject.com这种子域名形式,但记得别在线上部署时漏改。
第二步:配置Apache虚拟主机,让域名指向项目目录
打开httpd-vhosts.conf文件,你会看到默认的注释示例,在文件末尾添加以下内容:
<VirtualHost :80>
ServerName myproject.local
DocumentRoot "C:/xampp/htdocs/myproject"
<Directory "C:/xampp/htdocs/myproject">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

这段配置的意思是:当访问myproject.local时,Apache会从C:/xampp/htdocs/myproject目录读取文件,注意路径中的斜杠要统一用正斜杠,反斜杠在Apache配置里容易出错。Require all granted是必须的,否则会返回403禁止访问。
保留localhost访问
配置虚拟主机后,原来的localhost会失效,因为Apache默认把所有请求都交给了虚拟主机,解决方法是在httpd-vhosts.conf里再添加一个localhost的映射:
<VirtualHost :80>
ServerName localhost
DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
这样localhost和myproject.local都能正常访问,如果只配了项目域名而忘了localhost,你可能会发现其他项目都打不开了,这是虚拟主机配置时最常遇到的问题。
第三步:重启Apache并验证效果
打开XAMPP控制面板,在Apache模块点击“Stop”再点击“Start”,或者直接点击“Restart”,重启后,浏览器地址栏输入http://myproject.local,如果页面正常显示,说明域名配置成功,如果打不开,先排查两个地方:
- 端口是否被占用,Apache默认监听80端口,如果被IIS或Nginx占用,需要先停掉其他服务。
- hosts文件是否保存成功,有些编辑器会自动添加
.txt后缀,导致文件没生效。
常见错误:403 Forbidden
出现403多半是目录权限问题,检查<Directory>块里是否写了Require all granted,项目文件夹的读写权限也被Apache严格限制,Windows下右键文件夹属性,确保Users组有读取权限,macOS下要检查SIP是否拦截了Apache对/Users目录的访问,通常把项目放在htdocs里最稳妥。
使用域名后,如何访问PHPMyAdmin或其他工具
配置域名后,http://myproject.local/phpmyadmin不一定能直接打开,因为PHPMyAdmin默认只允许从localhost访问,解决办法是在httpd-vhosts.conf的虚拟主机块里,单独给phpMyAdmin目录加一个别名:
Alias /phpmyadmin "C:/xampp/phpMyAdmin"
<Directory "C:/xampp/phpMyAdmin">
Require all granted
</Directory>
重启Apache后,通过http://myproject.local/phpmyadmin就能打开数据库管理界面了,不过从安全角度看,本地开发环境无所谓,但如果你的项目暴露在局域网中,建议不要开这个别名。
多站点配置:一个Apache跑多个域名

当你有多个项目需要同时开发时,不需要启动多个XAMPP,在httpd-vhosts.conf里写多个<VirtualHost>块即可,每个块对应一个ServerName和一个DocumentRoot。
<VirtualHost :80>
ServerName blog.local
DocumentRoot "C:/xampp/htdocs/blog"
...
</VirtualHost>
<VirtualHost :80>
ServerName shop.local
DocumentRoot "C:/xampp/htdocs/shop"
...
</VirtualHost>
注意每个块都要有独立的<Directory>配置,修改完hosts文件,把多个域名都指向0.0.1,重启Apache就能同时访问,这种模式特别适合WordPress多站点开发者,每个站点一套独立域名,互不干扰,据统计,大部分本地开发环境的多站点配置都采用这种方式,比用目录路径区分更清爽。
如何配置HTTPS域名(本地SSL证书)
如果你需要测试PWA、Service Worker或微信支付等必须HTTPS的功能,本地域名也需要配置SSL,XAMPP自带OpenSSL,但默认没有开启SSL虚拟主机,先检查httpd-ssl.conf是否被启用,然后在httpd-vhosts.conf里添加:
<VirtualHost :443>
ServerName myproject.local
DocumentRoot "C:/xampp/htdocs/myproject"
SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>
这里的证书是XAMPP自带的测试证书,浏览器会提示不安全,但本地开发足够用了,要消除浏览器警告,需要自己生成CA证书并导入系统信任区,这一步相对复杂,行业共识认为,本地HTTPS配置的收益主要在于环境一致性,不必为了正式证书折腾太久,直接用自签名证书即可。
备份与迁移配置的技巧
每次配置域名后,建议把httpd-vhosts.conf和hosts文件的改动单独备份,尤其当你要升级XAMPP或迁移到另一台电脑时,直接覆盖这两个文件再调整路径,能省大量时间,路径统一用相对htdocs的写法,迁移时只需要改DocumentRoot一行即可。
如果你的项目使用了框架(比如Laravel或ThinkPHP),框架本身可能还有.env文件里配置APP_URL,需要改成http://myproject.local,否则生成的路由链接还是会指向localhost。
为什么不让域名带端口号
有些人为了图省事,直接访问http://localhost:8080/项目名,这在单个项目时没问题,但模拟线上环境时,端口号会暴露开发服务器细节,配置域名后,浏览器地址栏干干净净,Cookie和Session作用域都按域名隔离,调试登录态更符合生产环境,使用域名还有一个隐好处线上代码里的绝对路径不用改,本地和线上保持一致,减少部署时的环境差异。

配置域名时最常见的坑
- hosts文件被安全软件拦截:360或电脑管家可能阻止修改hosts,临时退出或添加信任即可。
- Apache端口被占用:运行
netstat -ano | findstr :80查看占用进程,结束掉那个PID。 - 缓存未刷新:浏览器或系统DNS缓存可能让域名解析不生效,用
ipconfig /flushdns清理。 - 路径包含中文或空格:Apache对包含中文的路径支持不稳定,尽量保持全英文路径。
配置域名后,项目路径如何调用
在PHP代码中,拿Laravel举例,url('/login')会基于.env里的APP_URL生成完整链接,把APP_URL改成http://myproject.local,所有路由就都走新域名了,对于原生PHP项目,如果你用的相对路径,基本不用改代码,如果用了$_SERVER['HTTP_HOST']来拼接链接,域名变更会自动适配,无需担心。
问题解答:XAMPP配置域名后访问很慢或不显示样式
打开浏览器开发者工具,查看Console报错,如果是Failed to load resource,说明资源文件路径是绝对路径指向了localhost,检查项目里的config.php或数据库中的site_url字段,把域名替换为新域名,还有情况是Apache开启了.htaccess重写,但AllowOverride All没写对,导致伪静态规则没生效,页面就会出现纯HTML无CSS的效果。
相关问答
XAMPP配置域名和Vhost有什么区别?
XAMPP配置域名指的是将自定义域名解析到本地,Apache的Vhost(虚拟主机)则是让这个域名对应到指定项目目录,两者是配合关系:hosts解决“域名去哪台服务器”,Vhost解决“这台服务器上哪个目录”,只改hosts不改Vhost,域名访问的仍是htdocs根目录;只配Vhost不改hosts,浏览器根本解析不了这个域名,所有本地域名配置都必须同时做这两件事。
用XAMPP配置域名,需要修改云服务器吗?
不需要,这是本地开发环境配置,与云服务器完全无关,云服务器上的域名解析由DNS服务商控制,Apache配置路径也类似但环境不同,如果你后期要上线,只需要把代码上传到服务器,再在服务器Apache中配置对应的ServerName为真实域名即可,本地配置不会影响线上站点。
配置域名后,XAMPP启动不了怎么办?
优先检查80端口是否被其他程序占用,可以用netstat -ano | findstr :80查看PID,然后在任务管理器结束对应进程,若端口空闲但仍启动失败,打开httpd.conf查看是否有语法错误,运行C:xamppapachebinhttpd.exe -t可以测试配置,命令行会提示具体出错行数,改完再启动就能解决。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/767675.html

