在CentOS上,Apache通常通过“防盗链”来阻止外部站点直接引用你的静态资源(如图片、视频、压缩包),从而减少带宽盗用与内容被非法嵌入的风险。以下给出可落地的配置方法与注意事项。
一、工作原理与适用范围
二、方法一 基于目录的Rewrite规则(推荐)
<Directory "/var/www/html/protected">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
RewriteEngine On
# 白名单:本站域名、空Referer(直接访问/浏览器下载)、可信合作方
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?partner\.com [NC]
RewriteCond %{HTTP_REFERER} !^$
# 对常见静态资源生效
RewriteRule \.(jpg|jpeg|png|gif|bmp|webp|svg|mp4|mp3|zip|rar|pdf)$ - [F,L]
</Directory>
三、方法二 使用SetEnvIfNoCase与FilesMatch
<Directory "/var/www/html/protected">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
# 定义白名单Referer
SetEnvIfNoCase Referer "^https?://(www\.)?yourdomain\.com" local_ref
SetEnvIfNoCase Referer "^https?://(www\.)?partner\.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
# 对指定后缀文件应用访问控制
<FilesMatch "\.(jpg|jpeg|png|gif|bmp|webp|svg|mp4|mp3|zip|rar|pdf)$">
Order Allow,Deny
Allow from env=local_ref
Deny from all
</FilesMatch>
</Directory>
四、方法三 使用.htaccess(仅当AllowOverride允许)
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?partner\.com [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpg|jpeg|png|gif|bmp|webp|svg|mp4|mp3|zip|rar|pdf)$ - [F,L]
五、验证与注意事项