IIS url 使用域更改和 https 重写规则

IIS url rewrite Rules With domain change and https

我使用以下代码将 http 重定向到 https,但不知道如何使用多个规则同时更新域和 https。

感谢您的帮助

<!--Examples-->
    Example 1:
    
    input          : http://prodServer/MyApplication        
    Expected Output: https://prodServer.mycompany.com/MyApplication
    
    Example 2:

    input            : https://prodServer/MyApplication        
    Expected Output: https://prodServer.mycompany.com/MyApplication
    
    Example 3   
        
    input            : http://prodServer.mycompany.com/MyApplication        
    Expected Output  : https://prodServer.mycompany.com/MyApplication

代码

 <system.webServer>
            <rewrite>
              <rules>
                <rule name="httpsRedirect" stopProcessing="true">
                  <match url="(.*)" />
                  <conditions>
                    <add input="{HTTPS}" pattern="^OFF$" />
                  </conditions>
                  <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
                </rule>
              </rules>
            </rewrite>
 </system.webServer>

我们只是为需求写了两个 URL 规则。一种用于将 HTTP 请求强制转换为 https 请求,另一种用于将主机名转换为实际的服务器名称。

<rewrite>
            <rules>
    <rule name="Force Https" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{https}" pattern="off" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
                </rule>
                <rule name="Myrule2" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="prodServer" />
                    </conditions>
                    <action type="Redirect" url="https://prodServer.mycompany.com/MyApplication" />
                </rule>
            </rules>
        </rewrite>

注意:StopProcessing标志对重定向操作没有影响,因此当收到 Http 请求时,这两个规则将在服务器端正确执行。
如果问题仍然存在,请随时告诉我。

它对我有用

<conditions>
    <add input="{HTTPS}" pattern="^OFF$" />
    <add input="{HTTP_HOST}" pattern="^prodServer$" />
 </conditions>

而不是

<conditions>
     <add input="{HTTPS}" pattern="^OFF$" />
     <add input="{HTTP_HOST}" pattern="prodServer" />
 </conditions>