IIS HTTP重定向配置异常及HTTPS访问故障咨询
IIS重定向问题排查与解决
我来帮你搞定这两个IIS重定向的问题,大概率是配置范围、规则匹配或者绑定设置的问题,咱们一步步来解决:
问题1:HTTP访问service.svc无法重定向到HTTPS
这个情况通常是重定向规则没覆盖到根站点的请求,或者被WCF的handler拦截了,你可以按下面的步骤排查:
- 检查规则的作用范围:打开IIS管理器,先选中根站点(localhost),再看URL重写模块里的规则。如果你的重定向规则只配置在SubApp子应用里,那根目录下的service.svc自然不会触发重定向。把规则移到根站点级别,或者在根站点也添加同样的重定向规则。
- 调整规则的匹配模式:如果原规则的匹配模式是
^SubApp/(.*)这种只针对子应用的,改成通用的(.*),确保所有HTTP请求都能被捕获。规则的条件要设置为{HTTPS} off,重定向动作的URL填https://{HTTP_HOST}{REQUEST_URI},这样能完整保留原请求的路径和参数。 - 检查WCF Handler的设置:service.svc对应的WCF handler默认可能勾选了「Invoke handler only if request is mapped to」选项,这会导致URL重写规则在handler处理请求前无法触发。你可以右键svc的Handler Mapping,选择「Edit」,取消这个选项的勾选,或者调整URL重写规则的优先级,让重定向先执行。
问题2:HTTPS访问test.html显示无法访问
这个问题可能和HTTPS绑定、证书或者规则配置有关,试试这些方法:
- 验证HTTPS绑定配置:打开根站点的绑定列表,确认HTTPS绑定存在,并且选择了有效的证书(自签名证书的话浏览器会提示不安全,但应该能强制访问)。用命令
netstat -ano检查443端口是否被其他程序占用,确保IIS能正常监听该端口。 - 检查重定向规则的条件:确保你的重定向规则只对HTTP请求生效,也就是规则的条件必须包含
{HTTPS} off。如果不小心没加这个条件,HTTPS请求也会被重定向,导致循环或者错误跳转。 - 确认文件权限:右键test.html文件,打开「属性-安全」,检查IIS_IUSRS组是否有读取权限。如果根站点的物理路径权限没设置对,IIS会无法读取文件,返回访问错误。
- 查看IIS日志定位问题:如果上面的方法都没用,去
%SystemDrive%\inetpub\logs\LogFiles目录找对应的日志文件,查看访问test.html时的状态码(比如404表示文件找不到,500表示服务器内部错误),根据状态码进一步排查。
内容的提问来源于stack exchange,提问作者Oleksii Klipilin
相关产品推荐
相关产品推荐

