首页 > 解决方案 > 同一站点托管在 IIS 的多个端口上

问题描述

我有一个网站在特定 DNS ( https://mypage.com:443/login )的 443 端口上运行。现在,我想将它重定向到一个新站点(mynewsite.com:443)。我已经在 IIS 中的站点中使用了重定向选项,其中我将重定向 URL 指定为https://mynewsite.com:443所有到达https://mypage.com:443/login的请求都成功重定向到https://mynewsite.com:443

现在,我有另一个 DNS (https://mysecondDNS:443)。我希望访问此 https://mysecondDNS:443 的用户应仅重定向到https://mypage.com:443/login

但是直接访问https://mypage.com:443/login的用户应该进入https://mynewsite.com:443

这可以在IIS中实现吗?

到目前为止,我尝试过的是,我有另一个端口为 8080/8081 的站点并尝试进行重定向,但这似乎不起作用。

有人可以帮助我或指导我如何实现这一目标。

谢谢

标签: windowsiisiis-7.5

解决方案


我想出了另一种解决你的问题的方法,经过测试是可行的。您可以在重写过程中添加自定义标题。

在我的测试中,我创建了三个站点对应你的三个域名,mynewsite.com myscondDNS.com and mypage.com. 他们都有自己的页面。

当用户访问时mysecondDNS.com,他们将被重定向到mypage.com. 根据您的描述,mypage.com应该显示的页面。只有当用户直接访问时,mypage.com才会将请求重定向到mynewsite.com.

为了方便 URL 重写模块识别请求,在mysecondDNS.com重定向到时mypage.com,我添加了一个自定义头HTTP_REQ_from(头必须以HTTP_开头)并为其分配值mysecondDNS。当mypage.com被重定向到mynewsite.com时,会判断header。如果标头值匹配,则不会重定向请求,如果不匹配,则将重定向到 mynewsite.com。

这是添加自定义标题的规则

<rule name="rule">
                <match url=".*" />
                <action type="Rewrite" url="http://mypage.com" />
                <serverVariables>
                    <set name="HTTP_REQ_from" value="mysecondDNS" />
                </serverVariables>
 </rule>

这是判断自定义标题的规则

<rule name="rule">
                <match url=".*" />
                <conditions>
                    <add input="{HTTP_REQ_from}" pattern="mysecondDNS" negate="true" />
                </conditions>
                <action type="Rewrite" url="http://mynewsite.com" />
            </rule>

登录失败的请求跟踪,mysecondDNS 到 mypage,不会重定向到 mynewsite 在此处输入图像描述

在此处输入图像描述

mypage 重定向到 mynewsite(用户发送的请求,标头中没有 HTTP_REQ_from) 在此处输入图像描述


推荐阅读