URL重写回参考操作URL不起作用

时间:2018-10-24 08:49:48

标签: iis url-rewriting url-rewrite-module

我已经设置了url重写规则,以在符合条件的情况下从一个域重定向到另一个域。我有一个站点abc.aaa.com,如果url与* .aaa.com匹配,该站点应该重定向到abc.bbb.com。当我对操作URL进行硬编码时,它可以正常工作,但使用向后引用则不起作用。
我正在使用IIS 8.5

以下是规则。 这是行不通的。执行此操作时,URL显示http://abc.aaa.com/abc.bbb.com

<rule name="Redirect aaa.com" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
       <add input="{HTTP_HOST}" pattern="(.*).aaa.com(.*)$" />
    </conditions>
    <action type="Redirect" url="{C:1}.bbb.com{C:2}" appendQueryString="false" />
</rule> 

这正在工作

<rule name="Redirect aaa.com" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
       <add input="{HTTP_HOST}" pattern="(.*).aaa.com(.*)$" />
    </conditions>
    <action type="Redirect" url="http://abc.bbb.com" appendQueryString="false" />
</rule>

我尝试了规则模式中的相同模式以及无条件的相同操作。那也没用

<rule name="Redirect aaa.com" enabled="true" stopProcessing="true">
    <match url="(.*).aaa.com(.*)$" />
    <action type="Redirect" url="http://abc.bbb.com" appendQueryString="false" />
</rule>

1 个答案:

答案 0 :(得分:0)

我发现{C:1}不包含http://部分,并在URL action中将其分开。运行正常。下面是修改后的规则 感谢Lex Li的快速回复

<rule name="Redirect aaa.com" enabled="true" stopProcessing="false">
    <match url="(.*)" />
    <conditions>
                        <add input="{HTTP_HOST}" pattern="(.*).aaa.com(.*)$" />
    </conditions>
    <action type="Redirect" url="http://{C:1}.bbb.com{PATH_INFO}" appendQueryString="true" />
</rule>