我在生产网站上使用UrlRewrite IIS插件大约一个月。
我使用提供的模板/向导创建了一个重定向规则,生成的配置enrty如下:
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1" enabled="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.mycompany\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.mycompany.com/{R:1}" />
</rule>
</rules>
</rewrite>
直到今天早上一直运行良好,当网站开始出现“太多重定向”错误时。据我所知,配置或基础设施中的任何内容都没有改变。
我禁用了规则,网站又恢复了功能(虽然没有任何重定向)。
然后我重新启用了规则,现在所有规则都按预期运行。除了暂时禁用规则之外,我没有对规则进行任何更改。
有什么想法吗?插件有问题吗?
答案 0 :(得分:1)
我建议你进行设置:
http://learn.iis.net/page.aspx/467/using-failed-request-tracing-to-trace-rewrite-rules/
如果您再次开始收到“太多指示”错误,这可能会帮助您找到问题。
答案 1 :(得分:0)
试试这个其他代码,我在网上运行完美:
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^yourdomain\.com$" />
</conditions>
<action type="Redirect" url="http://www.yourdomain.com/{R:0}" redirectType="Permanent" />
</rule>
解释很简单: 匹配收到的任何URL进行处理 条件是anydomaintext.extension(您的域和扩展名)没有前缀 使用完整前缀重定向到同一个域并放入所有URL。
其他尝试是R:1,但退出一些主要网址而不是运行。 来自Ruslani的样本: http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx 我尝试使用添加www,但最后使用上面的示例。
答案 2 :(得分:0)
下面的修复对我有用。我发现我的重写规则已经过时了。另一个域名已更改其网址政策,现在将所有流量从otherdomain.com重定向到www.otherdomain.com
<action type="Rewrite" url="http://otherdomain.com/abc/{R:1}" />
到
<action type="Rewrite" url="http://www.otherdomain.com/abc/{R:1}" />
你看到了区别吗?通过添加&#39; www&#39;我抢占了其他域重定向。我基本上只是遵守了他们的新政策。