代码之家  ›  专栏  ›  技术社区  ›  Sekhar

IIS URL将https非www重写为https www

  •  0
  • Sekhar  · 技术社区  · 7 年前

    我基本上想要:

    1. 非https请求应重定向到具有https的请求

    所需重定向:

    Requested Url                   Redirected To
    http://example.com              https://www.example.com/
    http://www.example.com          https://www.example.com/
    https://example.com             https://www.example.com/
    https://www.example.com         https://www.example.com/
    

    重写配置1:

    <rules>
        <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://www.example.com/{R:0}" />
            <!--redirect to https -->
        </rule>
        <rule name="Add WWW prefix" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="^example.com$" />
            </conditions>
            <action type="Redirect" url="https://www.example.com/" />
        </rule>         
    </rules>
    

    重写配置2:(从 IIS Redirect non-www to www AND http to https

    <rules>
        <rule name="Force WWW and SSL" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAny">
                <add input="{HTTP_HOST}" pattern="^[^www]" />
                <add input="{HTTPS}" pattern="off" />
            </conditions>
            <action type="Redirect" url="https://www.example.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
    </rules>
    

    这个问题主要是关于 https://example.com -它没有正确地指挥

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sergiu Muresan    7 年前

    试试这个:

    <rules>
        <rule name="Redirect example.com to www" patternSyntax="ECMAScript" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="^example.com$" />
            </conditions>
            <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
        </rule>
        <rule name="Redirect to example.com https" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
            <match url="*" negate="false" />
            <conditions logicalGrouping="MatchAny">
                <add input="{HTTPS}" pattern="off" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
        </rule>
    </rules>