apache防盗链核心是通过referer头识别请求来源,仅允许本域或白名单域名访问jpg/jpeg/png/gif等图片,其他请求返回403或重定向至提示图;需启用mod_rewrite模块,配置rewriteengine、rewritecond和rewriterule,并妥善处理空referer。
apache 设置防盗链保护图片资源,核心是识别请求来源(referer头),只允许本域或白名单域名访问指定后缀的图片文件,其他请求则拒绝或重定向。操作不复杂,但需注意模块启用、规则顺序和空 referer 处理。
确认并启用必要模块
防盗链主要依赖 mod_rewrite,部分方案还会用到 mod_headers 或 mod_authz_core。先检查是否已启用:
- 运行
apachectl -M | grep rewrite,看到rewrite_module表示已加载 - 若未启用,编辑
httpd.conf或apache2.conf,取消注释:LoadModule rewrite_module modules/mod_rewrite.so - 重启服务:
sudo systemctl restart apache2(Debian/Ubuntu)或sudo apachectl graceful(源码安装)
通过 .htaccess 文件快速生效(推荐)
适用于无服务器管理权限、共享主机或快速测试场景。在网站根目录或图片所在目录创建/编辑 .htaccess:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [F,L]
-
!^$允许直接在浏览器地址栏输入图片 URL 访问(空 Referer) -
yourdomain.com替换为你的真实域名,支持http和https -
[F]返回 403 禁止访问;也可改用[R=302,L]重定向到提示图,例如:RewriteRule \.(jpg|jpeg|png|gif)$ /warning.png [R=302,L]
通过虚拟主机配置更稳定(推荐用于生产环境)
修改 httpd-vhosts.conf 或主配置中的 <virtualhost></virtualhost> 块,在对应 <directory></directory> 内添加:
<directory>
Options 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)$ - [F,L]
</directory>
- 把路径
/var/www/html/images换成你存放图片的实际目录 -
AllowOverride None表示禁用 .htaccess,规则统一由主配置控制,更安全高效 - 确保该目录有读取权限,且 Apache 用户(如
www-data)可访问
验证与调试要点
配置后务必测试,避免误拦合法访问:
- 用
curl模拟不同 Referer 请求:curl -e "https://google.com" https://yourdomain.com/photo.jpg -I→ 应返回403 Forbiddencurl -e "https://yourdomain.com/page.html" https://yourdomain.com/photo.jpg -I→ 应返回200 OKcurl https://yourdomain.com/photo.jpg -I(无 -e)→ 应返回200 OK(空 Referer 允许) - 浏览器开发者工具中查看 Network 标签页,确认图片请求状态码和响应头
- 日志中留意
error_log是否报错,如Invalid command 'RewriteEngine'表示模块未启用










