Iis <;服务器变量>&书信电报;集合名称=“,”&引用/&燃气轮机;断开web.config

Iis <;服务器变量>&书信电报;集合名称=“,”&引用/&燃气轮机;断开web.config,iis,ssl,seo,web-config,url-redirection,Iis,Ssl,Seo,Web Config,Url Redirection,有一个TL;博士在问题的底部 这是 问题的背景(简单地说)是IIS重写会在重定向操作中删除协议。因此,有一个带有的规则,它描述了在重定向时保持协议的各种方法。最适合我的方法如下: …这种情况有两个原因: 维护协议需要多个规则。每种方法都要编写两个(一个只用于http,另一个用于https)是不可行的 此文件必须在直接SSL连接(其中{HTTP}=on)上工作,并与Cloudflare的灵活SSL兼容(其中{HTTP}=off,但{HTTP_X-Forwarded-Proto}是“HTTP”或

有一个TL;博士在问题的底部

这是

问题的背景(简单地说)是IIS重写会在重定向操作中删除协议。因此,有一个带有
的规则,它描述了在重定向时保持协议的各种方法。最适合我的方法如下:


…这种情况有两个原因:

  • 维护协议需要多个规则。每种方法都要编写两个(一个只用于http,另一个用于https)是不可行的

  • 此文件必须在直接SSL连接(其中{HTTP}=on)上工作,并与Cloudflare的灵活SSL兼容(其中{HTTP}=off,但{HTTP_X-Forwarded-Proto}是“HTTP”或“https”)

  • 所以

    这个想法是设置一个变量,我可以对重写映射使用它。该变量的值取决于
    HTTPS=on
    HTTP\u X-Forwarded-Proto=HTTPS

    这是我的原始代码,它删除了协议:

    
    
    这是我修改过的代码,它使用所需的协议重定向,无论是直接SSL连接还是通过CloudFlare灵活的SSL连接:

    
    
    除了

    A) 我得到一个空白页面,url重写失败,没有错误信息

    B) 但是,如果我删除此标记的两个实例,它就会起作用:

    TL;DR为什么这不起作用

    
    
    找到了答案

    我必须手动将“HTTP_协议”添加到URL重写配置中允许的服务器变量列表中。这似乎只能通过IIS UI完成,而不能通过web.config文件完成