url 将一个域重写为 https

url rewrite for one domain to https

我有一个 IIS 服务器 运行 站点使用 2 个域,每个域上有多个站点。 我正在尝试编写一个只影响一个站点的 url 重写规则 域名是这个

*.it.test.com
*.test.com 

我已经尝试过这个规则,但它似乎不起作用 - 也许我需要一个通配符或 domian 中的其他东西。

我正在尝试访问 it.test.com

的子域
 <rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" ignoreCase="true" negate="false" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
      <add input="{HTTP_HOST}" ignoreCase="true" matchType="Pattern"  pattern="^it.test.com$" />
      <add input="{HTTPS}"  pattern="off" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Temporary" />
  </rule>

一些站点名称可能是这样的

bb.it.test.com
aa.it.test.com
cc.test.com

据我所知,如果选择patternSyntax="Wildcard"conditions中的{HTTP_HOST}也是使用通配符匹配

所以这就是 pattern="^it.test.com$" 匹配失败的原因。通配符是一种特殊的句子,主要包括(*)和(?)。 以(^)开头,以($)结尾是正则表达式的用法

匹配失败:

即使你改了patternSyntax="regular expressions",还是会失败,因为^bb.it.test.com 不是以 it 开头,而是以 bb.

开头


两种解决方案。

  1. 使用正则表达式并设置pattern="(.*).it.test.com$",但它只匹配bb.it.test.com aa.it.test.compattern="(.*).test.com$" 将匹配它们。

  1. 仍然使用通配符,但设置 pattern="*.test.com"