web.config 中的 Azure 网站重写规则以将 .net 重定向到 .com

azure website rewrite rule in web.config to redirect .net to .com

我想确保所有 .net 流量都流向我的 .com,所以我创建了这条规则,但我确定我做错了,因为它不起作用:

 <rule name=".net to .com" enabled="true" stopProcessing="true">
        <match url=".*mywebsite.net.*"/>
        <action type="Redirect" url="https://mywebsite.com/" appendQueryString="false" redirectType="Permanent"  />
      </rule>

我以为我已经正确编写了这个正则表达式,但正则表达式不是我的强项

您的正则表达式存在问题,但这通常不是规范域名规则(在本例中您想要的)的设置方式。通常,您希望匹配进入您的服务器的 每个 URL,然后过滤 CGI 环境变量的值(在本例中为 HTTP_HOST)。您的重写规则看起来像这样:

<rule name="CanonicalHostNameRule1" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^mywebsite\.com$" negate="true" />
    </conditions>
    <action type="Redirect" url="https://mywebsite.com/{R:1}" appendQueryString="false" redirectType="Permanent" />
</rule>

这样做的目的是将来自 URL 的所有请求转发给 http://mywebsite.comhttps://mywebsite.com 以外的所有请求到 https://mywebsite.com。实际的 URL 在匹配中被捕获并放入参数 {R:1} - 这样,如果你去说 http://www.mywebsite.net/home.php,它将被重定向到 https://mywebsite.com/home.php.

此外,如果您想强制执行 HTTPS,您可以执行以下操作:

<rule name="CanonicalHostNameRule1" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAny">
        <add input="{HTTPS}" pattern="^on$" negate="true" />
        <add input="{HTTP_HOST}" pattern="^mywebsite\.com$" negate="true" />
    </conditions>
    <action type="Redirect" url="https://mywebsite.com/{R:1}" appendQueryString="false" redirectType="Permanent" />
</rule>

第一个条件将检查 cgi.HTTPS 是否为 "on" ... 如果不是,则重定向到 HTTPS URL.

注意:如果你只想重定向mywebsite.netURLs,那么条件可能是这样的:

<add input="{HTTP_HOST}" pattern="mywebsite\.net$" />

希望对您有所帮助。