利用URL重写规则实现网站资源防盗链接

利用 URL重写规则来实现网站资源(例如图片、音乐)的防盗链接。windows server 2003 系统只要使用免费版的isapi rewrite就可以实现了。下载地址:http://www.helicontech.com/download-isapi_rewrite3.htm

isapi_rewrite 2 的防盗链接规则

# 3600 = 1 hour
CacheClockRate 3600
#根据需要将允许访问的域名按下面例子添加即可。
#可根据需要自行设置需要防盗链的文件后缀。
#/block.html为盗链替换的网页,可以设置版权提醒。
RepeatLimit 32
RewriteCond Host: ^(.+)$
RewriteCond Referer: ^(?!http://1.*).*$
RewriteCond Referer: ^(?!http://(.*.google.com|.*.baidu.com|.*.ljf.cn).*).*$
RewriteRule ^.*.(?:gif|jpg|png|exe|rar|zip|jpeg|mp3|rar)$ /block.html [I,O,N]
ISAPI Rewrite 3 的防盗链规则
# 3600 = 1 hour
CacheClockRate 3600
#根据需要将允许访问的域名按下面例子添加即可。
#可根据需要自行设置需要防盗链的文件后缀。
#/block.html为盗链替换的网页,可以设置版权提醒。
RepeatLimit 32
RewriteCond %{HTTP:Host} ^(.+)$
RewriteCond %{HTTP:Referer} ^(?!http://1.*).*$
RewriteCond %{HTTP:Referer} ^(?!http://(.*.google.com|.*.baidu.com|.*.ljf.cn).*).*$
RewriteRule ^.*.(?:gif|jpg|png|exe|rar|zip|jpeg|mp3|rar)$ /block.html [I,O,N]
至于windows server 2008 和 apache 的URL重写规则,可以参考上面的规则自作调整即可。
注意,做了防盗链接之后,直接在浏览器中打入资源的URL是无法显示的,例如直接打入一个图片的URL,将显示上面定义的block.html页面。

WebService URL 重写后不能引用的解决方法

WebService 进行URL重写有两种情形:

1、重写后,重写前的路径不能访问。

2、重写后,重写前的路径依然能够访问。

第1种情形会造成可以查看asmx文件,但不能引用WebService的错误,错误提示是这样的:

文档未被识别为已知的文档类型

来自“XML 架构”的报告是“无法识别此文档格式(内容类型为“text/html; charset=utf-8”)。”。

“无法识别此文档格式(内容类型为“text/html; charset=utf-8”)。

通过查看该WebService的WSDL发现,文档未尾附带的地址,是重写前的地址。这就是问题所在。WebService会把真实地址“暴露”给调用者,然而,这个址实地址,重写后已经不可访问,返回404错误(被重写到别的路径去了),所以VS在引用检测时,才有上面提示。

解决办法:把错误的地址再重写回来,让原来的真实地址可以访问

顺便说一下,在做URL重写时,我认为第1种情况是比较符合逻辑,因为如果重写前后的URL不小心让搜索引擎都收录了,会造成“元字符”重复的错误。即同一个页面应只有唯一一个URL,不应该有多个可访问的URL。

公告栏

  • 姓名:林剑锋(不见不散)
  • 来自:中国-广州
  • 简介:技术的信徒。
  • Email/QQ:admin@ljf.cn
  • 点击这里给我发消息

QQ群:设计学院 68075618,网站设计师 9908776

统计

文章:337篇
评论:173条 (2条Spam)
相册:1个 (121张图片)
主题:Nagrand新主题

www.ljf.cn网站PR查询