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.com
或 https://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.net
URLs,那么条件可能是这样的:
<add input="{HTTP_HOST}" pattern="mywebsite\.net$" />
希望对您有所帮助。
我想确保所有 .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.com
或 https://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.net
URLs,那么条件可能是这样的:
<add input="{HTTP_HOST}" pattern="mywebsite\.net$" />
希望对您有所帮助。