修改httpd.conf
找到 <Dirctory "/var/www/html">
在这个Dirctory容器内添加:
代码如下 | 复制代码 |
SetEnvIfNoCase Referer "^http://www.111cn.net/" local_ref=1 <FilesMatch ".(JPG|jpg)"> Order Allow,Deny Allow from all Deny from env=local_ref </FilesMatch> #service httpd restart |
其中的FilesMatch 对象,还需要根据自身的环境进行改动。比如路径或者添加(JPG|jpg|gif|mp3)等等
在Apache 的配置文件里面设置以下内容:
代码如下 | 复制代码 |
SetEnvIf Referer "^http://(.)+.www.111cn.net/" local_ref=1 SetEnvIf Referer "^http://(.)+.isql.cn/" local_ref=1 #SetEnvIf Referer "^http://(.)+.other.org.cn/" local_ref=1 SetEnvIf Request_URI "/logo(.)+" local_ref=0 <FilesMatch ".(mp3|wmv|png|gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip|mp3)"> Order Allow,Deny Allow from env=local_ref </FilesMatch> |
解释:
1. 蓝色部分,表示设置允许访问的referer地址,第一行的意思为所有http协议访问,以.www.111cn.net结尾的域名地址,第二行类似,只是换成了.isql.cn,表问我前面的鬼符是什么,不懂得可以去翻正则表达式的研究文献,不想深究的可以照猫画虎设置自己的网站。
2. 绿色部分,表示不在上述引用域名范围内,但可以被放行的特例,本例中表示网站/目录,所有以logo开头的文件(用作允许其它网站的友情连接引用本站logo)。
3. 橙色部分是设置反盗链的关键部分,上面每一个设置都联系到了local_ref这个环境变量,只有这个变量为1,则允许被引用,否则显示一个X。
4. 紫色部分设置了哪些扩展名的文件加入反盗链的规则。
补充:
我是直接设置在httpd.conf里面的,如果只想针对哪个目录设置,可以放在目录的.htaccess文件内。
然后记得检查 http.conf 中论坛所在目录的设置,增加
代码内容
AllowOverride FileInfo AuthConfig Limit
以上方法可以禁止用户从其他网站或者直接在浏览器地址栏输入地址的方式访问附件。
另外,网上好多文档,都有错误,把SetEnvIf写成了SetEnvIfNoCase
附我以前用mod_rewrite写的
代码如下 | 复制代码 |
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://bbs.www.111cn.net/.*[GV_contentText]nbsp; [NC] RewriteCond %{HTTP_REFERER} !^http://bbs.www.111cn.net[GV_contentText]nbsp; [NC] RewriteCond %{HTTP_REFERER} !^http://www.111cn.net/.*[GV_contentText]nbsp; [NC] RewriteCond %{HTTP_REFERER} !^http://www.111cn.net[GV_contentText]nbsp; [NC] RewriteCond %{HTTP_REFERER} !^http://www.111cn.net/.*[GV_contentText]nbsp; [NC] RewriteCond %{HTTP_REFERER} !^http://www.111cn.net[GV_contentText]nbsp; [NC] RewriteRule .*.(mp3|wmv|png|gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip)$ http://www.111cn.net [R,NC] |
上面的,需要Rewrite模板.所有指定的文件,如果Referer不是上面的值,将被重定向到首页.