我的知识记录

IIS图片防盗链设置教程_Apache IIS设置防盗链教程详解

搜索引擎蜘蛛抓取异常时,需要通过规则精准拦截不良蜘蛛,保护服务器资源。配置了防盗链规则后,自己网站的图片也无法显示,或者微信、QQ等社交平台内分享的页面图片不显示,规则过于严格影响了正常访问。网站的图片、视频、下载文件被其他网站直接引用,消耗大量服务器带宽,导致自己的网站访问变慢且流量费用增加。

结合服务器日志和规则调试信息,原因可以归纳为以下几点。防盗链规则中没有排除搜索引擎蜘蛛的图片抓取,导致百度图片、谷歌图片搜索无法收录网站图片,影响图片搜索流量。防盗链规则中使用了严格的Referer匹配(如必须以http://开头),HTTPS站点的Referer是https://开头,导致HTTPS页面的请求被误拦截。IIS的URL Rewrite防盗链规则中使用了{HTTP_REFERER}变量,但条件判断的逻辑写反了(应该是不等于白名单则拦截,写成了等于白名单则拦截),导致白名单域名被拦截。防盗链规则匹配的文件后缀列表不完整,只写了jpg和png,没有写gif、webp、svg等格式,导致部分图片格式没有被防盗链保护。CDN缓存了防盗链返回的403响应,后续正常用户访问也收到缓存的403,需要在CDN中配置缓存规则排除防盗链响应或在CDN层面配置防盗链。

针对上述原因,可以按以下思路逐一排查解决。IIS web.config防盗链:。CDN环境:在CDN控制台配置"防盗链"功能,设置Referer白名单,CDN层面直接拦截盗链请求,不需要回源,性能更好;同时配置CDN缓存规则,不要缓存403响应。Apache .htaccess图片防盗链:RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !^https?://(www.)?example.com/ [NC] RewriteRule .(jpg|jpeg|png|gif|webp|svg|bmp)$ - [F,NC,L],!^$允许空Referer,!^https?://(www.)?example.com/允许本站域名(含http/https和www/非www)。允许空Referer:规则中必须包含允许空Referer的条件(Apache中RewriteCond %{HTTP_REFERER} !^$,IIS中),否则微信、QQ等不发送Referer的客户端无法显示图片。注意事项:防盗链不是100%有效,恶意用户可以通过伪造Referer绕过,对于高价值资源建议结合登录验证、IP限制、时间戳签名等多重防护;配置防盗链后在多种浏览器和社交平台测试,确保正常访问不受影响。虚拟主机用户:通过空间商控制面板的"防盗链"功能配置,通常只需要输入允许的域名和选择要保护的文件后缀,空间商会自动生成规则,比手动编辑.htaccess更简单可靠。Apache防盗链显示替代图片:将[F,NC,L]改为[R=301,L],目标指向替代图片URL,如RewriteRule .(jpg|png|gif)$ https://www.example.com/images/nohotlink.jpg [R=301,L],盗链网站显示提示图片而非403。

从更广泛的运维视角来看,还有一些容易被忽略的诱发因素。服务器负载过高,Web服务进程响应超时,规则匹配结果无法正常返回。正则表达式中特殊字符未转义,如点号、问号、星号等元字符被当作普通字符匹配。

实际操作中还需要注意以下细节。蜘蛛屏蔽通过User-Agent识别,部分蜘蛛会伪造UA,需要结合IP段一起判断。域名屏蔽适用于防止恶意域名绑定到自己的服务器IP,配置后检查正常域名访问是否正常。伪静态规则中避免使用过于宽泛的匹配,防止误拦截正常页面。修改规则前务必备份原配置文件,规则出错导致网站500错误时能快速回滚。正则表达式中的特殊字符需要转义,如点号要写成.,否则会匹配任意字符。规则配置完成后查看服务器错误日志,确认没有因规则语法错误导致的500异常。

除了上述问题,实际运维中还可能遇到以下相关故障。.htaccess规则不生效,确认Apache配置中AllowOverride是否设置为All。域名屏蔽后所有域名都无法访问,检查规则中的条件判断是否写反了。IP屏蔽后正常用户也无法访问,可能是屏蔽范围过大,使用了过于宽泛的CIDR段。IIS web.config规则报错500,检查XML语法是否正确以及URL Rewrite模块是否安装。蜘蛛屏蔽后正常搜索引擎也被拦截,检查User-Agent匹配规则是否过于宽泛。

遇到规则不生效不要急于重写,先看服务器日志和模块加载状态,针对性排查往往事半功倍。

IIS图片防盗链设置教程_Apache IIS设置防盗链教程详解

标签:

更新时间:2026-08-27 10:07:39

上一篇:宝塔面板MySQL无法启动排查:日志配置与权限_MySQL_MariaDB_数据库运维

下一篇:IIS伪静态规则性能优化方案_IIS常用程序伪静态规则教程详解