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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IIS URL重写域更改301仅将某些页面和所有其他页面单独重定向到另一个URL相关的知识,希望对你有一定的参考价值。

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

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

  • 我目前仍然坚持如何,1)将www.xyz.com/主页重定向到第三方网址? 2)同时保留www.xyz.com/internal页面的1-1映射与www.abc.com/internal pages

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

提前致谢!

答案

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

它会看起来像这样

    <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:在第二条规则中,请检查/ - 我自己没有测试过该规则可能会在目标网址中引入额外的斜线或删除斜杠,无论它是什么,您都可以修复它。这里的要点是你需要两个单独的规则,一个用于检查确切的域后面没有任何内容并重定向到第三方和另一个子页面重定向规则

以上是关于IIS URL重写域更改301仅将某些页面和所有其他页面单独重定向到另一个URL的主要内容,如果未能解决你的问题,请参考以下文章

IIS7 301 URL 重写给出 200 状态而不是 301 状态

iis里URL重写重定向,http做301重定向https

IIS7 301 从 URL 列表重定向

iis url重写模块 是干啥用的

IIS URL 将模块 url 重写为小写

htaccess 重定向 301 + 重写冲突