配置Apache的防盗链可以通过多种方式实现,以下是几种常见的方法:
mod_rewrite
模块启用mod_rewrite
模块:
确保你的Apache服务器已经启用了mod_rewrite
模块。你可以在Apache配置文件(通常是httpd.conf
或apache2.conf
)中找到以下行并取消注释:
LoadModule rewrite_module modules/mod_rewrite.so
编辑.htaccess
文件:
在你的网站根目录下创建或编辑.htaccess
文件,并添加以下内容:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
解释:
RewriteEngine On
:启用重写引擎。RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]
:检查请求的来源是否不是你的域名(不区分大小写)。RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
:如果条件匹配,则返回403 Forbidden状态码,并停止进一步处理。mod_headers
模块启用mod_headers
模块:
确保你的Apache服务器已经启用了mod_headers
模块。你可以在Apache配置文件中找到以下行并取消注释:
LoadModule headers_module modules/mod_headers.so
编辑Apache配置文件:
在你的Apache配置文件(例如httpd.conf
或apache2.conf
)中添加以下内容:
<Directory "/path/to/your/website">
Header set Referrer-Policy "no-referrer-when-downgrade"
<FilesMatch "\.(jpg|jpeg|png|gif)$">
Header set Content-Security-Policy "default-src 'self'; img-src 'self' data:"
</FilesMatch>
</Directory>
解释:
Header set Referrer-Policy "no-referrer-when-downgrade"
:设置Referrer策略,防止浏览器发送Referer头。<FilesMatch "\.(jpg|jpeg|png|gif)$">
:匹配图片文件。Header set Content-Security-Policy "default-src 'self'; img-src 'self' data:"
:设置Content Security Policy,限制图片只能从当前域加载。如果你需要更复杂的防盗链功能,可以考虑使用第三方模块,例如mod_security
。
安装mod_security
模块:
根据你的操作系统和Apache版本,安装mod_security
模块。例如,在Debian系统上:
sudo apt-get install libapache2-mod-security2
配置mod_security
规则:
编辑mod_security
的配置文件(通常是/etc/modsecurity/modsecurity.conf
或/etc/apache2/conf-available/security2.conf
),添加以下规则:
SecRule REQUEST_FILENAME "\.(jpg|jpeg|png|gif)$" \
"id:1234567,\
phase:2,\
deny,\
status:403,\
log,\
msg:'Access to images is restricted'"
解释:
SecRule REQUEST_FILENAME "\.(jpg|jpeg|png|gif)$"
:匹配图片文件。id:1234567
:规则的唯一标识符。phase:2
:在请求处理的第二阶段应用规则。deny
:拒绝访问。status:403
:返回403 Forbidden状态码。log
:记录日志。msg:'Access to images is restricted'
:自定义错误消息。通过以上方法,你可以有效地配置Apache的防盗链功能,保护你的网站资源不被未经授权的访问。