如何拒绝对某特定扩展名文件的下载,如何防盗链

Posted sfqas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何拒绝对某特定扩展名文件的下载,如何防盗链相关的知识,希望对你有一定的参考价值。

问题
如何拒绝对某特定扩展名文件的下载,如何防盗链

解决方案
虚拟主机服务器上,如果有过多的mp3等文件,可能会被搜索引擎查到
并且导致巨额的下载量。
这种情况下,对服务器的负担有很大的影响
那么如和禁止某种特殊文件的下载呢?

编辑/usr/prima/etc/httpd/site.conf
在其中加入如下一段:
<FilesMatch ".(mp3|avi)">
Order Deny,Allow
Deny from all
</FilesMatch>
重新启动/etc/init.d/httpd restart
即可拒绝服务器上所有站点目录下的扩展名为mp3和avi的下载
如果要增加扩展名,用竖线隔开即可。

上述方法,将无条件拒绝所有站点的下载和所有来源的连接
那么,用户自己的站点中存在的mp3就无法下载了。
如何能防止别的站点盗链,而自己站点也能下载呢?
假设自己的站点是www.abcd.com,将上边的配置文件中添加的配置修改为如下:

SetEnvIfNoCase Referer "^http://www.abcd.com" local_ref=1
<FilesMatch ".(mp3|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
</FilesMatch>

重新启动apache后,即可防止其他站点盗链,而自己的站点还可以继续访问。

上述指令不仅作用于全局,同样可以作用于每一个虚拟主机VirtualHost块,使每个虚拟主机有独立的防盗链机制

评分

以上是关于如何拒绝对某特定扩展名文件的下载,如何防盗链的主要内容,如果未能解决你的问题,请参考以下文章

Nginx学习之如何搭建文件防盗链服务

nginx盗链与防盗链(非常详细)

FastDFS防盗链

下载时如何具有特定的文件名[重复]

配置防盗链,访问控制

根据下载扩展后缀自动将下载的文件放在文件夹中