一、核心原理
给每个虚拟主机配置 不同的 ServerName(域名),Apache 会自动根据访问的域名,打开对应的网站。
二、3 步完成配置(Windows / Linux 通用)
第 1 步:准备网站目录
先给每个域名建一个独立文件夹,放不同网页。
Windows(XAMPP)
plaintext
D:\xampp\htdocs\site1 → 对应 www.aaa.com
D:\xampp\htdocs\site2 → 对应 www.bbb.com
Linux
bash
运行
mkdir -p /var/www/site1
mkdir -p /var/www/site2
第 2 步:配置虚拟主机(核心)
配置文件位置
- Windows XAMPP:
xampp/apache/conf/extra/http-vhosts.conf - Linux CentOS:
/etc/httpd/conf.d/vhost.conf - Linux Ubuntu:
/etc/apache2/sites-available/000-default.conf
直接复制这段配置(改域名和路径即可)
apache
# 域名1:www.aaa.com
<VirtualHost *:80>
ServerName www.aaa.com
DocumentRoot "D:/xampp/htdocs/site1"
<Directory "D:/xampp/htdocs/site1">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 域名2:www.bbb.com
<VirtualHost *:80>
ServerName www.bbb.com
DocumentRoot "D:/xampp/htdocs/site2"
<Directory "D:/xampp/htdocs/site2">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Linux 版本只需改路径:
apache
DocumentRoot /var/www/site1
第 3 步:重启 Apache
- Windows:XAMPP → Stop → Start
- Linux
bash运行
systemctl restart httpd # CentOS systemctl restart apache2 # Ubuntu
三、本地测试(没有真实域名也能测)
修改本机
hosts 文件,把域名指向本机 IP:Windows
路径:
plaintext
C:\Windows\System32\drivers\etc\hosts
添加:
plaintext
127.0.0.1 www.aaa.com
127.0.0.1 www.bbb.com
Linux/Mac
路径:
plaintext
/etc/hosts
然后浏览器访问:
plaintext
http://www.aaa.com → 网站1
http://www.bbb.com → 网站2
能看到不同页面 = 成功 ✅
四、如果你有真实域名
只需做一步:
把域名解析到你的服务器 IP
- 去域名控制台(阿里云 / 腾讯云)
- 添加 A 记录
- 指向服务器公网 IP
不用改 Apache 配置,直接生效!
五、最常见 3 个问题
- 所有域名打开同一个网站
没写
ServerName(必须写域名) - 访问域名显示 403
缺少
<Directory>权限 - 域名不生效
没重启 Apache / 域名没解析
六、如果你要加 HTTPS(https://)
直接在 443 端口加配置即可:
apache
<VirtualHost *:443>
ServerName www.aaa.com
DocumentRoot "D:/xampp/htdocs/site1"
SSLEngine on
SSLCertificateFile "你的证书.crt"
SSLCertificateKeyFile "你的私钥.key"
</VirtualHost>
总结
- 每个虚拟主机写 不同的 ServerName(域名)
- 每个域名对应 独立的网站目录
- 重启 Apache 完成