【问题标题】:IIS UrlRewrite problemIIS UrlRewrite 问题
【发布时间】:2011-05-06 15:40:00
【问题描述】:

我已经在我们的生产站点上使用 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>

它一直运行良好,直到今天早上,当网站开始出现“重定向过多”错误时。据我所知,配置或基础架构没有任何变化。

我禁用了该规则,网站又恢复了功能(尽管显然没有任何重定向)。

然后我重新启用了规则,现在一切都按预期运行。除了暂时禁用它之外,我没有对规则进行任何更改。

有什么想法吗?插件有问题吗?

【问题讨论】:

  • 你在哪个框架上运行?我知道 1.1 有一些特别令人不快的错误,需要重新启动 IIS...

标签: iis urlrewriter


【解决方案1】:

我建议进行设置:

http://learn.iis.net/page.aspx/467/using-failed-request-tracing-to-trace-rewrite-rules/

如果您再次开始收到“太多直接”错误,这可能会帮助您追查问题。

【讨论】:

  • 谢谢克里斯,我一定会这样做的。
【解决方案2】:

试试这个其他代码,我在我的网络上运行完美:

<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 但退出一些主 url 并且不运行。 来自 Ruslani 的样本: http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx 我尝试使用添加 www 但最终使用上面的示例。

【讨论】:

    【解决方案3】:

    下面的修复对我有用。我发现我的重写规则已经过时了。另一个域已更改其 URL 策略,现在将所有流量从 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}" />
    

    你看出区别了吗?通过添加“www”,我抢占了其他域重定向。我基本上只是遵守他们的新政策。

    【讨论】:

      猜你喜欢
      • 2013-01-14
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多