一、核心原理
在每个
<VirtualHost> 内部,单独写一套 <Directory> 配置,只对当前网站生效。最常用的 3 种权限:
- 允许所有人访问(公开网站)
- 禁止所有人访问(私密目录)
- 需要账号密码才能访问(后台 / 私密文件)
二、完整配置示例(直接用)
下面是 2 个虚拟主机 + 完全不同的权限,你照着改路径即可。
1. 虚拟主机 1:完全公开(所有人可访问)
apache
<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot "D:/xampp/htdocs/site1"
# 独立目录权限:公开访问
<Directory "D:/xampp/htdocs/site1">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted # 允许所有人访问
</Directory>
</VirtualHost>
2. 虚拟主机 2:私密权限(仅自己 IP 可访问)
apache
<VirtualHost *:8080>
ServerName www.site2.com
DocumentRoot "D:/xampp/htdocs/site2"
# 独立目录权限:仅允许你的IP访问
<Directory "D:/xampp/htdocs/site2">
AllowOverride All
Require ip 127.0.0.1 # 只允许本机
Require ip 192.168.1.100 # 只允许你的电脑IP
</Directory>
</VirtualHost>
三、4 种最常用权限(直接复制)
1. 公开访问(默认)
apache
Require all granted
2. 禁止所有人访问
apache
Require all denied
3. 仅允许指定 IP 访问(最安全)
apache
Require ip 127.0.0.1
Require ip 192.168.1.100
4. 需要账号密码登录(HTTP 认证)
apache
AuthType Basic
AuthName "请登录"
AuthUserFile "D:/xampp/apache/conf/.htpasswd"
Require valid-user
四、关键说明(必看)
-
<Directory>必须写在<VirtualHost>里面这样才是当前虚拟主机独立权限。
-
路径必须和 DocumentRoot 一致
权限才能正确生效。
-
AllowOverride All允许网站目录下的
.htaccess生效(伪静态、自定义错误页都需要它)。 -
OptionsIndexes:允许显示目录文件列表FollowSymLinks:支持软链接(常用)
五、修改后必须重启 Apache
- Windows XAMPP:Stop → Start
- Linux:
bash运行
systemctl restart httpd # CentOS systemctl restart apache2 # Ubuntu
六、最常见错误
-
权限不生效
<Directory>写在了虚拟主机外面,变成全局权限。 -
403 禁止访问
用了
Require all denied或 IP 限制。 -
.htaccess 不生效
没写
AllowOverride All。
总结
- 每个虚拟主机内部单独写
<Directory> - 用
Require设置访问权限 - 路径必须与
DocumentRoot一致 - 重启 Apache 生效