我怎样才能重定向所有http://www.example.com流量https://www.example.com但我不想重定向http://1.2.3.4到https://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>