我已经设置了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>
答案 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>