apache htdocs 目录图片防盗链需通过 referer 拦截实现,推荐三种方式:1. .htaccess 方式(需 allowoverride 配置);2. 主配置 directory 块内设置(更高效,需重启服务);3. 重定向至自定义警告图(提升用户体验)。

Apache 中 htdocs 目录下的图片防盗链,核心是拦截非授权来源(Referer)的直接请求,并返回 403 禁止访问或跳转到提示图。关键不在于目录位置本身,而在于如何在该目录或其上级配置中启用并生效防盗链规则。
以下是最常用、最稳妥的三种实现方式,按推荐顺序排列:
在 htdocs 目录下直接放 .htaccess 文件
这是最灵活、无需服务器权限的方式,适合共享主机或无法修改主配置的环境。
- 确保 Apache 已启用
mod_rewrite模块(绝大多数默认开启); - 确保
AllowOverride设置允许.htaccess覆盖重写规则(主配置中类似<directory></directory>块内需有AllowOverride All或至少AllowOverride FileInfo); - 在
htdocs根目录下新建纯文本文件.htaccess(注意开头是点,无文件名),内容如下:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [F]
- 替换
yourdomain.com为你实际域名(如example.com); -
!^$允许直接在浏览器地址栏输入图片 URL 访问(空 Referer); -
[F]表示返回 HTTP 403 Forbidden,盗链请求将显示“禁止访问”; - 保存后上传,确保文件编码为 UTF-8 无 BOM,权限设为
644。
在主配置文件中针对 htdocs 目录设置防盗链
适用于有服务器管理权限的场景,更高效、更安全,避免 .htaccess 解析开销。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
编辑 httpd.conf 或虚拟主机配置(如 extra/httpd-vhosts.conf),找到对应 htdocs 的 <directory></directory> 块,加入规则:
<directory>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
# 防盗链开始
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [F]
</directory>
- 注意:若已设
AllowOverride None,则.htaccess不生效,必须在此处配置; - 修改后需重启 Apache:
sudo systemctl restart httpd(或apachectl restart); - 此方式对所有子目录(如
/htdocs/images/)自动生效。
返回自定义提示图(可选增强体验)
不想只返回 403 页面?可把盗链请求重定向到一张小尺寸警告图:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ /warning.png [R,L]
-
/warning.png必须放在htdocs下且能被公开访问(如htdocs/warning.png); - 图片建议 ≤5KB,避免形成新盗链循环;
- 使用
[R]是 302 重定向,浏览器地址栏会变;若要隐藏原图路径,用[R=301,L]更合适。
不复杂但容易忽略










