将 http 重定向到 https,不包括通过 ip 地址查询服务器

将 http 重定向到 https,不包括通过 ip 地址查询服务器

我怎样才能重定向所有http://www.example.com流量https://www.example.com但我不想重定向http://1.2.3.4https://www.example.com(假设 1.2.3.4 是 www.example.com 的 IP 地址)。不幸的是,以下规则将同时重定向

<rewrite>
    <rules>
        <rule name="HTTP to HTTPS Redirect" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAny">
                <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

先感谢您。

答案1

您要修改的部分是<match url="(.*)" />,因为它将决定将哪个匹配的 URL(在本例中,几乎是任何内容)重定向到 HTTPS。

格式是正则表达式. 您可以测试不同的正则表达式这里(以及其他地方,但这是我最喜欢的)。因此,在这种情况下,您希望它仅重定向域名而不是 IP 地址。

由于您不需要一个包罗万象的重定向表达式,而只需要一个处理特定域名的表达式http://www.example.com -> https://www.example.com,因此您可能可以使用www\.example\.com正则表达式选择器。

尝试一下这个:

<rewrite>
    <rules>
        <rule name="HTTP to HTTPS Redirect" enabled="true" stopProcessing="true">
            <match url="(www\.example\.com)" />
            <conditions logicalGrouping="MatchAny">
                <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

相关内容