问题分析
小程序User-Agent可能不包含MicroMessenger - 小程序可能使用独立的User-Agent
小程序可能不带Referer或Referer格式特殊
微信开发者工具和真机环境可能不同
解决方案
方案一:专门适配小程序的规
<rewrite>
<rules>
<rule name="AllowMiniProgram" stopProcessing="true">
<match url="^.*\.(jpg|jpeg|png|gif|ico|bmp|zip|rar|7z|ttf|otf|svg|woff|woff2|eot|mp3|mp4|wav|css|js)$" />
<conditions logicalGrouping="MatchAny">
<!-- 微信小程序User-Agent特征 -->
<add input="{HTTP_USER_AGENT}" pattern="miniProgram" />
<!-- 微信开发者工具 -->
<add input="{HTTP_USER_AGENT}" pattern="wechatdevtools" />
<!-- 某些小程序User-Agent格式 -->
<add input="{HTTP_USER_AGENT}" pattern="NetType/.*Language/.* MicroMessenger" />
<!-- 请求头中包含小程序标识 -->
<add input="{HTTP_X_WECHAT_SOURCE}" pattern=".*" />
<add input="{HTTP_X_WECHAT_VERSION}" pattern=".*" />
</conditions>
<action type="None" />
</rule>
<rule name="ResourceProtection" enabled="true" stopProcessing="true">
<match url="^.*\.(jpg|jpeg|png|gif|ico|bmp|zip|rar|7z|ttf|otf|svg|woff|woff2|eot|mp3|mp4|wav|css|js)$" />
<conditions logicalGrouping="MatchAll">
<!-- 不是来自白名单域名 -->
<add input="{HTTP_REFERER}" pattern="^https?://([^/]*\.)?(ziti163\.(com|cn))/.*$" negate="true" />
<!-- 不是微信访问 -->
<add input="{HTTP_USER_AGENT}" pattern="MicroMessenger" negate="true" />
<!-- 不是小程序访问 -->
<add input="{HTTP_USER_AGENT}" pattern="miniProgram" negate="true" />
<!-- 不是微信开发者工具 -->
<add input="{HTTP_USER_AGENT}" pattern="wechatdevtools" negate="true" />
</conditions>
<action type="Redirect" url="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" />
</rule>
</rules>
</rewrite>