这在某种程度上可行,http://newdomain.com/link
将重定向到https://www.newdomain.com/link
。但是,http://olddomain.com/link
重定向到https://www.newdomain.com
(丢失路径)。
<rule name="Enforce HTTPS and www.newdomain.com" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="off" />
<add input="{HTTP_HOST}" pattern="olddomain\.com$" />
<add input="{HTTP_HOST}" pattern="^newdomain\.com$" />
</conditions>
<action type="Redirect" url="https://www.newdomain.com/{R:1}" redirectType="Permanent" />
</rule>
我相信代码是正确的,但是在进行域到域重定向时它不起作用。 IIS中的其他操作首先进行了重定向,因此不遵守该规则(可能甚至从未使用过)。
这可能不是IIS重定向问题的主要内容,而是一个有关此规则之前可能导致该预重定向的问题。我没有其他与网域有任何关系的规则。
对此有何见识?
答案 0 :(得分:1)
感谢@Dusan Bajic,我知道了。
我完全删除了重定向。当我这样做时,某些重定向已停止工作。但是,仍然发生了从旧域到新域的重定向(并且以相同的方式删除了路径)。这使我能够将问题隔离在IIS重定向之外。
请找出来,问题出在我们的负载均衡器上。对于旧域,它正在进行自己的重定向,因此旧域从未到达IIS。一旦删除了负载均衡器重定向,它便进入了IIS,并且上面的重定向完美无误。
因此,解决方案是删除重定向并查看重定向是否仍然发生。如果是这样,请查看进行重定向的“上游”内容。我不知道我们的负载均衡器是否进行了重定向,但是我现在知道了!
感谢杜尚·巴吉奇的协助