Redirect 语言和新域的IIS重写规则

Redirect 语言和新域的IIS重写规则,redirect,iis,url-rewriting,Redirect,Iis,Url Rewriting,我需要为以下场景创建一些规则(我认为2就足够了): A.第一种情况 到 基本上,我需要将域从mydomainOLD更改为mydomainNEW,并在出现时从URL中删除“/en/” 我创建的规则如下所示: <rule name="Replace OLD with NEW and remove /en/" enabled="true" stopProcessing="true"> <match url="

我需要为以下场景创建一些规则(我认为2就足够了):

A.第一种情况

基本上,我需要将域从mydomainOLD更改为mydomainNEW,并在出现时从URL中删除“/en/”

我创建的规则如下所示:

<rule name="Replace OLD with NEW and remove /en/" enabled="true" stopProcessing="true">
    <match url="^(http|https)://?(www.)mydomainOLD.com/en?(.*)" />
    <conditions logicalGrouping="MatchAny" trackAllCaptures="false" />
    <action type="Redirect" url="https://www.mydomainNEW.com/{R:3}" />
</rule>

在这种情况下,我可以使用其他国家(fr、de、hk等)而不是“es”

我创建的规则如下(针对每个国家):



这些规则中没有一条不是我想要的,即使当我测试正则表达式时,它们也能按预期工作。我想在条件输入上我还缺少一些东西。一点帮助是非常受欢迎的。谢谢。

请为/en尝试此规则/

 <rule name="rewrite rule" stopProcessing="true">
                <match url="(.*)" />
                <conditions trackAllCaptures="true">
                    <add input="{URL}" pattern="^/en/(.*)" />
                    <add input="{HTTP_HOST}" pattern="(www.)?mydomainOLD.com" />
                </conditions>
                <action type="Redirect" url="https://www.mydomainNEW.com/{C:1}" redirectType="Temporary" />
            </rule>

对于像old/en/到new/en/或old/fr到old/fr这样的东西,请应用这个

   <rule name="rewrite rule" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions trackAllCaptures="true">
                        <add input="{URL}" pattern="^/([a-z]{2}/.*)" />
                        <add input="{HTTP_HOST}" pattern="es.mydomainOLD.com" />
                    </conditions>
                    <action type="Redirect" url="https://es.mydomainNEW.com/{C:1}" redirectType="Temporary" />
                </rule>

更新: 如果您需要重定向(es/fr/de/hk).mydomainold.com至(es/fr/de/hk).mydomainnew.com。请试试这个

      <rule name="rewrite rule" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions trackAllCaptures="true">
                <add input="{HTTP_HOST}" pattern="([a-zA-Z]{2})\.mydomainOLD.com" />
            </conditions>
            <action type="Redirect" url="https://{C:1}.mydomainNEW.com/{R:0}" redirectType="Temporary" />
        </rule>

对于场景1:


对于场景2: 每个国家有一条规则(本例中为Fr):



避免常见错误,然后学习如何通过FRT进行故障排除,谢谢,第一条规则很有帮助。第二个还没有尝试。@iusmar我只是更新了规则。请检查它是否达到您的要求我应该为querystring添加什么规则,因为像这样的链接:会被重定向到,因为您的规则appendQueryString=“false”。如果您想重定向到mydomainNEW.com/en/news?page=32&category=&view=current,应该是appendQueryString=“true”谢谢。这帮了大忙。
      <rule name="rewrite rule" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions trackAllCaptures="true">
                <add input="{HTTP_HOST}" pattern="([a-zA-Z]{2})\.mydomainOLD.com" />
            </conditions>
            <action type="Redirect" url="https://{C:1}.mydomainNEW.com/{R:0}" redirectType="Temporary" />
        </rule>
<rule name="General redirect - all urls - from OLD to NEW" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTP_HOST}" pattern="^mydomainOLD\.com(.*)$" />
                        <add input="{URL}" pattern="^/en/(.*)" />
                    </conditions>
                    <action type="Redirect" url="http://mydomainNEW.com/{C:1}" appendQueryString="false" redirectType="Permanent" />
                </rule>
<rule name="France redirect - all urls - from OLD to NEW" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTP_HOST}" pattern="^fr.mydomainOLD\.com(.*)$" />
                        <add input="{URL}" pattern="^/(.*)" />
                    </conditions>
                    <action type="Redirect" url="http://fr.mydomainOLD.com/{C:1}" appendQueryString="false" redirectType="Permanent" />
                </rule>