核心是两步:服务端允许覆盖配置 + 目录内放置生效规则;需在httpd.conf中设AllowOverride AuthConfig并重启Apache,再在目录中创建.htaccess写入AuthType Basic等指令实现Basic认证。

直接用 .htaccess 实现目录级访问保护,核心是两步:服务端允许覆盖配置 + 目录内放置生效规则。它不依赖程序逻辑,由 Apache 在请求阶段实时拦截,适合虚拟主机或无服务器管理权限的场景。
前提:确认服务器已启用 .htaccess 支持
Apache 默认禁用该功能。需在主配置文件 httpd.conf 中定位对应目录区块(如 <Directory "/var/www/html">),确保包含:
- AllowOverride AuthConfig(仅启用认证相关指令)或 AllowOverride All(全功能开放)
- 同时检查 AccessFileName 指令是否为默认值
.htaccess;若改过(如设为.config),需按实际文件名创建 - 修改后必须重启 Apache(
sudo systemctl restart apache2或sudo apachectl restart)
基础密码保护:Basic Auth 方式
这是最常用、兼容性最好的方案,浏览器会弹出标准登录框。
- 先用 htpasswd 命令生成密码文件(如
.htpasswd),存放在网站根目录之外的安全路径(如/etc/apache2/.htpasswd),避免被直接下载 - 在要保护的目录中新建
.htaccess,写入:
AuthType Basic AuthName "管理员区域" AuthUserFile /etc/apache2/.htpasswd Require valid-user
说明:AuthName 是登录框标题;Require valid-user 表示任意有效用户均可访问;若只允特定用户,改用 Require user alice bob。
使用tbot机器ID身份文件配合tsh CLI,通过Teleport访问控制SSH登录托管主机或执行远程命令。
限制 IP 访问:精准控制来源
适用于后台入口、测试目录等需白名单访问的场景。
- 在目标目录的
.htaccess中添加:
Order Deny,Allow Deny from all Allow from 192.168.1.100 Allow from 2001:db8::1
注意:Apache 2.4+ 推荐改用新版语法:Require ip 192.168.1.100 或 Require ip 2001:db8::1/64;旧版 Order/Deny/Allow 在新版本中可能失效。
屏蔽敏感文件与类型:防直接暴露
防止 .env、.git、备份文件等被意外访问。
- 禁止访问特定扩展名:
<FilesMatch "\.(env|git|log|bak|swp|ini)$"> Require all denied </FilesMatch>
- 禁止列出目录内容(防遍历):
Options -Indexes
提示:若目录下无 index.html 等默认首页,开启此选项将返回 403 错误,而非文件列表。

















