最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Apache Directory 块中防盗链如何配
时间:2026-08-07 11:02:48 编辑:袖梨 来源:一聚教程网
Apache Directory块防盗链通过mod_rewrite限制Referer实现,需启用rewrite模块、在Directory中配置RewriteCond和RewriteRule,允许自身域名及空Referer,拦截指定静态资源;也可用SetEnvIf+FilesMatch替代。
在 Apache 的 Directory 块中配置防盗链,核心是限制非授权来源(Referer)对特定静态资源的直接访问。这种方式比 .htaccess 更高效、更可控,适合有服务器管理权限的场景。
确认 Rewrite 模块已启用
防盗链依赖 mod_rewrite,需确保已加载:
- Ubuntu/Debian:
sudo a2enmod rewrite,再sudo systemctl restart apache2 - CentOS/RHEL:
sudo a2enmod rewrite或检查LoadModule rewrite_module modules/mod_rewrite.so是否在 httpd.conf 中启用 - 重启服务后执行
apache2ctl -t或httpd -t验证语法
在 Directory 块内写入防盗链规则
定位到你要保护的 目录,例如 /var/www/html,在对应 <Directory> 块中添加以下内容:
<Directory "/var/www/html">RewriteEngine On# 允许自身域名(含 www 和无 www)及空 Referer(直接输入 URL 访问)RewriteCond %{HTTP_REFERER} !^http://(www.)?yourdomain.com [NC]RewriteCond %{HTTP_REFERER} !^https://(www.)?yourdomain.com [NC]RewriteCond %{HTTP_REFERER} !^$# 拦截常见静态资源(可按需增删扩展名)RewriteRule .(jpg|jpeg|png|gif|webp|svg|mp4|webm|pdf|css|js)$ - [F,L]</Directory>
说明:
-
[NC]表示不区分大小写;[F]返回 403 Forbidden;[L]表示终止后续规则 -
!^$排除空 Referer,若希望允许直接访问(如用户手动输入图片地址),必须保留此项 - 多个允许域名可叠加
RewriteCond,例如再加一行RewriteCond %{HTTP_REFERER} !^https://trusted-site.org [NC]
替代方案:用 SetEnvIf + FilesMatch(兼容旧版或需精细控制)
适用于不启用 mod_rewrite 的环境,或想配合 Order/Allow/Deny 使用:
<Directory "/var/www/html"># 定义白名单 Referer(支持正则,注意转义点号)SetEnvIfNoCase Referer "^https?://(www.)?yourdomain.com" local_refSetEnvIfNoCase Referer "^$" local_ref# 可选:添加其他可信站点SetEnvIfNoCase Referer "^https?://cdn.yourdomain.com" local_ref<FilesMatch ".(jpg|jpeg|png|gif|mp4|pdf)$">Order Deny,AllowDeny from allAllow from env=local_ref</FilesMatch></Directory>
注意:Order Deny,Allow 在 Apache 2.4+ 中已被 Require 替代,若用新版建议改用:
<FilesMatch ".(jpg|jpeg|png|gif)$">Require env local_ref</FilesMatch>
验证与调试要点
配置保存后务必重启 Apache(sudo systemctl restart apache2 或 sudo systemctl restart httpd),再测试:
- 用 curl 模拟不同 Referer:
curl -e "https://badsite.com" -I https://yourdomain.com/image.jpg应返回 403 - 正常访问(带正确 Referer 或空 Referer)应返回 200
- 检查错误日志:
/var/log/apache2/error.log或/var/log/httpd/error_log,排查规则未生效原因 - 确保
AllowOverride None不会覆盖规则——Directory 块中的配置优先级高于 .htaccess
相关文章
- 鹅鸭杀法医怎么玩 08-07
- 鸣潮拉海洛荣耀之丘无限万变流卡组怎么搭配 08-07
- 三角洲行动扩容箱如何搭配 08-07
- 四海兄弟故乡刀战怎么玩 08-07
- 王者元歌诡秘之主上线时间是什么时候 08-07
- DeepSeek入口在哪里 08-07