如何将XAMPP配置实现多个域名映射至不同端口的设置?
- 内容介绍
- 文章标签
- 相关推荐
本文共计794个文字,预计阅读时间需要4分钟。
没有添加这一步,www.a.com 或 test.local 基本上不会引导你到本地 Apache,浏览器会直接查询网络 DNS,如果返回 404 或超时。Windows 下的路径是 C:\Windows\System32\drivers\etc\hosts,使用管理员权限的记事本打开,在末尾追加:
127.0.0.1 www.a.com 127.0.0.1 test.local 127.0.0.1 dev.project
每行一个域名,不能有空格或中文注释;改完保存后无需重启系统,但建议清一下浏览器 DNS 缓存(chrome://net-internals/#dns 点 Clear host cache)。
httpd.conf 要显式声明新端口并启用 vhosts
只改 httpd-vhosts.conf 不生效,因为 Apache 默认只监听 80(和 HTTPS 的 443)。打开 D:\xampp\apache\conf\httpd.conf,找到 Listen 80 这一行,在它下面新增你要用的端口:
Listen 80 Listen 8080 Listen 8081 Listen 8090
接着确认虚拟主机配置已启用:搜索 Include conf/extra/httpd-vhosts.conf,确保前面没有 # 注释符。如果被注释了,删掉 # 并保存。
httpd-vhosts.conf 中每个 必须匹配监听端口且含 ServerName
打开 D:\xampp\apache\conf\extra\httpd-vhosts.conf,每个站点对应一个 <VirtualHost *:端口号> 块。关键点:
-
ServerName必须和hosts里写的完全一致(区分大小写、无协议、无路径) -
DocumentRoot路径用正斜杠或双反斜杠,避免单反斜杠被转义 - Apache 2.4+ 必须加
<Directory>段并设Require all granted,否则 403 Forbidden
示例(映射 www.a.com 到 8080,test.local 到 8081):
<VirtualHost *:8080> ServerName www.a.com DocumentRoot "D:/xampp/htdocs/project-a" <Directory "D:/xampp/htdocs/project-a"> Require all granted </Directory> </VirtualHost> <VirtualHost *:8081> ServerName test.local DocumentRoot "D:/xampp/htdocs/project-b" <Directory "D:/xampp/htdocs/project-b"> Require all granted </Directory> </VirtualHost>
重启 Apache 前务必检查语法,否则服务起不来
改完所有配置文件后,别急着点 XAMPP 控制面板的 Restart。先做两件事:
- 在命令行运行
D:\xampp\apache\bin\httpd.exe -t,输出Syntax OK才安全 - 如果报错,错误信息里通常带具体行号(如
Invalid command 'Require', perhaps misspelled...),说明用了 2.2 语法但实际是 2.4+ 版本
常见坑:Order Deny,Allow 和 Allow from all 在 Apache 2.4+ 已废弃,必须换 Require all granted;NameVirtualHost *:8080 这类旧指令在新版中也不需要,删掉反而更稳。
端口冲突比想象中频繁——尤其是 8080 常被 Docker、Java 应用或另一套 XAMPP 占用,用 netstat -ano | findstr :8080 查进程 ID,再用任务管理器结束对应 PID。
本文共计794个文字,预计阅读时间需要4分钟。
没有添加这一步,www.a.com 或 test.local 基本上不会引导你到本地 Apache,浏览器会直接查询网络 DNS,如果返回 404 或超时。Windows 下的路径是 C:\Windows\System32\drivers\etc\hosts,使用管理员权限的记事本打开,在末尾追加:
127.0.0.1 www.a.com 127.0.0.1 test.local 127.0.0.1 dev.project
每行一个域名,不能有空格或中文注释;改完保存后无需重启系统,但建议清一下浏览器 DNS 缓存(chrome://net-internals/#dns 点 Clear host cache)。
httpd.conf 要显式声明新端口并启用 vhosts
只改 httpd-vhosts.conf 不生效,因为 Apache 默认只监听 80(和 HTTPS 的 443)。打开 D:\xampp\apache\conf\httpd.conf,找到 Listen 80 这一行,在它下面新增你要用的端口:
Listen 80 Listen 8080 Listen 8081 Listen 8090
接着确认虚拟主机配置已启用:搜索 Include conf/extra/httpd-vhosts.conf,确保前面没有 # 注释符。如果被注释了,删掉 # 并保存。
httpd-vhosts.conf 中每个 必须匹配监听端口且含 ServerName
打开 D:\xampp\apache\conf\extra\httpd-vhosts.conf,每个站点对应一个 <VirtualHost *:端口号> 块。关键点:
-
ServerName必须和hosts里写的完全一致(区分大小写、无协议、无路径) -
DocumentRoot路径用正斜杠或双反斜杠,避免单反斜杠被转义 - Apache 2.4+ 必须加
<Directory>段并设Require all granted,否则 403 Forbidden
示例(映射 www.a.com 到 8080,test.local 到 8081):
<VirtualHost *:8080> ServerName www.a.com DocumentRoot "D:/xampp/htdocs/project-a" <Directory "D:/xampp/htdocs/project-a"> Require all granted </Directory> </VirtualHost> <VirtualHost *:8081> ServerName test.local DocumentRoot "D:/xampp/htdocs/project-b" <Directory "D:/xampp/htdocs/project-b"> Require all granted </Directory> </VirtualHost>
重启 Apache 前务必检查语法,否则服务起不来
改完所有配置文件后,别急着点 XAMPP 控制面板的 Restart。先做两件事:
- 在命令行运行
D:\xampp\apache\bin\httpd.exe -t,输出Syntax OK才安全 - 如果报错,错误信息里通常带具体行号(如
Invalid command 'Require', perhaps misspelled...),说明用了 2.2 语法但实际是 2.4+ 版本
常见坑:Order Deny,Allow 和 Allow from all 在 Apache 2.4+ 已废弃,必须换 Require all granted;NameVirtualHost *:8080 这类旧指令在新版中也不需要,删掉反而更稳。
端口冲突比想象中频繁——尤其是 8080 常被 Docker、Java 应用或另一套 XAMPP 占用,用 netstat -ano | findstr :8080 查进程 ID,再用任务管理器结束对应 PID。

