»

windows主机、CDN与图片盗链

    WordPress  
网站镜像CLBwordpress爬虫web.config防盗链SEO缓存工作访问身份认证插件查询IIS访客Wp Super Cache浏览器ApacheWP Rockethtaccess网站优化前端重定向伪静态windows主机

看了标题大家可能、也许、差不多、没准知道我要写什么了:windows 主机下图片防盗链设置。

自己网站空间、流量都有限,如果被别人盗链了图片,那你还怎么接着往下玩?!这是绝对不行滴!

 

网上有各种关于图片防止被盗链的设置方法,但大都基于 Apache 主机,可谓天下文章一大抄,原创的很少,而且有的还有错误!

那么,windows 主机 IIS 和 MySQL 数据库下如何设置?其实你完全可以在主机商的后台设置,因为大多数 windows 主机后台都会有防盗链设置。

 

但问题来了:如果我自己想单独设置类别,怎么弄呢?其实你完全可以在自己的网站根目录建立一个 web.config 的文件,在里面设置图片访问的白名单。

 

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

不废话了,开始说正事

 


平台:windows 主机 + IIS 7.5(及以上) + MySQL 数据库


首先,你的主机服务器需要支持 IIS 重写模块。如果自己的是独立主机,建议你到微软官网下载(有 64位 和 32位 之分,注意区别);如果是虚拟服务器,主机商一般都已经安装好了这个模块。

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

 

一、对于独立主机:

1. 打开 IIS 服务设置,里面有 URL 重写 功能,将其打开,如图所示:

 

1-no-hot-links

 

2. 在“入站规则”中选择添加“空白规则”,如图所示:

2-no-hot-links

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved

 

3. 编辑入站规则

  • “名称”一栏可以自己写,但不要与其他命名重复。
  • 在“匹配 URL”选项中:选择“与模式匹配”、“正则表达”。
  • “模式”一栏即是你不希望被盗链的图片后缀名:    ^.*\.(gif|jpg|jpeg|png)$   
  • 勾选“忽略大小写”

 

本文禁止无授权转载 - 时光在路上 www.timezls.com 保留所有权利

3-no-hot-links

 

4. 继续下面的操作

在“操作类型”一栏选择:重写

“重写 URL”一栏填写你想让对方看到的网页、图片或其他文件地址:   /tatic/image/common/logo.png    这个可以根据需要自己定义。

保存后会形成一个文件夹,在文件夹里面添加具体的内容。见下一步操作。

 

4-no-hot-links

 

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved

5. 添加条件

  • 在“条件输入”一栏中添加 :{HTTP_REFERER}
  • 在“检查输入字符串是否”一栏中选择:与模式不匹配
  • 在“模式”一栏输入你的域名 和/或 你想添加的域名:    ^http://(.*\.)?(timezls\.com)/.*$   

 

5-no-hot-links

 

点击确定后,查看网站根目录的 web.cofig 文件(提醒大家不要用记事本、微软word或者写字板编辑,要用专业一点的代码编辑软件来整理代码)。

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved

 

大功告成?你想少了!测试后发现 然而并没有卵用!

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved

因为你少了点什么设置?看下图:

6-no-hot-links

 

你的重写设置并没有生效,处于“False”状态。

你需要改写一下 web.config 文件中的设置。

那么好啦,说一下不具有独立主机服务器的网站怎么设置代码。

 

二、虚拟主机直接设置

通过上面的设置,大家可能已经对 IIS 重写设置有了一些了解。虚拟主机无法对上面这些操作,但是你可以通过设置并更改 web.config 里面的代码来实现同样的效果。

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved

 

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved

前面我提到:为什么设置以后不生效呢?因为你没有加   stopProcessing="true"  这一项!

7-no-hot-links

 

web.config 文件中大概的代码框架是这样的:

 
  1. <system.webServer>
  2. <rewrite>
  3. <rules>
  4. <rule>
  5. 其他的规则设置,不用管
  6. </rule>
  7. <rule>
  8. 其他的规则设置,不用管
  9. </rule>
  10.  
  11. <rule>
  12. 你的防盗链设置,代码放到这里
  13. </rule>
  14.  
  15. </rules>
  16. </rewrite>
  17. </system.webServer>

 

你只需要在相应位置填写  <rule>代码</rule> 即可

 

最终代码如下:

  1. <rule name="Prevent image hotlinking">
  2.                     <match url="^.*\.(gif|jpg|jpeg|png)$" ignoreCase="true" stopProcessing="true" />
  3.                     <conditions>
  4.                         <add input="{HTTP_REFERER}" pattern="^http://(.*\.)?(timezls\.com)/.*$" negate="true" />
  5.                     </conditions>
  6.         <action type="Rewrite" url="/static/image/common/logo.png" />
  7. </rule>

 

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved

这回保存后上传到根目录试试看?应该没问题了吧?

8-no-hot-links

 

其他一些问题

1. 为什么windows 主机后台有了 防盗链设置而又自己去设置web.config文件?

因为你用了 CDN 加速。CDN 加速是挺好的,但是也会带来一些问题:比如, 如果完全使用 html 页面静态化以后,广告代码分不清是 pc 端 还是 wap 端,导致代码乱投放(这个是后话,以后慢慢写);再比如这个防盗链功能,主机商后台面板无法对 CDN 服务器、域名设置白名单,如果你在主机商控制面板中开启了防盗链,用户通过 CDN 服务器浏览网站时会出现打不开图片的状况。不用 CDN 的站长其网站就没有这种情况发生。所以这也是我写此文章的主要目的:找到一个解决办法,将 CDN 等一些需要的服务器、网站加入到白名单中。

上面这段话略去,CDN 加速后自己设置 web.config 也无用,只能到 CDN 服务商那里去设置防盗链,如果碰到的服务商不给你设置防盗链(或者图片防盗链),你也没有办法。所以,自己 用 web.config 玩,前提条件是不用 CDN 加速。

我们期待国内的 CDN 企业解决目前一些存在的问题,让 CDN 加速越来越快,体验越来越好。

 

2. web.config 文件防盗链的其他设置

利用 web.config 文件,你可以有其他设置方面的选择,上面说的是 重写功能,你可以选择 禁止浏览,比如使用 403 或 301 功能。可以写的内容很多,有兴趣的朋友可以自己研究一下的。

时光在路上扫码阅读、分享
  • 版权声明:该文章由 时光在路上 发表,共 2396字。除非特别标注来源,否则为原创。详见《版权声明》部分。
  • 转载请注明:文章标题和文章链接 - 时光在路上 - 也可直接“复制本文链接” 或 使用右边二维码分享本文 →