ubuntu

如何用Apache2实现防盗链

小樊
45
2025-04-28 07:32:53
栏目: 编程语言

使用Apache2实现防盗链(Hotlink Protection)可以防止其他网站直接链接并显示你的图片、视频或其他资源。以下是详细的步骤和配置方法:

方法一:使用mod_rewrite模块

  1. 启用mod_rewrite模块: 确保你的Apache2服务器已经启用了mod_rewrite模块。你可以通过以下命令启用它:

    sudo a2enmod rewrite
    
  2. 编辑.htaccess文件: 在你的网站根目录下创建或编辑.htaccess文件,添加以下内容:

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteRule \.(jpg|jpeg|png|gif|svg|mp4|avi|mov)$ - [F,L]
    

    解释:

    • RewriteEngine On:启用重写引擎。
    • RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]:检查HTTP请求头中的Referer字段,如果不是来自你的域名,则拒绝访问。
    • RewriteCond %{HTTP_REFERER} !^$:确保Referer字段不为空。
    • RewriteRule \.(jpg|jpeg|png|gif|svg|mp4|avi|mov)$ - [F,L]:匹配特定文件类型(如图片和视频),并返回403 Forbidden状态码。
  3. 重启Apache2服务器: 保存.htaccess文件后,重启Apache2服务器以使更改生效:

    sudo systemctl restart apache2
    

方法二:使用mod_headers模块

  1. 启用mod_headers模块: 确保你的Apache2服务器已经启用了mod_headers模块。你可以通过以下命令启用它:

    sudo a2enmod headers
    
  2. 编辑.htaccess文件: 在你的网站根目录下创建或编辑.htaccess文件,添加以下内容:

    <IfModule mod_headers.c>
        RewriteEngine On
        RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]
        RewriteCond %{HTTP_REFERER} !^$
        Header set X-Frame-Options "SAMEORIGIN"
        Header set Content-Security-Policy "frame-ancestors 'self'"
    </IfModule>
    

    解释:

    • RewriteEngine On:启用重写引擎。
    • RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]:检查HTTP请求头中的Referer字段,如果不是来自你的域名,则拒绝访问。
    • Header set X-Frame-Options "SAMEORIGIN":防止点击劫持。
    • Header set Content-Security-Policy "frame-ancestors 'self'":限制资源只能通过同源页面加载。
  3. 重启Apache2服务器: 保存.htaccess文件后,重启Apache2服务器以使更改生效:

    sudo systemctl restart apache2
    

注意事项

通过以上步骤,你可以有效地使用Apache2实现防盗链功能,保护你的网站资源不被滥用。

0
看了该问题的人还看了