【问题标题】:Exclude specific urls from http to https permanent redirect rule从 http 到 https 永久重定向规则中排除特定 url
【发布时间】:2019-02-07 14:43:38
【问题描述】:

我有以下重定向规则来强制所有 http 流量到 https。但是,我们需要为一些在 https 中显示有问题的页面提供服务,并且我们需要强制它们为 http,直到我们可以更新它们以在 https 下工作。

  <rule name="Redirect to https" stopProcessing="true">
    <match url=".*" />
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>

    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
  </rule>

所有这些页面的共同点在于“/SSLA/”是 url 的一部分。我不是我想成为的重写大师,但我可以想到几种可能的方法来解决这个问题:

a) 以某种方式更新此规则以排除带有“/SSLA/”的网址。

B) 在此规则之前添加一条规则,该规则捕获任何带有“/SSLA/”的内容,如果它要转到 https,则重定向到 http 并且(在同一规则中还是在单独的规则中?)也不对 http 请求执行任何操作但停止处理,因此它不会命中此全局 http 到 https 重定向规则。

问题是,我不擅长正则表达式或重写规则,所以我不太确定如何完成这些解决方案中的任何一个(实际上甚至都不确定是否是处理这个问题的“正确”方法)。

所以...请帮忙! :)

编辑:我应该注意我已经更新了 c# 代码以将这些页面重定向到 http,但这当然会导致上述规则的循环。但我只是指出,我需要只是为了重定向规则,不要将带有“/SSLA”的页面的http请求强制为https,因为代码会将任何此类https请求重定向到http。但是,如果让重定向规则也将带有“/SSLA/”的 https 请求强制发送到 http 是一件小事,那么我可以删除执行相同操作的 c# 代码。

【问题讨论】:

    标签: url-rewrite-module


    【解决方案1】:

    尝试使用

    <match url="((?!SSLA).)*" />
    

    确实

    <match url=".*" />
    

    【讨论】:

      【解决方案2】:

      你应该使用两个重写规则:

      1. 用于重定向 HTTPS -> 用于SSLA/* 页面的 HTTP

      2. 用于重定向 HTTP -> HTTPS 用于非 SSLA/* 页面。

      查看下面我如何过滤 SSLAnon SSLA 页面的示例

          <rule name="Redirect to http SSLA" stopProcessing="true">
             <match url="^SSLA" />
             <conditions>
                 <add input="{HTTPS}" pattern="on" ignoreCase="true" />
             </conditions>
             <action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
          </rule>
      
          <rule name="Redirect to https" stopProcessing="true">
             <match url="^SSLA" nagate="true" />
             <conditions>
                 <add input="{HTTPS}" pattern="off" ignoreCase="true" />
             </conditions>
             <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
          </rule>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-06
        • 2016-09-06
        • 1970-01-01
        • 1970-01-01
        • 2021-10-09
        • 1970-01-01
        相关资源
        最近更新 更多