• 微信:
  • hai764003
  • QQ:
  • 511211014
  • E-mail:
  • jaquery@163.com

案例总数51

访问总数312409

收藏总数310940

HTTP协议,HTTP协议是什么?返回列表

上传时间:2015-02-02 内容关键字:

3. 重写条件:

1. jpeg/jpg/gif/png图片

2.  referer头与localhost不匹配时


4. 怎么重写:

统一rewrite到某个防盗链图片,可以查看apache帮助手册。

重写文件.taccess:

RewriteEngine On

#Rewrite Base /0618

RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC]

RewriteCond %{HTTP_REFERER} !localhost [NC]

RewriteRule .* no.png

注意:

1. 此文件如果放在www根目录下则监控所有项目目录,如果只想监控/0618则:Rewrite Base /0618


2. 这个时候,如果你用localhost/...来访问某个带img图片的文件是会出来预期效果的,因为上 面重写规则中已经规定了,只要referer中的服务器主机是localhost就认为是站内访问,就 运行,否则只要访问带有图片的页面,即只要站外使用本站的图片路径,全部把该图片的路    径重写到no.png路径下。比如用127.0.0.1代替localhost访问该项目下的页面,服务器就会127.0.0.1当做是站外请求,因为它的referer不是localhost(虽然在本地他们两个都代表 apache的服务器地址)


3. 但是有以下这种写法:


if $_SERVER[] !== ‘localhost’

header(‘no.png);


这种写法呢,也可以看到相同的效果,但是却不科学,因为防盗链使用rewrite的话直接在http请求头部拦截了非法盗链起到了减轻服务器压力的作用,但是如果这个处理都进入了服务器中php文件里,那原本负面影响已经产生了,所以不科学。


2. 问题:采集防盗链图片:


发送一个图片的请求,返回值是(请求行,头部和主体信息)+(图片信息):

 

小海哥推荐你看: 博客园  php教程分享网站  phpmywind  脚本之家