apache静态网站防盗链通过检查referer字段限制非法来源,启用mod_rewrite模块后,在virtualhost或.htaccess中配置rewrite规则匹配空referer、本站域名及指定资源后缀,返回403或重定向提示图,并需测试验证避免误拦。

Apache 静态网站部署中配置防盗链,核心是通过检查 HTTP 请求头中的 Referer 字段,判断资源请求是否来自允许的域名。若来源非法(如其他网站直接嵌入你的图片),就拒绝响应(返回 403)或重定向到提示页,从而降低带宽盗用风险、保护内容和服务器资源。
启用 mod_rewrite 或 mod_setenvif 模块
防盗链依赖 Apache 的重写或环境变量功能,需确保以下模块已启用:
- mod_rewrite:最常用,支持灵活规则(推荐)
- mod_setenvif:轻量级替代方案,适合简单场景
检查方式(Linux 命令):a2enmod rewrite(Debian/Ubuntu)或httpd -M | grep rewrite(RHEL/CentOS)
若未启用,需在主配置中加载 LoadModule rewrite_module modules/mod_rewrite.so 并重启服务。
在虚拟主机或 .htaccess 中添加防盗链规则
推荐放在 <virtualhost></virtualhost> 块内(性能更优),或网站根目录的 .htaccess(需开启 AllowOverride All):
RewriteEngine On
# 允许空 Referer(直接输入 URL 访问)、本站域名及子域名
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com/.*$ [NC]
# 匹配常见静态资源后缀
RewriteRule \.(gif|jpg|jpeg|png|bmp|ico|css|js|pdf|zip|mp4|webp)$ - [F,NC]
说明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
[F]表示返回 403 Forbidden;也可改用[R=302,L]重定向到默认提示图 -
[NC]表示忽略大小写匹配 - 正则中
https?://同时兼容 HTTP 和 HTTPS 来源 - 若需允许搜索引擎(如 Google、Bing)引用,可在
RewriteCond中追加对应域名
可选:设置自定义拒绝响应(提升用户体验)
不直接返回 403,而是返回一张“禁止盗链”提示图,更友好且节省带宽:
RewriteRule \.(gif|jpg|jpeg|png|webp)$ /images/no-hotlink.jpg [R=302,L]
注意:/images/no-hotlink.jpg 必须是网站内可公开访问的路径,且该图片本身不能被防盗链规则拦截(建议用不同后缀或单独放行)。
验证与调试要点
配置生效后务必测试,避免误伤合法访问:
- 在浏览器地址栏直接访问图片 URL → 应正常显示(Referer 为空,被
!^$放行) - 新建 HTML 文件,用
<img src="https://yoursite.com/test.jpg?x-oss-process=image/resize,p_40">引用 → 应正常 - 另建测试页(如
test-external.html)放在其他域名下引用你的图片 → 应返回 403 或跳转提示图 - 查看 Apache 错误日志:
tail -f /var/log/apache2/error.log,确认是否有重写规则报错
防盗链不是万能的(Referer 可伪造),但它对大多数盗链行为有效,是静态网站安全防护的基础一环。










