使用Apache进行防盗链主要涉及到配置HTTP响应头,以限制或阻止未经授权的网站引用你的资源。以下是一些常见的方法:
mod_rewrite
模块启用mod_rewrite
模块:
确保你的Apache服务器已经启用了mod_rewrite
模块。你可以在httpd.conf
或apache2.conf
文件中找到以下行并取消注释:
LoadModule rewrite_module modules/mod_rewrite.so
配置防盗链规则:
在你的网站根目录下的.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]
:检查HTTP请求头中的Referer
字段,如果不是来自你的域名(包括子域名),则执行下一步。RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
:阻止对指定图片格式的访问,并返回403 Forbidden状态码。mod_headers
模块启用mod_headers
模块:
确保你的Apache服务器已经启用了mod_headers
模块。你可以在httpd.conf
或apache2.conf
文件中找到以下行并取消注释:
LoadModule headers_module modules/mod_headers.so
配置防盗链规则:
在你的网站根目录下的.htaccess
文件中添加以下规则:
<FilesMatch "\.(jpg|jpeg|png|gif)$">
Header set X-Frame-Options "SAMEORIGIN"
Header set Referrer-Policy "no-referrer-when-downgrade"
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]
RewriteRule .* - [F,L]
</FilesMatch>
解释:
Header set X-Frame-Options "SAMEORIGIN"
:防止点击劫持。Header set Referrer-Policy "no-referrer-when-downgrade"
:控制Referer头的发送。RewriteEngine On
:启用重写引擎。RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]
:检查HTTP请求头中的Referer
字段,如果不是来自你的域名(包括子域名),则执行下一步。RewriteRule .* - [F,L]
:阻止对指定图片格式的访问,并返回403 Forbidden状态码。mod_security
模块如果你需要更复杂的防盗链策略,可以考虑使用mod_security
模块。以下是一个简单的示例:
安装mod_security
模块:
根据你的操作系统和Apache版本,安装mod_security
模块。
配置防盗链规则:
在你的网站根目录下的.htaccess
文件中添加以下规则:
SecRule REQUEST_URI "\.(jpg|jpeg|png|gif)$" \
"id:1234567,\
phase:2,\
deny,\
status:403,\
log,\
msg:'Access denied to images from unauthorized domains'"
SecRule REQUEST_HEADERS:Referer "!@rx ^http://(www\.)?yourdomain\.com" \
"id:1234568,\
phase:2,\
deny,\
status:403,\
log,\
msg:'Access denied to images from unauthorized domains'"
解释:
SecRule REQUEST_URI
:匹配请求的URI。SecRule REQUEST_HEADERS:Referer
:匹配请求头中的Referer
字段。通过以上方法,你可以有效地使用Apache进行防盗链,保护你的资源不被未经授权的网站引用。