在PHP网站开发过程中,经常需要在同一台服务器上部署多个不同的站点,这时候配置Apache虚拟主机就是非常实用的解决方案。通过虚拟主机配置,我们可以让不同的域名或端口指向不同的网站目录,实现多站点共存。下面我们就详细讲解PHP网站设计中配置Apache虚拟主机的完整步骤。

一、配置前的准备工作
在开始配置之前,需要确保已经完成以下基础环境搭建:
- 已经正确安装Apache服务器,并且可以正常启动
- 已经安装PHP环境,并且Apache已经正确加载PHP模块
- 准备好要部署的PHP网站项目目录,比如我们这里准备两个测试目录:
D:/php_sites/site1和D:/php_sites/site2 - 如果是本地测试,需要提前规划好要绑定的测试域名,比如
site1.test和site2.test
二、Windows环境下配置步骤
1. 开启Apache虚拟主机扩展
首先找到Apache的配置文件httpd.conf,一般位于Apache安装目录的conf文件夹下。用文本编辑器打开该文件,搜索httpd-vhosts.conf,找到如下配置行:
#Include conf/extra/httpd-vhosts.conf
去掉前面的#注释符号,开启虚拟主机配置扩展:
Include conf/extra/httpd-vhosts.conf
2. 修改虚拟主机配置文件
打开Apache安装目录下conf/extra/httpd-vhosts.conf文件,清空或注释掉原有的示例配置,添加我们自己的虚拟主机规则。以配置两个PHP站点为例:
<VirtualHost *:80>
# 绑定的域名
ServerName site1.test
# 站点根目录,注意路径用正斜杠
DocumentRoot "D:/php_sites/site1"
# 目录权限配置
<Directory "D:/php_sites/site1">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 错误日志和访问日志路径(可选)
ErrorLog "logs/site1-error.log"
CustomLog "logs/site1-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerName site2.test
DocumentRoot "D:/php_sites/site2"
<Directory "D:/php_sites/site2">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "logs/site2-error.log"
CustomLog "logs/site2-access.log" common
</VirtualHost>3. 修改本地hosts文件
本地测试时,需要将我们规划的测试域名映射到本地回环地址127.0.0.1。hosts文件位置一般在C:\Windows\System32\drivers\etc\hosts,用管理员权限打开后在末尾添加:
127.0.0.1 site1.test 127.0.0.1 site2.test
4. 重启Apache并测试
修改完配置后,重启Apache服务。然后在两个站点目录下分别创建index.php测试文件,内容如下:
<?php echo "这是site1测试站点"; ?>
打开浏览器访问http://site1.test和http://site2.test,如果分别显示对应的测试内容,说明虚拟主机配置成功。
三、Linux环境下配置步骤
1. 创建虚拟主机配置文件
Linux下Apache的虚拟主机配置一般放在/etc/apache2/sites-available/目录,我们为每个站点创建一个独立的配置文件,比如创建site1.conf:
<VirtualHost *:80>
ServerName site1.test
DocumentRoot /var/www/php_sites/site1
<Directory /var/www/php_sites/site1>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1-error.log
CustomLog ${APACHE_LOG_DIR}/site1-access.log combined
</VirtualHost>2. 启用虚拟主机配置
使用Apache的a2ensite命令启用我们创建的配置文件:
sudo a2ensite site1.conf sudo a2ensite site2.conf
然后重启Apache服务:
sudo systemctl restart apache2
3. 配置hosts映射(本地测试场景)
如果是本地Linux环境测试,同样需要修改/etc/hosts文件,添加域名映射:
127.0.0.1 site1.test 127.0.0.1 site2.test
四、常见配置问题排查
配置过程中如果遇到站点无法访问的问题,可以按照以下思路排查:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 访问域名提示无法连接 | Apache未启动,或80端口被占用 | 检查Apache运行状态,关闭占用80端口的其他程序 |
| 提示权限不足无法访问目录 | 站点目录权限设置不正确 | 给站点目录设置正确的读写权限,或者调整<Directory>中的权限配置 |
| 域名访问跳转到默认站点 | 虚拟主机配置未生效,或hosts映射未添加 | 检查虚拟主机配置文件是否正确加载,确认hosts文件映射是否生效 |
掌握Apache虚拟主机的配置方法,能极大提升PHP网站部署的灵活性,不管是本地开发测试还是服务器上多站点部署,都能轻松应对。