如何让192.168.8.*段IP绕过web.config的HTTPS重定向规则?
解决IIS中内部IP段绕过HTTPS强制重定向的问题
首先,你的核心需求是*外部请求强制HTTPS,内部192.168.8.网段保持HTTP访问,之前的规则没有排除内部IP,导致所有HTTP请求都被重定向;而错误的IP正则写法又引发了重定向循环。下面是修正后的完整规则及解释:
修正后的web.config重定向规则
<rule name="Redirect to HTTPS (Except Internal IP)" patternSyntax="ECMAScript" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <!-- 条件1:当前请求未使用HTTPS --> <add input="{HTTPS}" pattern="OFF" /> <!-- 条件2:请求来源IP不在192.168.8.0-192.168.8.255网段 --> <add input="{REMOTE_ADDR}" pattern="^192\.168\.8\.\d{1,3}$" negate="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" /> </rule>
关键细节说明
- 切换到ECMAScript正则模式:你之前用的Wildcard模式不支持精准的IP段正则匹配,这是添加IP规则后出错的核心原因之一,改用ECMAScript才能实现正确的IP范围判断。
- MatchAll逻辑分组:只有当「HTTPS未开启」和「非内部IP」两个条件同时满足时,才执行HTTPS重定向,完美契合你的需求。
- negate="true"反向匹配:表示当请求IP不匹配192.168.8.*网段时,该条件才成立,确保内部IP的HTTP请求不会触发重定向。
- 添加301永久重定向:不仅对SEO更友好,还能避免浏览器缓存旧的重定向规则,减少后续可能出现的异常。
为什么之前会出现「Too many redirects」?
你尝试添加IP规则时大概率踩了这些坑:
- 用Wildcard模式写IP规则:Wildcard的
*只能模糊匹配任意字符,无法精准识别IP段,导致条件判断逻辑混乱。 - 错误使用MatchAny逻辑:如果同时匹配「HTTPS为OFF」和「是内部IP」就执行重定向,会导致内部IP的HTTP请求被错误跳转,进而引发循环。
- 正则写法不规范:比如IP中的
.没有转义(.在正则里代表任意字符),或者IP段范围匹配错误,导致IP判断完全失效。
验证方法
- 用192.168.8.*网段内的设备访问网站,确认仍保持HTTP协议,无重定向。
- 用外部网络(或非该网段的IP)访问,确认HTTP请求会自动跳转到HTTPS。
- 如果仍有问题,可以打开IIS「URL Rewrite」模块的规则测试功能,模拟输入
{HTTPS}和{REMOTE_ADDR}的值,验证规则是否按预期触发。
内容的提问来源于stack exchange,提问作者ZGC1
相关产品推荐
相关产品推荐

