如何不修改Apache全局配置覆盖Require all granted规则?
Apache虚拟主机子目录权限覆盖方案
因为Apache的授权规则会继承上级目录配置,且默认以逻辑或的方式叠加,所以要在虚拟主机的子目录配置中先重置规则,再添加访问限制:
- 打开你的虚拟主机配置文件(通常位于
/etc/apache2/sites-available/目录下),针对需要限制的子目录添加以下<Directory>块:<Directory "/var/www/你的子目录完整路径"> # 先重置全局授权规则,拒绝所有访问 Require all denied # 配置认证规则,仅允许合法用户访问 AuthType Basic AuthName "受保护区域" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory> - 执行以下命令创建认证用户(替换
yourusername为实际用户名):sudo htpasswd -c /etc/apache2/.htpasswd yourusername - 重启Apache服务使配置生效:
sudo systemctl restart apache2
关键说明
- 更具体的
<Directory>块配置优先级高于全局/var/www的配置,Require all denied会直接覆盖上级的Require all granted,之后再添加Require valid-user就能确保只有通过认证的用户可访问目标子目录。 - 由于全局设置了
AllowOverride None,所有权限配置必须写在虚拟主机配置文件中,不能使用.htaccess。
内容的提问来源于stack exchange,提问作者Alwitheflow
相关产品推荐
相关产品推荐

