我有一个非常简单的URL重写重定向规则,导致无限循环。当它失败时,"不能显示页面"显示错误。任何错误捕获提示或脚本修改将不胜感激。
<rewrite>
<rules>
<rule name="Test redirect" enabled="false" stopProcessing="true">
<match url=".*" />
<action type="Redirect" url="/pub/" appendQueryString="false" logRewrittenUrl="true" redirectType="Permanent" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^mydomain.*(com|net)$" />
</conditions>
</rule>
</rules>
</rewrite>
这不是浏览器缓存问题。
答案 0 :(得分:1)
问题证明与SSL有关。 HTTPS重定向需要{HTTPS}条件,如下所示。如果没有这种情况,当您尝试重定向到https:\ URL时,规则将循环。您还必须在操作中包含整个https:\ URL,如图所示。
<rule name="Test redirect" enabled="true" stopProcessing="true">
<match url=".*" />
<action type="Redirect" url="https://yourdomain.com/pub/" appendQueryString="false" logRewrittenUrl="true" redirectType="Temporary" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^yourdomain.*(com|net)$" />
<add input="{HTTPS}" pattern="off" />
</conditions>
</rule>
答案 1 :(得分:0)
您的网址重定向规则似乎被多次点击,因为它通过<match url=".*" />
指令在所有网址上匹配。 This post says that stopProcessing='true'
指令并不一定适用于重定向规则。
Taking a look at a similar question,您可能需要先添加block
规则,以防止任何包含片段mydomain.com/pub
的网址触发任何重写规则并进入无限循环场景:
<rule name="block" stopProcessing="true">
<match url="^mydomain.*(com|net)/pub.*" />
<action type="None" />
</rule>
答案 2 :(得分:0)
您可以查看代码吗,所有路径都应为绝对路径,例如...脚本
js / jquery.js是错误的路径。正确的路径是/js/jquery.js