在 CentOS 上,Apache 通常叫 httpd(不是 apache2,apache2 一般是 Ubuntu/Debian 的叫法)。下面以 CentOS + Apache (httpd) 为例,说明如何配置防盗链(Hotlink Protection)。
httpd -v
systemctl status httpd
一般默认已开启,检查一下:
httpd -M | grep rewrite
如果没有,编辑配置开启:
vi /etc/httpd/conf/httpd.conf
确保有:
LoadModule rewrite_module modules/mod_rewrite.so
编辑你的站点配置文件,例如:
vi /etc/httpd/conf.d/your-site.conf
添加以下内容(以图片为例):
<Directory "/var/www/html">
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !^https://(www\.)?yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|mp4|zip)$ - [F]
</Directory>
yourdomain.com 替换成你的域名!^$ 允许空 Referer(浏览器直接访问)[F] 表示 Forbidden(403)jpg jpeg png gif webp mp4 zipRewriteRule \.(jpg|png|gif)$ https://yourdomain.com/static/forbidden.png [R,L]
如果你不能改主配置,可在网站根目录:
vi /var/www/html/.htaccess
内容同上(去掉 <Directory> 标签)。
确保 httpd.conf 中允许:
AllowOverride All
systemctl restart httpd
CDN / 微信 / 搜索引擎 可加白名单:
RewriteCond %{HTTP_REFERER} !^https://.*\.baidu\.com [NC]
RewriteCond %{HTTP_REFERER} !^https://.*\.google\.com [NC]
HTTPS / HTTP 混用 两个都要写
如果你用的是 Nginx 反代 + Apache,或 CentOS 7/8/Stream,可以告诉我,我可以给你更精准的配置。