如何使用 IIS 7 进行 HTTP 重定向并维护子域

如何使用 IIS 7 进行 HTTP 重定向并维护子域

我的问题类似于 将子域名重定向到新域名上的子域名除了我正在使用 IIS 7。该应用程序是 ASP.NET 框架 2.0。

我有一个 URL cust1.olddomain.com 并且我需要重定向到 cust1.newdomain.com。

我需要维护子域名,但我需要更改域名,以便用户永远不会看到olddomain.com,并且我有X个自定义子域名。

我能够使用 DNS 将所有内容路由到需要去的地方,但我不知道如何更改域,以便从不显示 olddomain.com。我希望将其设为 301 重定向,但从我目前所读的内容来看,我认为这是不可能的。

有什么想法吗?

答案1

是的,我回答了我自己的问题!

对于 IIS 7,您可以安装URL 重写模块从 MS Web 平台安装程序中下载或单独下载。安装后,这实际上赋予了您在 IIS 中使用 mod_rewrite 的强大功能。

为了解决我的重定向问题,我创建了一个新的重定向条目,如下所示。URL Rewrite 模块提供了一个用于创建重定向的用户界面,然后将条目写入站点的 web.config,就像许多其他 IIS 模块一样。

<rewrite>           
        <rules>
            <rule name="RedirectToNewDomain" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                <match url="*" />
                <conditions logicalGrouping="MatchAny">
                    <add input="{HTTP_HOST}" pattern="*.olddomain.com*" />
                </conditions>
                <action type="Redirect" url="http://{C:1}.newdomain.com{C:2}{PATH_INFO}" appendQueryString="false" />
            </rule>
        </rules>
    </rewrite>

我使用此重定向所做的是允许所有 URL 进入规则,并使用通配符匹配 url="*"。然后,我对旧域进行条件模式匹配。条件模式匹配中的星号允许我对与模式匹配的任何内容进行反向引用,然后我在重定向操作中将其插入为 {C:1} & {C:2}。正是 {C:1} 反向引用允许我在重定向期间维护我的子域,这就是问题的答案。

相关内容