Apache使用mod_auth_basic加密的目录在父级页面消失如何解决
Apache受密码保护目录不在父目录列表中显示的解决方法
问题根因
该现象是Apache自动目录索引模块mod_autoindex的默认安全策略导致:默认会过滤掉访问时会返回401(需要认证)、403(禁止访问)的目录/文件,避免泄露受保护资源的存在性,你的密码保护配置本身功能正常。
解决方法
你只需要在对应站点的父目录配置中,给mod_autoindex添加ShowForbidden参数即可,修改步骤如下:
- 打开你的httpd.conf配置文件,找到站点根目录对应的
<Directory>配置块,示例如下(根据你实际的站点根目录路径调整):
<Directory "/var/www/html"> # 原有配置保留,比如开启索引的配置 Options +Indexes AllowOverride None Require all granted # 新增这一行配置 IndexOptions +ShowForbidden </Directory>
- 保存配置文件后,重启Apache服务生效,不同发行版重启命令如下:
- RHEL/CentOS/Fedora系:
systemctl restart httpd - Debian/Ubuntu系:
systemctl restart apache2
补充:使用.htaccess配置的场景
如果你的站点已经开启了AllowOverride All权限,也可以直接在站点根目录的.htaccess文件中添加IndexOptions +ShowForbidden,修改后无需重启Apache即可生效。
效果说明
调整配置后,受密码保护的bla目录就会正常显示在父目录的列表中,用户点击该目录时仍然会触发密码校验,不会降低原有密码保护的安全性。
内容的提问来源于stack exchange,提问作者Jon000z
相关产品推荐
相关产品推荐

