apache 防盗链
方法1:Apache防盗链的第一种实现方法,可以用rewrite实现
(1.)首先要确认Apache的rewrite module可用,打开 httpd.conf 文件,如果前面有注释去掉
LoadModule rewrite_module modules/mod_rewrite.so
(2.)在Apache主配置文件中找到对应的位置(或虚拟主机中),规则配置在<Directory>里面加入下列代码 [ 也可在需要防盗链的目录下新建 .htaccess,写入一下内容 ]:
#防盗链配置
RewriteEngine On #启用重写
RewriteCond %{HTTP_REFERER} !^$ #允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示
RewriteCond %{HTTP_REFERER} !benet\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !www\.benet\.com/.*$ [NC] #设置允许访问的HTTP来源,包括网站自身
RewriteRule .*\.(gif|jpg|swf)$ http://www.benet.com/about/nolink.png [R,NC,L] #将不满足referer条件的访问重定向至nolink.png。nolink.png位于允许“盗链”的目录about中,要相当注意,不然,警告信息和图片将无法在对方网站上显示。
相关选项的解释
1.RewriteEngine On#启用rewrite,要想rewrite起作用,必须要写上
2.RewriteCond test-string condPattern #写在RewriteRule之前,可以有一或N条,用于测试rewrite的匹配条件,具体怎么写,后面会详细说到。
3.RewriteRule Pattern Substitution#规则
4. %{HTTP_REFERER}:服务器变量,HTTPReferer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器藉此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
5.[ NC]指的是不区分大小写,[R]强制重定向redirect
6.字母L表示如果能匹配本条规则,那么本条规则是最后一条(Last),忽略之后的规则。
防盗链配置的说明:
1. 红色部分:表示自己的信任站点。对我的站点来说,设置为 http://www.benet.com和 http://benet.com
2. 绿色部分:要保护文件的扩展名(以|分开)。以这些为扩展名的文件,必须通过红色标注的网址引用,才可以访问。
3. 蓝色部分:定义被盗链时替代的图片,让所有盗链 jpg、gif、swf 等文件的网页,显示网页文档根目录下的about/ nolink.png 文件。注意:替换显示的图片不要放在设置防盗链的目录中,并且该图片文件体积越小越好。
当然你也可以不设置替换图片,而是使用下面的语句即可:RewriteRule .*\.(gif|jpg|png)$ - [F]
注:[F] (强制URL为被禁止的forbidden),强制当前URL为被禁止的,即,立即反馈一个HTTP响应代码403(被禁止的)。
方法2:通过判断浏览器头信息来阻止某些请求
即利用SetEnvIfNoCase和access。这个方法可以通过阻止某些机器人或蜘蛛爬虫抓取你的网站来节省你的带宽流量。
语法: SetEnvIfNoCase attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...
注:Referer :指明了请求当前资源原始资源的URL,使用referer是可以防盗链
(1.)在Apache主配置文件中找到对应的位置(或虚拟主机中),加入下列代码:
SetEnvIfNoCase Referer "^$" local_ref
SetEnvIfNoCase Referer "www.benet.com/.*$" local_ref
SetEnvIfNoCase Referer "benet.com/.*$" local_ref
<filesmatch "\.(mp3|mp4|zip|rar|jpg|gif)"> #2.4版本以上,方法如下:
Require all denied
Require env local_ref
</filesmatch> # 2.4版本以下的
# 方法一:
Order Deny,Allow
Allow from env=local_ref
Deny from all
# 方法二:
Order Allow,Deny
Allow from env=local_ref
相关文章链接:Apache的防盗链配置及详解
apache 防盗链的更多相关文章
- nginx apache防盗链
要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件.换句 ...
- Apache 防盗链配置
盗链 网站内有许多的图片地址,或一些我们可以用到的资源,在这种情况下,我可以通过赋值其他图片链接地址,到我自己的平台上,这样相当于盗取了一张图片的链接,那么盗链会有什么危害呢? 当我们盗取一张图片链接 ...
- php 防盗链
防盗链的技术已经很普遍了,有些网站不喜欢自己的图片被别的网站直接复制使用,便使用了防盗链的技术,这样别人在直接复制使用网站图片时,图片便会按照程序的设定不显示或显示防盗链等字样. 使用了防盗链技术,不 ...
- 使用Apache的.htaccess就可以防盗链
Apache的.htaccess可以实现很多功能,如密码保护.禁止显示目录列表.阻止/允许特定的IP地址.实现网址的301 重定向等等.本文就来说说使用Apache的.htaccess如何防盗链. 当 ...
- apache .htaccess 伪静态重定向,防盗链 限制下载...
301全站跳转 RewriteEngine OnRewriteCond %{HTTP_HOST} ^www\.old\.net$ [NC]RewriteRule ^(.*)$ http://www.n ...
- Apache 隐藏入口文件以及防盗链.htaccess 文件
Apache 隐藏入口文件以及防盗链.htaccess 文件 RewriteEngine on # 隐藏入口文件 RewriteCond %{REQUEST_FILENAME} !-d Rewrite ...
- Apache服务器如何通过.htaccess文件设置防盗链?
Apache服务器通过.htaccess文件设置防盗链 用户经常面对的一个问题就是服务器的流量问题,而站点文件被盗链是其中最为主要的部分.所谓盗链,是指其他网站直接链接我们网站上的文件,一般来说,盗链 ...
- centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课
centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 ...
- Apache -- 利用.htaccess防盗链
在Apache服务器的前提下利用.htaccess文件来防盗链的原理是通过检查图片或文件请求头信息中的Referer属性(也就是请求的来源),判断它是否属于你所规定的合法的请求来源,从而实现让合法来源 ...
随机推荐
- Python - Django - Cookie 简单用法
home.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- Spring4.X整合redis
包和版本的依赖关系很严重 我的配置 spring-data-redis-1.6.6.RELEASE.jar spring-tx-4.2.5.RELEASE.jar redis-2.7.2.jar co ...
- 任务调度之Quartz.Net可视化界面
上一篇关于任务调度Quartz.Net的文章中介绍了其三个核心对象IScheduler.IJob和ITrigger,我们已经知道了其基本的使用方法,可以在控制台当中运行监控.但是在实际中我们往往需要有 ...
- 通用mybatis单表操作接口
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
- LeetCode 442. 数组中重复的数据(Find All Duplicates in an Array) 17
442. 数组中重复的数据 442. Find All Duplicates in an Array 题目描述 Given an array of integers, 1 ≤ a[i] ≤ n (n ...
- Jenkins+maven+gitlab自动化部署之docker发布sprint boot项目(七)
Jenkins发布docker应用与发布java应用配置基本一致,需要配置Dockerfile及构建的步骤,步骤如下: 1.jenkins主机构建应用为jar包 2.jenkins主机把生产的jar包 ...
- 通过减少 IO 实现性能的优化
原始地址见 这里 本文是工作中一点点简单的思考,不能保证是完全正确的,可能也仅仅是适用于部分场景. 场景 1:获取用户关注的好友列表中,每个好友的名字.头像等信息. 在很多公司中,不同的服务是由不同的 ...
- Word 自动图文集使用方法
1. 自动图文集简介 使用自动图文集当你在文档中输入你所需的模板名称后,就能立刻变出该内容出来. 1.1 效果演示 1:个人简历 如下图所示,在Word文档中输入了"个人简历"后, ...
- Python 命令行模块使用技巧
命令行参数传递 python main.py -H 192.168.1.1 -p 22,23,24 #coding:utf-8 import optparse def PortScan(host,po ...
- git合并原则
目前实验结果为: 假设有master和branch1,用master合并branch1时(在master分支中执行git merge branch1): 1.在同一个地方,master做了修改,bra ...