【问题标题】:url rewrite for one domain to https将一个域的 url 重写为 https
【发布时间】:2021-10-23 23:48:36
【问题描述】:

我有一个 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

【问题讨论】:

标签: url-rewriting iis-10 url-rewrite-module


【解决方案1】:

据我所知,如果你选择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"

【讨论】:

  • 这很好用——我选择了选项 2 并使用了通配符。感谢您的帮助-感谢您提供了很好的答案。
猜你喜欢
  • 1970-01-01
  • 2020-10-17
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 2014-09-20
  • 2011-06-02
相关资源
最近更新 更多