将子域URL重定向到IIS中的另一个子域

Sli*_*nky 8 http-redirect iis-7.5 url-redirection

我需要将"假"子域重定向到IIS 7.5中的真实子域.原因是营销部门不想在打印件中使用实际的网站地址.

实际网站网址:

reporting.usapartners.com

营销部门想要 report.usapartners.com(假)重定向到 reporting.usapartners.com(真实)

同样,report.usapartners.com不存在,只存在reporting.usapartners.com

这是我试过的

我在IIS中添加了一个绑定,用于站点reporting.usapartners.com.我添加了report.usapartners.com作为主机名,并使用了reporting.usapartners.com IP地址

然后我进入reporting.usapartners.com web.config并添加了这个:

<rewrite>
    <rules>
        <rule name="report" stopProcessing="true">
          <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="report.usapartners.com" negate="false" />
          </conditions>
          <action type="Redirect" url="http://reporting.usapartners.com" appendQueryString="false" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)

看起来我的解决方案创建了一个无法重定向到的别名.

我是否正确地解决了这个问题?似乎它应该是一个简单的问题要解决,但也许不是?任何想法都受到欢迎和赞赏.

谢谢

Tom*_*ler 7

我认为您需要report.usapartners.com在IIS中为(虚假站点)创建一个具有主机绑定的单独站点.这将是一个存根站点(它仍然需要磁盘上的路径,但它只会有一个web.config在那里),它将只托管一个重定向规则.

现在单击HTTP RedirectIIS中的该站点并勾选Redirect requests to this destination并放入http://reporting.usapartners.com文本框.然后勾选Redirect all requests to exact destination (instead of relative to destination),不要勾选下一个,然后选择状态代码Permanent (301).

如果您希望它重定向并保留子目录和/或查询字符串,则可以更改文本框的内容http://reporting.usapartners.com$S$Q.请注意,在这种情况下没有尾部斜杠.该$S保留的子目录和$Q蜜饯的查询字符串.


Ric*_*uza 5

您的规则导致重定向循环。

观察你的规则做了什么:

  • 匹配任何给定的 URL(包括“/”、“/something”、“/something/another.html”等)
  • 如果主机名不是“report.usapartners.com”
  • 将请求永久重定向到“ http://reporting.usapartners.com

因此,如您所见,一旦用户被重定向到报告子域,它就会再次被重定向到报告,因为主机名不是“report.usapartners.com”。

这里的关键是negate="true"规则条件上的属性。删除它或将其设置为 false 就可以了。

编辑:

你快到了。

真正的解决方案是将规则上的主机名更改为所需的主机,保持否定为真,因此您的规则将执行以下操作:

  • 匹配任何给定的 URL(包括“/”、“/something”、“/something/another.html”等)
  • 如果主机名不是“reporting.usapartners.com”
  • 将请求永久重定向到“ http://reporting.usapartners.com

代码:

...
<add input="{HTTP_HOST}" pattern="reporting.usapartners.com" negate="true" />
...
Run Code Online (Sandbox Code Playgroud)