IIS防盗链禁止外站引用配置_Apache IIS设置防盗链教程详解
网站被恶意采集或攻击时,通过规则屏蔽IP和域名是最直接的防护手段。防盗链规则基于Referer判断,但部分浏览器或客户端(如微信内置浏览器、某些APP)不发送Referer,导致正常用户也被防盗链拦截。HTTPS站点配置防盗链后,从HTTP页面引用HTTPS资源时Referer不发送(浏览器安全策略),导致防盗链误拦截。
排查下来,故障根源集中在几个方面。防盗链规则匹配的文件后缀列表不完整,只写了jpg和png,没有写gif、webp、svg等格式,导致部分图片格式没有被防盗链保护。IIS的URL Rewrite防盗链规则中使用了{HTTP_REFERER}变量,但条件判断的逻辑写反了(应该是不等于白名单则拦截,写成了等于白名单则拦截),导致白名单域名被拦截。Apache的防盗链规则中没有允许空Referer,部分浏览器(如HTTPS到HTTP的跳转、隐私模式)不发送Referer头,导致这些请求被防盗链拦截,图片无法显示。防盗链规则中没有排除搜索引擎蜘蛛的图片抓取,导致百度图片、谷歌图片搜索无法收录网站图片,影响图片搜索流量。防盗链白名单域名中只写了example.com,没有写www.example.com,或反过来,导致带www和不带www的其中一种形式被误拦截。防盗链规则中使用了严格的Referer匹配(如必须以http://开头),HTTPS站点的Referer是https://开头,导致HTTPS页面的请求被误拦截。虚拟主机的.htaccess被空间商禁用,用户上传的防盗链规则不生效,需要通过空间商控制面板的"防盗链"功能配置。
按照从易到难的顺序,依次执行以下操作。允许空Referer:规则中必须包含允许空Referer的条件(Apache中RewriteCond %{HTTP_REFERER} !^$,IIS中
从更广泛的运维视角来看,还有一些容易被忽略的诱发因素。服务器磁盘空间满或inode满,导致配置文件无法写入或日志无法记录。规则的执行顺序错误,宽泛的匹配规则放在前面拦截了后面更精确的规则。
实际操作中还需要注意以下细节。域名屏蔽适用于防止恶意域名绑定到自己的服务器IP,配置后检查正常域名访问是否正常。测试规则时先在测试环境验证,确认无误后再应用到生产环境。正则表达式中的特殊字符需要转义,如点号要写成.,否则会匹配任意字符。屏蔽规则配置后定期检查日志,确认被屏蔽的访问确实是恶意行为。伪静态规则中避免使用过于宽泛的匹配,防止误拦截正常页面。防盗链规则中设置允许空Referer,避免部分浏览器或客户端因不带Referer而无法访问资源。
除了上述问题,实际运维中还可能遇到以下相关故障。伪静态配置后页面404,多半是规则正则表达式不匹配或服务器未加载重写模块。IP屏蔽后正常用户也无法访问,可能是屏蔽范围过大,使用了过于宽泛的CIDR段。伪静态规则中中文URL乱码,需要在规则中添加NE(no escape)标志或配置编码。IP屏蔽规则在CDN环境下不生效,CDN回源IP被屏蔽导致所有用户无法访问,需要获取真实客户端IP。
遇到规则不生效不要急于重写,先看服务器日志和模块加载状态,针对性排查往往事半功倍。

更新时间:2026-09-01 13:44:37
上一篇:word文档修改时间不对怎么办_修正文档保存时间_3种方案实测