IIS URL重写域更改301仅将某些页面和所有其他页面单独重定向到另一个URL

时间:2018-02-15 17:40:40

标签: asp.net asp.net-mvc iis-7 url-redirection

我是IIS网址重写规则Regex的新手,并在此处寻求帮助。

这是一个内置于ASP.NET MVC的sitecore网站。我有一个域名,即www.xyz.com与另一个域名合并,即www.abc.com。我有两个www.xyz.com/test的映射 - > www.abc.com/test1。 ALl www.xyz.com/xx的内部页面将与www.abc.com/foo一起映射,但www.xyz.com的主页除外

  • 我目前陷入困境,我怎么能 1)将www.xyz.com/主页重定向到第三方URL? 2)同时保留www.xyz.com/internal pages的1-1映射与www.abc.com/internal pages

我正在使用IIS网址重写规则将www.xyz.com的域重定向到www.abc.com,并寻找有关第三方网页主页重定向的其他帮助

提前致谢!

1 个答案:

答案 0 :(得分:0)

您只需要两个不同的重定向规则,第一个规则将检查根域并重定向到第三方网址,第二个规则将检查内部网页并重定向到新域的内部网页

它看起来像这样

    <rule name="redirect root to third party" stopProcessing="true">
         <match url="^$" ignoreCase="true" />
         <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="(www.)?xyz\.com$" />
         </conditions>
         <action type="Redirect" redirectType="Permanent" url="<third party url here>" />
    </rule>
    <rule name="redirect to new domain" stopProcessing="true">
         <match url="/(.*)" />
         <conditions>
               <add input="{HTTP_HOST}" pattern="^(www.)?xyz\.com$" />
         </conditions>
         <action type="Redirect" url="http://<new domain>/{R:1}" redirectType="Permanent" />
    </rule>
P.S:在第二条规则中,请检查/ - 我自己没有测试过该规则可能会在目标网址中引入额外的斜线或删除斜线,无论它是什么,您都可以修复它。这里的要点是你需要两个单独的规则,一个用于检查确切的域后面没有任何内容并重定向到第三方和另一个子页面重定向规则